Kubernets 架构
我们把服务分为运行在工作节点上的服务和组成集群级别控制板的服务 。
节点有运行应用容器必备的服务,而这些都是受Master控制。
K8s主要由以下核心组件组成,主要分为Control Plance和node上的组件。
Kubernets 集群组件
Master 负责管理整个集群。 Master 协调集群中的所有活动,例如调度应用、维护应用的所需状态、应用扩容以及推出新的更新。
Node 是一个虚拟机或者物理机,它在 Kubernetes 集群中充当工作机器的角色 每个Node都有 Kubelet , 它管理 Node 而且是 Node 与 Master 通信的代理。 Node 还应该具有用于处理容器操作的工具,例如 Docker 或 rkt 。处理生产级流量的 Kubernetes 集群至少应具有三个 Node 。
所有相互关联组件的 Kubernetes 集群如下:
从图中可看到 一个 Kubernetes (后面简称K8s)集群由一组节点(nodes)的机器以及集群的控制服务(Control Plane)组成。
工作节点(worker nodes)托管作为应用程序组件的 Pod 。主集群的控制服务管理集群中的工作节点和 Pod。
各个组件的理解
Control Plane Components
控制平面的组件对集群做出全局决策(比如调度),以及检测和响应集群事件(例如,当不满足部署的 replicas 字段时,启动新的 pod)。由以下组件组成
1. kube-apiserver: 是Control Plane 的组件, 该组件公开了 k8s的API。 可以理解为是控制面的前端。设计上考虑了水平伸缩,可通过部署多个实例进行伸缩。
2. etcd:是兼具一致性和高可用性的键值数据库,可以作为保存 Kubernetes 所有集群数据的后台数据库。
3. kube-scheduler:监视那些新创建的未指定运行节点的 Pod,并选择节点让 Pod 在上面运行。
4. kube-controller-manager:运行控制器的组件,这些控制器包括:
a. 节点控制器(Node Controller): 负责在节点出现故障时进行通知和响应。
b. 副本控制器(Replication Controller): 负责为系统中的每个副本控制器对象维护正确数量的 Pod。
c. 端点控制器(Endpoints Controller): 填充端点(Endpoints)对象(即加入 Service 与 Pod)。
d. 服务帐户和令牌控制器(Service Account & Token Controllers): 为新的命名空间创建默认帐户和 API 访问令牌.
5. cloud-controller-manager: 将 k8s与任何其他云集成的最佳方式,运行特定于云平台的控制回路
Node 组件
节点组件在每个节点上运行,维护运行的 Pod 并提供 Kubernetes 运行环境。
kubelet:一个在集群中每个节点上运行的代理。它保证容器都运行在 Pod 中
kube-proxy:集群中每个节点上运行的网络代理
Container Runtime:负责运行容器的软件,k8s支持多个容器运行环境: docker、 containerd、CRI-O 以及任何实现 Kubernetes CRI (容器运行环境接口).