kubeadm 用于初始化 Cluster。
kubectl 是 Kubernetes 命令行工具。通过 kubectl 可以部署和管理应用,查看各种资源,创建、删除和更新各种组件。
kubelet 运行在 Cluster 所有节点上,负责启动 Pod 和容器。
Kubernetes Cluster 由 Master 和 Node 组成,节点上运行着若干 Kubernetes 服务。
通过 kubectl 对 Kubernetes 下命令的,
它通过 APIServer 去调用各个进程来完成对 Node 的部署和控制
。
一、master节点
Master是Kubernetes Cluster的大脑,运行着kube-apiserver、kube-controller-manager、kube-scheduler、etcd、Pod网络、kubelet、kube-proxy、kube-dns等Daemon服务。
1.1、API Server(kube-apiserver进程)
API Server提供HTTP/HTTPS Restful API,即kubernetes api。
它是kubernetes cluster的前端接口,各种客户端工具(CLI、UI)以及kubernetes其他组件可以通过它管理Cluster的各种资源,是集群内模块之间数据交换的枢纽。
可以通过 Master 的 8080 端口访问 kube-apiserver 进程,它提供 REST 服务,因此可以通过命令行工具 kubectl 来与 Kubernetes APIServer 交互,它们之间的接口是 RESTful API。
APIServer 的架构从上到下分为四层:
-
API 层:主要以 REST 方式提供各种 API 接口,针对 Kubernetes 资源对象的 CRUD 和 Watch 等主要 API,还有健康检查、UI、日志、性能指标等运维监控相关的 API。
-
访问控制层:负责身份鉴权Authentication ,核准用户对资源的访问权限Authorization,设置访问逻辑(Admission Control,例如:启动容器之前需要下载镜像,或者检查具备某命名空间的资源)。
-
注册表层:选择要访问的资源对象。PS:Kubernetes 把所有资源对象都保存在注册表(Registry)中,例如:Pod,Service,Deployment 等等。
-
etcd 数据库:保存创建副本的信息。用来持久化 Kubernetes 资源对象的 Key-Value 数据库。
1.2、Controller Manager(kube-controller-manager进程)
Controller Manager负责管理cluster各种资源,保证资源处于预期的状态。 <