Kubernetes集群中主节点与工作节点的组件
1.主节点的组件
主节点包含以下4个组件。
(1)API服务器——kubectl命令通过和API服务器通信来执行某些操作。API服务器为外部用户以及集群内其他组件开放API。
(2)调度器——负责根据给定的优先级、资源需要和其他限制来选择供pod运行的合适节点。
(3)控制管理器——负责控制循环的执行:这一持续的“观测-比较-执行”操作支撑着Kubernetes的运行。
(4)分布式键值数据存储etcd——存储集群的底层状态,并确保在节点出现故障或者需要重启时数据仍然存在。
这些组件合到一起作为集群的控制面板。可以把它想象成飞机的驾驶舱,这些组件共同提供了对节点集群进行编排操作所需的API和后端。
2.工作节点组件
每个工作节点使用如下组件来运行和监控应用。
(1)容器运行时环境——比如Docker(网上传k8s要弃用docker,换其他容器引擎)。
(2)Kubelet——通过与Kubernetes主节点交互来启动、结束和监控节点上的容器。
(3)kube-proxy——提供了一个网络代理,用于将请求直接发送到集群中的不同pod,以及在pod之间发送请求。
这些组件相对很小且耦合度低。Kubernetes的一个关键设计原则是将关注分离并确保组件可以自主操作——有点像微服务!
3.监控状态变化
API服务器负责记录集群状态,并接收客户端的指令,但是它并不明确告诉其他组件要做什么,而是在某些事件发生或者出现变化时,让每个组件独立工作来编排集群功能。为了解状态变化,每个组件会监控API服务器:这些组件会请求API服务器在某些感兴趣的内容发生时给它发送通知,这样,它就可以执行相应的行动来尝试匹配所期望的状态。
因为调度器需要知道应该在什么时候为节点分配一个新的pod,所以它会连接到API服务器来接收和pod资源相关的源源不断的事件。当它接收到新创建pod的通知时,会为pod查找合适的节点。
相应地,Kubelet监控API服务器检查pod是否已经被分配到自己的节点上,然后启动相应的pod。
摘取自 摩根·布鲁斯和保罗·A.佩雷拉的《微服务实战》
网友评论