本文是自己的学习笔记


1、Controller概述

在 Kubernetes (K8s) 中,控制器(Controller) 是整个集群实现自动化管理和自愈能力的核心机制。

如果把 K8s 集群比作一座现代化的智能工厂,那么 controller 就是各种自动化机器人或监控设备,它们不需要人工介入,就能确保工厂时刻按照预设的规则运行。
控制器遵循控制工程中的 “控制循环(Control Loop)” 理念(就像家里的空调恒温器)。它的工作逻辑非常简单且不断重复:

  ┌─────────────────────────────────────────────────┐
  │                                                 │
  ▼                                                 │
【监听 (Watch)】───►【对比 (Compare)】───►【执行 (Act)】──┘
  1. 观察当前状态(Actual State): 通过 API Server 持续监听集群中资源的实际运行状态(比如:当前有几个 Pod 在运行)。

  2. 对比期望状态(Desired State): 将实际状态与你在 YAML 文件中声明的“期望状态”进行对比(比如:你要求运行 3 个 Pod,但当前只有 2 个)。

  3. 调谐纠偏(Reconcile): 如果两者不一致,控制器就会采取行动,消除差异(比如:自动再拉起 1 个新的 Pod),直到当前状态与期望状态完全吻合。

K8s 内置了多种控制器,每种控制器专注于管理特定类型的资源:

控制器名称负责管理的资源适用场景与主要职责
Deployment ControllerDeployment无状态应用(如 Web API、前端服务)。负责无缝滚动更新、版本回滚、弹性扩缩容。
ReplicaSet ControllerReplicaSet副本数量保证。确保任何时刻集群中都有指定数量的 Pod 在运行(通常由 Deployment 间接管理)。
CronJob ControllerCronJob定时周期任务。类似于 Linux 的 Crontab,按预设的时间表周期性创建 Job(如每日凌晨数据库备份)。
Node ControllerNode集群节点管理。监控节点的健康状态(Heartbeat),当节点离线时触发驱逐机制并重新调度 Pod。
Service / Endpoint ControllerService / Endpoints网络服务发现。监听 Pod IP 的变化,动态更新 Service 后端的 Endpoints 列表,确保流量正确路由。

更多推荐