1.2 Kubernetes架构图
Kubernetes系统用于管理分布式节点集群中的微服务或容器化应用程序,并且其提供了零停机时间部署、自动回滚、缩放和容器的自愈(其中包括自动配置、自动重启、自动复制的高弹性基础设施,以及容器的自动缩放等)等功能。
Kubernetes系统最重要的设计因素之一是能够横向扩展,即调整应用程序的副本数以提高可用性。设计一套大型系统,且保证其运行时健壮、可扩展、可移植和非常具有挑战性,尤其是在系统复杂度增加时,系统的体系结构会直接影响其运行方式、对环境的依赖程度及相关组件的耦合程度。
微服务是一种软件设计模式,适用于集群上的可扩展部署。开发人员使用这一模式能够创建小型、可组合的应用程序,通过定义良好的HTTP REST API接口进行通信。Kubernetes也是遵循微服务架构模式的程序,具有弹性、可观察性和管理功能,可以适应云平台的需求。
Kubernetes的系统架构设计与Borg的系统架构设计理念非常相似,如Scheduler调度器、Pod资源对象管理等。Kubernetes总架构图如图1-1所示。
图1-1 Kubernetes总架构图
Kubernetes系统架构遵循客户端/服务端(C/S)架构,系统架构分为Master和Node两部分,Master作为服务端,Node作为客户端。Kubernetes系统具有多个Master服务端,可以实现高可用。在默认的情况下,一个Master服务端即可完成所有工作。
Master服务端也被称为主控节点,它在集群中主要负责如下任务。
(1)集群的“大脑”,负责管理所有节点(Node)。
(2)负责调度Pod在哪些节点上运行。
(3)负责控制集群运行过程中的所有状态。
Node客户端也被称为工作节点,它在集群中主要负责如下任务。
(1)负责管理所有容器(Container)。
(2)负责监控/上报所有Pod的运行状态。
Master服务端(主控节点)主要负责管理和控制整个Kubernetes集群,对集群做出全局性决策,相当于整个集群的“大脑”。集群所执行的所有控制命令都由Master服务端接收并处理。Master服务端主要包含如下组件。
● kube-apiserver组件:集群的HTTP REST API接口,是集群控制的入口。
● kube-controller-manager组件:集群中所有资源对象的自动化控制中心。
● kube-scheduler组件:集群中Pod资源对象的调度服务。
Node客户端(工作节点)是Kubernetes集群中的工作节点,Node节点上的工作由Master服务端进行分配,比如当某个Node节点宕机时,Master节点会将其上面的工作转移到其他Node节点上。Node节点主要包含如下组件。
● kubelet组件:负责管理节点上容器的创建、删除、启停等任务,与Master节点进行通信。
● kube-proxy组件:负责Kubernetes服务的通信及负载均衡服务。
● container组件:负责容器的基础管理服务,接收kubelet组件的指令。
下面让我们深入了解每个节点上运行的组件。