【赵渝强老师】Kubernetes的体系架构_容器


  在学习Kubernetes之前,有必要了解一下它的体系架构及其组件。这对于后续部署Kubernetes集群及使用它都非常的重要。下图展示了Kubernetes的体系架构。

【赵渝强老师】Kubernetes的体系架构_API_02


  Kubernetes属于主从分布式架构的体系架构,主要包括master的主节点和node的工作节点。实际的生产环境中,node的工作节点至少两个。

  视频讲解如下:

Kubernetes的体系架构


【赵渝强老师】Kubernetes的体系架构


  下面对master和node做一个简单的介绍。

  • master

  master作为集群的主节点,它控制着整个集群并对集群进行管理和调度。master节点上运行着API Server、scheduler、controll-manager各个具体的服务组件,并master还管理着集群的持久化存储etcd。

  • node

  node节点是Kubernetes集群真正的工作节点,它是实际运行业务应用容器的节点。node节点上运行着kubelet、kube-proxy和Docker容器的守护进程。node节点通过kubelet与master节点上的API Server进行交互,从而实现在集群中进行各种资源的增删改查等操作。

除了master的主节点和node的工作节点外,Kubernetes体系架构中还包括客户端命令行工具kubectl和其它一些附加组件。

  下面讨论一下Kubernetes集群中的组件。

一、Kubernetes的核心组件

  在了解了Kubernetes的体系架构后,下面对其中涉及到的核心组件及其它们的作用进行了详细说明。

  • API Server

  API Server提供了操作Kubernetes集群的唯一入口,通过它可以访问到集群中的所有资源。API Server提供了用户的认证及授权功能;支持访问控制的管理和服务的注册发现等机制。API Server同时也与etcd的存储进行交互,从而将集群的信息进行持久化保存。

  • scheduler

  负责管理和调度集群的资源。Kubernetes允许用户预先定义资源的调度策略,通过scheduler的调度器将Pod调度到相应的node节点上。

  • controll-manager

  负责维护集群的状态,例如:故障检测、自动扩展、滚动更新等。

  • kubelet

  负责管理node节点上运行的pod,包括:pod的创建、修改、删除、重启以及健康状态的监控等操作。kubelet同时还负责与master节点上的API Server进行交互通信,定时将本node节点的状态发送给API Server;并接收API Server 下发的指令信息。

  • kube-proxy

  kube-proxy会根据etcd中存储的应用配置信息在node节点上启动一个监听进程,从而实现将外部请求路由转发到后端正确的容器中。同时kube-proxy还解决了同一服务端口冲突的问题,并为部署在Kubernetes集群中的应用提供访问外部网络的能力。kube-porxy支持随机和轮询这两种负载均衡的路由算法。

  • Docker容器的守护进程

  负责Docker的镜像管理以及pod和容器的真正运行,是Kubernetes真正的执行引擎。

Docker是Kubernetes的执行引擎,但Kubernetes也可以使用其他的容器技术作为执行引擎,如:Containerd。

二、Kubernetes的附加组件

  下表列举了在Kubernetes中一些常用的附加组件以及它们的作用,这些附加组件不是必须的。只是利用这些组件可以增强Kubernetes的功能。

【赵渝强老师】Kubernetes的体系架构_Server_03