在了解了为什么要使用K8s之后,我们可以再进一步的学习K8s由哪些组件构成,每个组件的作于是什么,以及他们之间如何配合工作的。
1、K8S架构
毫无疑问,k8s肯定是天生的集群架构。那么会有多个主节点(Master Node
)和工作节点(Worker Node
)组成。
主节点不干重活,只做领导指挥工作。工作节点才是真正做事的搬砖人。如果主节点失联,其他主节点会进行投票,重新选举主节点。
2、组件介绍
上图左侧表示整个架构,右侧展示了多个不同的组件。我们可以把整个cluster看作一个集团。不同的工作节点(Workr Node)看作是不同的分公司(东厂,西厂,南厂)。master节点看做是集团总部。
API server
:秘书部,所有master发给woker的命令都需要经过秘书部传递。controller manager
:决策者,决定做什么项目,执行什么命令。etcd
:资料库,保存运行时的核心数据,一个键值对数据库。scheduler
:调度者,决定资源的分配。到底这个任务交给哪个分厂执行。kubelet
:分厂的厂长,工作节点的管理者。kube-proxy
:分厂的门卫,负责厂区的外部联系,也知晓外部的网络环境信息。不同分厂的门卫之间的信息是保持同步的。cloud controller manager
:负责集团总部的外联woker node
:分厂
3、组件交互
- 通过
kubectl
发送命令给controller manager
,运行一个tomcat容器。 controller manager
将这个任务保存到etcd
资料库。schduler
定时查询资料库,发现有新的任务,就通过api-server
将任务下发到它选中的工作节点。- 工作节点的
kubelet
会检测tomcat
容器健康状态,一旦发现异常,会上报给主节点的api-server
,api-server
会通知controller manager
决策者。 controller manager
决定该任务是否交给其他工作节点完成,于是将任务重新分配,重新从步骤2开始执行。