Kubernetes组件

控制平面组件
控制平面的组件对集群做出全局决策(例如,调度),并且检测和响应集群事件(例如,当一个 Deployment 本数量不满足要求时启动一个新的 Pod)。控制平面组件可以在集群中的任何机器上运行。然而,为了简单起见,安装脚本通常会在同一台 机器上启动所有控制平面组件,并且不在这台机器上运行用户容器。
kube-apiserver(Kubernetes API 服务器)
API 服务器是 Kubernetes 控制平面的一个组件,用于暴露 Kubernetes API。它是 Kubernetes 控制平面的前端。 Kubernetes API 服务器的主要实现是 kube-apiserver。
etcd
etcd 作为 Kubernetes 所有集群数据的后端存储,是一个一致的、高可用的键值存储系统,是 Kubernetes 所有集群数据的后台数据库。
kube-scheduler(调度器)
负责调度,根据一系列因素(如资源请求、亲和性/反亲和性规则、数据位置等)决定 Pod 应该在哪个节点上运行。
kube-controller-manager(控制器管理器)
运行着各种控制器的守护进程,是集群的自动化引擎。
-
功能:
-
每个控制器都是一个独立的控制循环,通过 apiserver 监听集群状态,并努力将当前状态驱近于期望状态。
-
核心控制器包括:
-
节点控制器:负责在节点出现故障时进行通知和响应。
-
副本控制器:确保 Pod 的副本数量始终与期望值一致(例如,Deployment 依赖的控制器)。
-
端点控制器:填充 Endpoints 对象(将 Service 链接到 Pod)。
-
服务账户和令牌控制器:为新的命名空间创建默认账户和 API 访问令牌。
-
-
cloud-controller-manager(云控制器管理器)
云控制器管理器允许你将集群与云提供商的 API 连接起来,并将与云平台交互的组件与仅与集群交互的组件区分开来。
-
功能:
-
将特定于云平台的控制逻辑从 kube-controller-manager 中分离出来,让核心的 Kubernetes 更具可移植性。
-
包含节点控制器、路由控制器、服务控制器等,用于与云厂商的 API 交互,管理负载均衡器、存储卷、网络路由等。
-
工作节点组件
这些组件在每个工作节点上运行,维护运行的 Pod 并提供 Kubernetes 运行环境。
kubelet(Kubernetes 代理)
kubelet 是运行在集群中每个节点上的代理程序。它确保容器在 Pod 中正常运行。
kubelet 获取通过各种机制提供的一组 Pod 规范(PodSpecs),并确保这些 Pod 规范中描述的容器正在运行且处于健康状态。但kubelet 不管理非由 Kubernetes 创建的容器。
kube-proxy(可选组件)
集群的网络代理和负载均衡器。
-
功能:
-
在节点上维护网络规则,这些规则允许从集群内部或外部的网络会话与 Pod 进行网络通信。
-
实现了 Kubernetes Service 的概念(如 ClusterIP, NodePort)。
-
默认使用 iptables 或 IPVS 模式,将发往 Service VIP 的流量转发到后端正确的 Pod 上。
-
容器运行时(CRI)
-
负责真正运行容器的软件。
-
功能:
-
Kubernetes 通过 容器运行时接口 与容器运行时交互。
-
负责拉取镜像、启动和停止容器、管理容器存储和网络等底层操作。
-
常见运行时:
containerd(目前最主流)、CRI-O、Docker Engine(已废弃)。
-
更多推荐
所有评论(0)