浅谈kubernetes:美丽的部署架构以及工作原理

  

对于每个想落地kubernetes应用的工程师来说,熟悉kubernetes的架构和工作原理是必经之路,也是必须知道的知识,只有了解kubernetes的架构和工作原理才能更好的应用kubernetes。

  <编辑> kubernetes整体架构   

Kubernetes最初源于谷歌内部的Borg,提供了面向应用的容器集群部署和管理系统,所以整体的架构和Borg很相似,整个架构有api服务器,控制经理,调度器,etcd, kubelet, kube-proxy, network-plugin等相关组件完成,整体架构如下:

  

浅谈kubernetes:美丽的部署架构以及工作原理

  <编辑>其中:   

Api服务器,控制经理,调度器,Etcd属于主节点,相关组件功能如下:

  
 <代码类=" language-shell "> 1. etcd:保存了整个集群的状态;
  
  2. apiserver:提供了资源操作的唯一入口,并提供认证,授权,访问控制,API注册和发现等机制;
  
  3.控制器经理:负责维护集群的状态,比如故障检测,自动扩展,滚动更新等;
  
  4.调度器:负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上; 
  

Kubelet、容器runtine Kube-proxy属于锅节点,相关组件功能如下:

  
 <代码类=" language-shell "> 1. kubelet:负责维护容器的生命周期,同时也负责体积(CSI)和网络(CNI)的管理;
  
  2.容器运行时:负责镜像管理以及Pod和容器的真正运行(CRI);
  
  3. kube-proxy:负责为服务提供集群内部的服务发现和负载均衡; 
  <编辑> kubernetes工作原理   

如下为kubernetes的整个工作流程图:

  

浅谈kubernetes:美丽的部署架构以及工作原理

  

下面为一个个吊舱创建过程:

  

1。用户提交创建群的请求,可以通过API服务器的REST API,也可用Kubectl命令行工具,支持Json和Yaml两种格式;

  

2。API服务器处理用户请求,存储荚数据到etcd;

  

3。安排通过和API服务器的看机制,查看到新的豆荚,尝试为吊舱绑定节点;

  

4。过滤主机:调度器用一组规则过滤掉不符合要求的主机,比如豆荚指定了所需要的资源,那么就要过滤掉资源不够的主机;

  

5。主机打分:对第一步筛选出的符合要求的主机进行打分,在主机打分阶段,调度器会考虑一些整体优化策略,比如把一个复制控制器的副本分布到不同的主机上,使用最低负载的主机等;

  

6。选择主机:选择打分最高的主机,进行绑定操作,结果存储到etcd中;

  

7。Kubelet根据调度结果执行Pod创建操作:绑定成功后,会启动容器,码头工人运行时,调度器会调用API在数据库etcd中创建一个绑定Pod对象,描述在一个工作节点上绑定运行的所有Pod信息。运行在每个工作节点上的Kubelet也会定期与etcd同步结合Pod信息,一旦发现应该在该工作节点上运行的绑定Pod对象没有更新,则调用码头工人API创建并启动豆荚内的容器;

  

浅谈kubernetes:美丽的部署架构以及工作原理

  

在这期间,控制经理同时会根据kubernetes的mainfiles文件执行rc pod的数量来保证指定的豆荚副本数。而其他的组件,比如调度器负责pod绑定的调度,从而完成整个吊舱的创建。

浅谈kubernetes:美丽的部署架构以及工作原理