一个Kubernetes平台可以管理几百台容器主机,以及运行在这些主机上的容器应用。如果容器主机采用裸金属服务器,则一台容器主机上运行的容器应用可以超过200个。也就是说,一个 Kubernetes 平台编配的容器应用数量是数千到数万个,要想确保这么多容器应用正常运行,且各自运行在对应的容器主机上,并对这些容器应用的生命周期进行合理管理,就需要Kubernetes自身的架构具有一定的可靠性及比较好的容错能力。Kubernetes 架构自身是一个经典的分布式架构。
图1所示为 Kubernetes 分布式架构设计示意图。分布式架构软件的运行需要多个服务器或虚拟机,一个有效的Kubernetes部署称为一个集群,集群中有多个节点,每个节点可以是物理服务器,也可以是虚拟机,每个节点上运行的操作系统是Linux,且每个节点上都运行着数十到数百个容器。这些节点可以分为两类:控制节点和计算节点,而 Kubernetes 架构的分布式体现在它的控制节点。
图 1 Kubernetes 分布式架构设计
控制节点是Kubernetes集群的神经中枢。控制平面包括用于控制集群的Kubernetes 组件以及一些有关集群状态和配置的数据。这些核心Kubernetes 组件负责处理重要的工作,以确保容器以足够的数量和资源运行。控制平面会一直与计算节点的容器主机保持联系。生产环境中控制平面的高可用部署包括三个节点,每个节点上运行的组件相同。
etcd是Kubernetes控制平面最重要的组件,etcd存储着集群的配置数据和集群状态的数据。图1 中 etcd为三节点集群部署,每条键值对的数据会存储到三个节点上,这种容错的设计可以保证每条数据有三个副本,任何一个节点的故障宕机都不会影响控制平面编排调度的正常进行。etcd 提供持久化集群状态数据,使得Kubernetes 集群在面对升级、大范围重启及其他复杂场景时都能运行自如。
标签:容器,架构,Kubernetes,集群,节点,分布式 From: https://www.cnblogs.com/tiduyun/p/16992695.html