第3天:kube controller manager
发布: (2025年12月10日 GMT+8 09:34)
3 min read
原文: Dev.to
Source: Dev.to
概览
Kube Controller Manager 运行各种控制器,这些控制器持续监视 Kubernetes 集群中组件的状态,并努力将系统恢复到期望状态。
控制器
控制器是一个进程,它监听 Kubernetes API 服务器的变化,并采取行动将当前状态与期望状态对齐。
Node Controller
- 通过 Kube API 服务器监控节点状态。
- 每 5 秒 检查一次节点心跳。
- 如果心跳丢失,节点将在 40 秒 后被标记为 不可达。
- 节点随后有 5 分钟 的恢复时间;否则,Pod 将被驱逐并重新调度到健康节点上(如果它们属于 ReplicaSet)。
ReplicaSet Controller
- 确保 ReplicaSet 中指定的 Pod 数量始终保持不变。
- 如果 Pod 被终止或变得不健康,控制器会创建新 Pod 以满足期望的副本数。
打包
所有控制器都打包在一个名为 Kubernetes Controller Manager 的单一二进制文件中。安装该管理器会自动提供内置的控制器(节点、ReplicaSet、Deployment 等)。
安装
- 从 Kubernetes 发布页面 下载相应的发行版。
- 解压归档文件。
- 将二进制文件作为系统服务运行(例如,使用
systemd)。
# 示例:解压并启动 controller manager
tar -xzf kubernetes-server-linux-amd64.tar.gz
sudo cp kubernetes/server/bin/kube-controller-manager /usr/local/bin/
sudo systemctl enable kube-controller-manager
sudo systemctl start kube-controller-manager
kubeadm 部署
使用 kubeadm 时,controller manager 以静态 Pod 的形式部署在 kube-system 命名空间中。其清单文件位于:
/etc/kubernetes/manifests/kube-controller-manager.yaml
配置选项
controller manager 提供大量标志用于自定义行为,例如:
--node-monitor-period=5s– 节点状态检查之间的间隔。--node-monitor-grace-period=40s– 将节点标记为不可达前的等待时间。--pod-eviction-timeout=5m– 从不可达节点驱逐 Pod 前的持续时间。
这些标志可以添加到服务定义或静态 Pod 清单中。
检查运行中的 Manager
如果 controller manager 不是由 kubeadm 管理的,你可以查看其服务配置和运行进程:
# 列出 systemd 服务文件(示例路径)
cat /etc/systemd/system/kube-controller-manager.service
# 检查运行中的进程
ps -aux | grep kube-controller-manager
第 3 天笔记结束。