Kubernetes基础理论知识之Master节点与Node节点
Kubernetes基础理论知识之Master节点与Node节点
Master节点
Master
节点是Kubernetes
集群的控制节点,在生产环境中不建议部署集群核心组件外的任何Pod
,公司业务的Pod
更是不建议部署到Master
节点上,以免升级或者维护时对业务造成影响。
Master
节点的组件包括:
APIServer
:APIServer
是整个集群的控制中枢,提供集群中各个模块之间的数据交换,并将集群状态和信息存储到分布式键-值(key-value)
存储系统Etcd
集群中。同时它也是集群管理、资源配额、提供完备的集群安全机制的入口,为集群各类资源对象提供增删改查以及watch
的REST API
接口。APIServer
作为Kubernetes
的关键组件,使用Kubernetes API
和 JSON over HTTP
提供Kubernetes
的内部和外部接口。
Scheduler
:Scheduler
是集群Pod
的调度中心,主要是通过调度算法将Pod
分配到最佳的节点(Node
),它通过APIServer
监听所有Pod
的状态,一旦发现新的未被调度到任何Node
节点的Pod
(PodSpec.NodeName
为空),就会根据一系列策略选择最佳节点进行调度,对每一个Pod
创建一个绑定(binding
),然后被调度的节点上的Kubelet
负责启动该Pod
。Scheduler
是集群可插拔式组件,它跟踪每个节点上的资源利用率以确保工作负载不会超过可用资源。因此Scheduler
必须知道资源需求、资源可用性以及其他约束和策略,例如服务质量
、亲和力/反关联性要求
、数据位置
等。Scheduler
将资源供应与工作负载需求相匹配以维持系统的稳定和可靠,因此Scheduler
在调度的过程中需要考虑公平
、资源高效利用
、效率
等方面的问题。
Controller Manager
: Controller Manager
是集群状态管理器(它的英文直译名为控制器管理器),以保证Pod
或其他资源达到期望值。当集群中某个Pod
的副本数或其他资源因故障和错误导致无法正常运行,没有达到设定的值时,Controller Manager
会尝试自动修复并使其达到期望状态。Controller Manager
包含NodeController
、ReplicationController
、EndpointController
、NamespaceController
、ServiceAccountController
、ResourceQuotaController
、ServiceControlle
r和TokenController
,该控制器管理器可与API
服务器进行通信以在需要时创建
、更新
或删除
它所管理的资源,如Pod
、服务断点等。
Etcd
: Etcd
由CoreOS
开发,用于可靠地存储集群的配置数据,是一种持久性
、轻量型
、分布式
的键-值(key-value
)数据存储组件。Etcd
作为Kubernetes
集群的持久化存储系统,集群的灾难恢复、状态信息存储都与其密不可分,所以在Kubernetes
高可用集群中,Etcd
的高可用是至关重要的一部分,在生产环境中建议部署为大于3
的奇数个数的Etcd
,以保证数据的安全性和可恢复性。Etcd
可与Master
组件部署在同一个节点上,大规模集群环境下建议部署在集群外,并且使用高性能服务器来提高Etcd
的性能和降低Etcd
同步数据的延迟。
Node节点
Node
节点也被称为Worker
或Minion
,是主要负责部署容器(工作负载)的单机(或虚拟机),集群中的每个节点都必须具备容器的运行环境(runtime
),比如Docker
及其他组件等。
Kubelet
作为守护进程运行在Node
节点上,负责监听该节点上所有的Pod
,同时负责上报该节点上所有Pod
的运行状态,确保节点上的所有容器都能正常运行。当Node
节点宕机(NotReady
状态)时,该节点上运行的Pod
会被自动地转移到其他节点上。
Node
节点包括:
Kubelet
: 负责与Master
通信协作,管理该节点上的Pod
。Kube-Proxy
: 负责各Pod
之间的通信和负载均衡。Docker Engine
:Docker
引擎,负载对容器的管理。