为了好理解,我用公司员工组织架构,来讲解k8s的架构。
# # 经典主从架构用户操作UI,将想要执行的命令交给master去处理,master将要执行的任务,下发给node去执行。
通俗的来讲,UI像是一个CEO,master就是领导、CEO它说它想做别墅业务,让把这个想法创达给了下边的领导,然后领导知道了这个想法以后,就继续向下传递,它接的A组的小张可以胜任,就吧任务给小张去执行了。最后小张买地,雇人,盖别墅。
# # 有能力的领导—— master
其实就是master 的能力介绍, 就像领导也要他的领导和他的员工沟通一样,所以想到领导先要 要具备沟通能力,其中 API server 就像是沟通能力;然后领导还有具备控制能力,需要来把握工作进度,掌控员工的状态,这种能力就是controller;Scheduler就是一种调度能力,它需要分析出来,谁适合做什么工作,然后进行分配工作。领导一般都有一个笔记本,笔记本上记录这一些员工的基本信息,etcd就像是一个用来记录内容的介质。
API Server负责与组件进行连接,组件与组件不直连,也通过api server 进行连接。
Controller :集群的恢复,水平扩张等
Scheduler :比方说一个任务,需要2G内存,4核CPU,应该放在哪里去执行。
etcd:用来记录集群的元数据。
# # 干苦活儿的打工人—— node
Pod: 是具体的业务 ,可以说是想要完成一个任务,要做一个任务分解, 比方说要盖别墅,要买地,要招建筑工人,要有营销,把别墅卖出去。
在计算机里边,比如就是订单物业,鉴权业务
Kubelet :就是最终执行任务的工人
network :另外各个部门可能还需要进行协商工作,所以需要一套通信系统。就像是物业保安用来联系的传呼机。
# # 用一个栗子来说明,具体怎么工作的
由用户提交一个待执行任务给API Server,这个任务会被记录在etcd里边,然后 Scheduler通过监听机制,知道有这个任务要执行,然后会这个待执行的任务,分派下去,然后汇报给API Server,然后记录在etcd里边,然后由Kubelet来执行这个任务,这个任务能被执行,需要分配环境,由 Container runtime 来完成,还需要配置网路的话,就需要使用网络插件来配置网络。