第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 等)。

安装

  1. Kubernetes 发布页面 下载相应的发行版。
  2. 解压归档文件。
  3. 将二进制文件作为系统服务运行(例如,使用 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 天笔记结束。

Back to Blog

相关文章

阅读更多 »

第4天:kube scheduler

概述 Kubernetes 调度器决定每个 pod 应该运行在哪个节点上。它本身并不直接放置 pod;相反,它为每个 pod 记录目标节点。