在“第一次见到库本内特”的基础上,我们对什么是库本内特有了初步的了解。本文将进一步介绍Kubernetes,并从其整体结构和工作机制来理解Kubernetes。通过对体系结构和工作机制的深入了解,以后实现Kubernetes会更加得心应手。Kubernetes整体架构
Kubernetes采用主从分布式架构,包括Master Node、Worker Node、客户端命令行工具kubectl等附加项。主节点:在集群上执行调度管理的主节点。它由应用编程接口服务器、调度器、集群状态存储和控制器管理器服务器组成。其功能如下:
1.API Server:提供统一的资源运营门户,提供认证、授权、访问控制、API注册和发现机制。
2.调度器:负责资源调度,根据调度策略将Pod调度到相应的节点。
3.集群状态存储:保存整个集群的状态,默认使用Etcd。
4.控制器-管理器服务器:负责维护集群的状态,如故障检测、自动扩展、滚动更新等。工作节点:运行容器化业务应用程序的工作节点。包括kubelet、kube代理和容器运行时。功能如下:
1.维护集装箱的生命周期,管理集装箱安全倡议和CNI
2.Kube-proxy:基于公共访问策略,提供对pod的访问;
3.容器运行时:负责Pod和容器的图像管理和真实操作,如docker;
kube CTL:Kubernetes集群的命令行界面,用于通过命令行与API Server交互,实现集群内各种资源的维护和管理;
附加:Kubernetes核心功能的扩展主要包括三个附加项:网络、服务发现和可视化。工作原理
1.准备包含应用程序部署的yml文件,然后通过kubectl客户端工具将其发送到ApiServer。
2.ApiServer从客户端接收请求,并将资源内容存储在数据库中。
3.控制器组件监控资源变化并对其做出反应。
4.复制集检查数据库更改,并创建所需数量的pod实例。
5.调度程序会再次检查数据库的更改,找到尚未分配给特定执行节点的POD,然后根据一组相关规则将POD分配给可以运行它们的节点,更新数据库,并记录POD分配。
6.Kubelete监控数据库更改,管理后续PODs的生命周期,并发现分配给它所在节点的PODs。如果找到新的pod,它将在节点上运行。
此外,kuberproxy在集群中的每台主机上运行,并管理网络通信,如服务发现和负载平衡。当数据发送到主机时,它会被路由到正确的pod或容器。对于主机发送的数据,它可以根据请求地址发现远程服务器,并正确路由数据。在某些情况下,它会使用循环调度算法将请求发送到群集中的多个实例。
以下是pod创建的时序图,这是一个典型的创建过程,有助于理解k8s的工作原理:
1.用户可以通过API Server的REST API或者支持Json和Yaml格式的Kubectl命令行工具提交创建Pod的请求;
2.应用编程接口服务器处理用户请求,并将Pod数据存储在Etcd中;;
3.Schedule通过API Server的观察机制查看新的pod,并尝试绑定Node对于Pod
4.过滤主机:调度程序通过一组规则过滤掉不符合要求的主机。比如Pod指定了需要的资源,就要过滤掉资源不足的主机;
5.主持人评分:对第一步筛选出的合格主持人进行评分。在主机评分阶段,计划程序将考虑一些总体优化策略,例如将复制控制器的副本分发到不同的主机,并使用负载最低的主机。
6.选择主机:选择得分最高的主机,进行绑定操作,并将结果存储在Etcd中;
7.kubelet根据调度结果执行pod创建操作:绑定成功后,启动容器和docker运行,调度器调用API Server的API,在etcd中创建一个绑定的pod对象,描述所有绑定并运行在一个工作节点上的Pod信息。在每个工作节点上运行的Kubelet也会定期将绑定的pod信息与etcd同步。一旦发现应该在这个工作节点上运行的绑定pod对象没有被更新,它就调用Docker API来创建并启动pod中的容器。
今天的分享就到这里。欢迎关注、收藏、转发、评论。感谢大家的支持!
1.《k8s 十分钟看懂:Kubernetes架构与原理》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《k8s 十分钟看懂:Kubernetes架构与原理》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/yule/1534775.html