集群
集群Cluster
表示一个由Control Plane
和Node
组成的Kubernetes集群
注:
k8s已经将master改名为control-plane:stackoverflow
Control Plane
控制平面的组件对集群做出全局决策(比如调度),以及检测和响应集群事件(例如,当不满足部署的 replicas 字段时,启动新的 pod)。
控制平面组件可以在集群中的任何节点上运行。 然而,为了简单起见,设置脚本通常会在同一个计算机上启动所有控制平面组件, 并且不会在此计算机上运行用户容器。
- Kubernetes API Server-(kube-apiserver)
提供HTTP RESTful API接口的主要服务,是Kubernetes里对所有资源进行操作的唯一入口,也是集群控制的入口进程 - Kubernetes Controller Manager(kube-controller-manager)
Kubernetes里所有资源对象的自动化控制中心,可以将其理解为资源对象的“大总管” - Kubernetes Scheduler-(kube-scheduler)
负责志愿调度(Pod调度)的进程 - etcd
是一个分布式的一个存储系统,API Server 中所需要的这些原信息都被放置在 etcd 中,etcd 本身是一个高可用系统,通过 etcd 保证整个 Kubernetes 的 Master 组件的高可用性 - Cloud Controller Manager-(kube-controller-manager)
云控制器管理器是指嵌入特定云的控制逻辑的控制平面组件。 云控制器管理器使得可以将集群连接到云提供商的API之上,并将与该云平台交互的组件同与你的集群交互的组件分离开来。
cloud-controller-manager 仅运行特定的云平台的控制器。如果在自己的环境中运行 Kubernetes,或者在本地计算机中运行学习环境,所部署的环境中不需要云控制器管理器。
Node
Kubernetes 的 Node 是真正运行业务负载的,每个业务负载会以 Pod 的形式运行
- kubelet
负责Pod对应容器的创建、启停等任务,同时与Master密切协作,实现集群管理的基本功能 - kube-proxy
实现Kubernetes Service的通信与负载均衡机制的服务 - 容器运行时-Container Runtime
负责本机的容器创建和管理
k8s 应用部署流程
下图显示了k8s部署应用程序的示例,其中两个部署使用两个service公开。
- 将应用程序清单提交给Kubernetes API,API Server将清单中定义的对象写入etcd
- 控制器(Controller)通过etcd注意到新创建的对象并创建多个新对象-每个对象对应一个应用程序实例
- 调度器(Scheduler)为每个实例分配一个节点
- Kubelet 注意到一个实例被分配给了 Kubelet 的节点。它通过容器运行时(Container Runtime)运行应用程序实例
- Kube proxy注意到应用程序实例已准备好接受来自客户端的连接并为他们配置负载均衡
- Kubelets 和 Controller 监控系统并保持应用程序运行
网友评论