【架构理解】

k8s可以编排容器,也可以对服务器进行监管。在k8s,不会区分dev(开发人员)和ops(运维人员),而是devops(提倡开发时就要考虑运维,运维也要尽早开始考虑如何对应用进行运维监控)。

k8s采用了“控制面/数据面”架构,集群里的计算机称为“节点(node)”,可以是实体机,也可以是虚拟机,少量的节点作为控制面板执行几群的管理维护工作,即master node,简称为master。其他的大部分节点都被划在数据面,用来跑业务应用,叫做worker node,简称为worker或者node。node的数量非常多,构成了一个资源池,k8s就在池子里分配资源,调度应用。节点在集群中,可以根据需要随时做增加删除。通过使用命令kubectl get node:查看当前节点。如下可以看到只有master node,没有worker node,这是因为worker并不是必须的,集群规模小,工作负载少的时候,master可以承担worker的工作,就只有一个节点,它既作为master,也是worker;

下图中,可以看到平时我们都是通过kubectl执行命令,它就类似k8s的客户端工具,用来操作k8s,但它位于集群之外。

 【节点内部的结构】

k8s内部有很多的模块,这些模块可以分为组件(component)和插件(addon)两类。组件是必不可少的,插件是锦上添花的附属功能,没有也不影响K8S的正常运行。

master节点:有4个组件,apiserver、etcd、scheduler、controller-manager。

 

 

apiserver:是k8s系统的唯一入口,对外公开了一些列的restful api,并且加上了验证、授权等功能,所有组件都只能和它通信,就是k8s的联络员;

etcd:是一个高可用的分布式key-value数据库,用来持久化存储系统里各种资源对象和状态,是k8s的配置管理员。它至于apiserver有直接联系,也就是任何组件想读取它数据都要通过apiserver;

scheduler:负责容器的编排工作,检查节点的资源状态,把POD调度到最合适的节点去运行,相当于部署人员。因为节点和pod信息都存储在etcd里,所以scheduler必须通过apiserver才能获得;

controller-manager:负责维护容器和节点等资源的状态,实现故障检测、服务迁移、应用伸缩等,相当于运维监控人员。同样是通过apiserver才能或许etcd的信息。

 

这4个组件,已经被容器化了,运行在几群的pod里,可以用kubectl查看,注意要带上对应的namespace,这样可以清晰看到这个ns下有哪些pod。

 

 

worker节点:的组件有3个,kubelet、kube-proxy、container-runtime。这些组件搜集到信息后,就会发送给master节点的组件,这样master节点的组件才能做好管理调度。

 

 

kubelet:是worker node的代理,负责管理worker相关的绝大部分操作,只有它能与apiserver通信,实现状态报告、命令下发、启停容器等功能,相当于worker的小管家;

kube-proxy:是node的网络代理,只负责管理容器的网络通信,就是为pod转发TCP/UDP包;

container-runtime:是容器和镜像的实际使用者,在kubelet的指挥下创建容器,管理pod的生命周期,是干活的苦力。这里注意,由于k8s的定位是容器编排平台,所以她没有先定container-runtime必须是docker,完全可以替换成任何符合标准的其他容器运行时,比如containerd、CRI-O等,只不过实验中我们用的是docker。

 

这3个组件只有kube-proxy被容器化了,这是因为kubelet因为必须要管理整个节点,容器化会限制他的能力,所以它必须在container-runtime之外运行。

 

整体流程:

1、每个节点(node)上的kubelet会定期想apiserver上报节点状态,apiserver再存到etcd;

2、每个节点(node)上的kube-proxy实现了TCP/UDP反向台历,让容器对外提供稳定的服务;

3、scheduler通过apiserver得到当前的节点状态,调度POD,然后apiserver下发命令,给某个node的kubelet,kubelet调用container-runtime启动容器;

4、controller-manager也通过apiserver得到实时的节点状态,监控可能的异常情况,再使用相应的手段去调节恢复;

 

 

插件:有了以上组件,已经是一个可以正常运行的k8s集群了,但是要想达到好用易用的目的,还需要使用插件。使用minikube addons list,可以查看插件列表。常用的有DNS(集群里实现了域名解析,通过使用域名,而不使用ip来互相通信)和dashboard(输入命令minikube dashboard打开,就是界面化展示仪表盘)。

 

 

 

【本节整理】

 

 

原文地址:http://www.cnblogs.com/1234roro/p/16877111.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性