组件介绍

在一个kubernetes集群中所包含的组件内容

Components of Kubernetes

Pod是一个k8s独有的概念,可以表示封装一个或者多个的容器,更加强调这是一个运行环境,而不是指一个强调提供应用程序运行的容器。且Pod提供一个共享的命名空间和存储卷,在一个Pod中的容器之间可以非常方便的进行通讯。Pod是k8s最小的调度单位。

Control Plane组件介绍

kube-apiserver

该组件是Kubernetes API Server的主要实现,而Kubernetes API Server则负责暴露集群的接口,是control plane的前端。可以通过部署多个apiserver实例来进行负载均衡。

etcd

提供高可用并且一致性的键值对存储,作为Kuberntes的后台数据库,但是需要保证有数据备份

kube-scheduler

负责将创建出来的pod(可以理解为运行的容器)指派到node(集群中的机器)。

在安排的过程中的影响因素主要有:

  • 单个pod或者多个pod的资源需求
  • 软硬件的约束策略
  • 亲和性和反亲和性的规范
  • 数据位置
  • 工作负载
  • deadline

kube-controller-manager

负责运行contoller(用于从apiserver获取当前集群状态,同时尝试将当前集群状态转移到期望的集群状态)进程。

controller可以分为以下这些:

  1. Node controller:当node挂掉时负责通知和响应
  2. Job controller:检测代表一次性任务的Job对象,然后创建Pods来运行这些任务直到完成。
  3. EndPointSlice controller: 提供Service和Pod之间的连接
  4. ServiceAccount controller: 为新的命名空间创建默认的服务账号

cloud-controller-manager

它可以使用云提供商提供的接口,将控制平面在自己机器上部署,同时通过一系列的API将node部署在云提供商的服务器中。

Node组件介绍

node就是运行节点,负责维护运行的Pod并提供Kubernetes运行环境

kubelet

保证容器正常运行在Pod中,接受指定的PodSpec(指定的一些容器规格,比如说镜像,命令,参数,环境变量等等)、

kube-proxy

负责node上的网络代理,实现了一部分的服务,维护一些node上的网络规则(集群内部或者外部的与pod之间的网络通信)

插件

DNS

大部分的k8s集群还是需要DNS做解析的。

DashBoard

仪表盘,可以使用Web用户界面管理集群中的应用程序以及集群本身

Cluster-level Logging

集群日志可以将所有的容器日志进行汇总,并且提供一个中心化的访问查询接口。