Kubernetes组件最全详解(8大核心组件)

Kubernetes组件最全详解(8大核心组件)-mikechen

要掌握好Kubernetes,需要掌握好Kubernetes组件,下满详解Kubernetes组件相关的主节点组件和工作节点组件。

Kubernetes组件

Kubernetes架构,如下图所示:

Kubernetes组件最全详解(8大核心组件)-mikechen

从上图可以看出Kubernetes组件由:Master主节点组件和Node工作节点组件组成,两种角色分别对应着控制节点和工作节点。

Kubernetes的核心组件部署在Master管理节点上,主要作用是作为Kubernetes的“大脑”,控制整个分布式集群的运转,Node节点作为“四肢”,执行Master的操作指令。

 

主节点的组件

主节点架构

master主节点架构,如下图黄框所示:

Kubernetes组件最全详解(8大核心组件)-mikechen

从上图左侧黄框的Kubernetes主节点可以看出,Master 节点由4个独立的组件组成,它们分别是:

  1. apiserver:负责整个集群通信的 API 服务;
  2. scheduler :负责容器调度 ;
  3. controller:负责维护集群状态的 kube-controller-manager 组件;
  4. Etcd:复制保存集群所有的网络配置和对象的状态信息;

下面我再详解下主节点的4大组件,继续。

1.API Server

Kubernetes组件最全详解(8大核心组件)-mikechen

API Server的主要负责整个集群通信的 API 服务,API Server是Kubernetes控制程序的前端,也是用户唯一可以直接进行交互的Kubernetes组件。

作为集群管理的API入口为资源对象,比如:Pod、Service、Deployment提供创建、认证、数据校验、状态变更等操作。

 

2.键值存储etcd

Etcd是一种K-V存储仓库,Etcd是Kubernetes集群中的一个十分重要的组件。

Etcd主要用于保存集群所有的网络配置和对象的状态信息,无论是创建Deployment,还是创建Service,各种资源对象信息都会写入Etcd。

 

3.ControllerManager

Controller Manager是Kubernetes的“大脑”,由一系列控制器组成,如下图所示:

Kubernetes组件最全详解(8大核心组件)-mikechen

Controller Manager主要包含以下8大组件:

  1. Replication Controller:主要是保证集群中一个Replication Controller (RC) ,所关联的 Pod 副本数始终保持为与预设值一致;
  2. Node Controller:Node Controller 通过 API Server 实时获取 Node 的相关信息,实现管理和监控集群中的各个 Node 节点;
  3. ResourceQuota Controller:资源配额管理控制器,用于确保指定的资源对象在任何时候都不会超量占用系统上物理资源;
  4. Namespace Controller:用户通过 API Server 可以创建新的 Namespace 并保存在 Etcd 中;
  5. Service Account Controller:服务账号控制器,主要在命名空间内管理 ServiceAccount,以保证名为 default 的 ServiceAccount 在每个命名空间中存在;
  6. Token Controller:令牌控制器主要用作:监听 serviceAccount 的创建和删除动作,以及监听 secret 的添加删除动作;
  7. Service Controller:服务控制器主要用作:监听 Service 的变化;
  8. Endpoint Controller:负责生成和维护所有 Endpoints 对象的控制器;

Controller Manager主要用于:实现 Kubernetes 集群故障检测,监控整个集群的状态,以及恢复的自动化工作。

 

4.Scheduler

Scheduler是Kubernetes的调度器,Scheduler 是负责整个集群的资源调度的。

Scheduler调度程序会监视来自API Server的新请求,并将其分配给运行状况良好的节点,比如:对节点的质量进行排名,并将Pod部署到最适合的节点。

 

工作节点的组件

工作节点组件,如下图所示:

Kubernetes组件最全详解(8大核心组件)-mikechen

上图右侧的绿框就是Kubernetes工作节点,包含如下组件:

1.Kubelet

kubelet 是负责容器真正运行的核心组件,kubelet 是 Master 和 Node 之间的桥梁,接收 API Server 分配给它的任务并执行。

 

2.Container Runtime

Container Runtime基于gRPC协议,定义了RuntimeService和ImageService两个gRPC服务,分别用于管理容器运行和镜像。

 

3.Kube-proxy

kube-proxy 是为了解决外部网络能够访问集群中容器提供的应用服务而设计的,Proxy 运行在每个Node 上。

kube-proxy确保每个节点都获得其IP地址,实现本地iptables和规则以处理路由和流量负载均衡。

 

4.Pod

Pod是Kubernetes中一个抽象化概念,由一个或多个容器组合在一起得共享资源,如下图所示:

Kubernetes组件最全详解(8大核心组件)-mikechen
Pod 的设计理念是支持多个容器在一个 Pod 中共享网络和文件系统,可以通过进程间通信,和文件共享这种简单高效的方式组合完成服务。

在Kubernetes中,Pod是调度的最小元素,没有它容器就不能成为集群的一部分,主节点会把Pod调度到特定工作节点上,并与容器运行时协调以启动容器。

陈睿mikechen

10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注「mikechen」公众号,获取更多技术干货!

后台回复面试即可获取《史上最全阿里Java面试题总结》,后台回复架构,即可获取《阿里架构师进阶专题全部合集

评论交流
    说说你的看法