Kubernetes 中的控制器管理器负责通过监控和管理各种资源,确保集群的预期状态与实际状态相匹配。
下面的代码片段说明了如何检查部署的状态,部署是控制器管理器管理的资源之一。
[代码清单]
# Check the status of a deployment named 'my-deployment'
kubectl get deployment my-deployment
[执行结果]
NAME READY UP-TO-DATE AVAILABLE AGE
my-deployment 3/3 3 3 10m
控制器管理器运行多个控制器,每个控制器负责特定的资源类型,如部署、副本集和节点。当你执行 kubectl get deployment my-deployment 命令时,你正在查询 Kubernetes API 服务器,而 Kubernetes API 服务器会与控制器管理器通信。输出会显示准备就绪、最新和可用的副本数量,这有助于你了解部署是否按预期运行。如果实际状态与预期状态不符(例如,某些 pod 未运行),控制器管理器将采取措施纠正这种差异,例如启动新 pod 或缩小现有 pod 的规模。
[小知识]
控制器管理器可以运行多个实例来实现高可用性,但每个控制器每次只能有一个实例处于活动状态,以避免冲突。
控制器使用循环来持续监控群集的状态,并根据需要进行调整,这是 Kubernetes 调节循环的核心原则。
常见的控制器包括复制控制器(Replication Controller)、部署控制器(Deployment Controller)和节点控制器(Node Controller)。