【Kubernetes】controller-manager组件状态Unhealthy解决

在执行`kubectl get componentstatuses`时,发现controller-manager状态为Unhealthy,错误消息显示HTTP probe失败。解决方案是删除kube-controller-manager配置文件中`--port=xxxxx`选项,仅保留`--secure-port=10257`,然后重启kube-controller-manager服务。完成重启后,controller-manager状态恢复正常。从1.13版本开始,kube-controller-manager的非安全端口已被废弃,建议使用安全端口进行livenessProbe。

【异常提示】使用kubectl获取组件的状态时,提示“controller-manager   Unhealthy   HTTP probe failed with statuscode: 400

$ kubectl get componentstatuses
Warning: v1 ComponentStatus is deprecated in v1.19+
NAME                       STATUS            MESSAGE                                                ERROR
scheduler                  Healthy             ok                             &nb

kube-controller-managerKubernetes 系统中的核心组件之一,负责运行一系列控制器,这些控制器用于确保集群的实际状态与期望状态一致。其主要功能包括节点控制器(Node Controller)、副本控制器(ReplicaSet Controller)、端点控制器(Endpoint Controller)等,通过监控和调整集群资源的状态来维持系统的稳定运行[^2]。 ### kube-controller-manager 的功能 - **节点控制器**:监控节点的健康状况,当检测到节点不可达时,标记节点为不可用,并触发相应的 Pod 驱逐机制。 - **副本控制器**:确保指定数量的 Pod 副本始终处于运行状态,自动重启失败的 Pod 或创建新的 Pod 以满足期望的副本数。 - **端点控制器**:管理服务(Service)与 Pod 之间的映射关系,将 Pod 的 IP 和端口信息更新到对应的 Endpoints 对象中。 - **服务账户控制器**:为每个命名空间创建默认的服务账户,并管理相关的 API 访问令牌。 - **令牌控制器**:处理服务账户令牌的生成和管理。 ### 问题排查方法 #### 1. 查看 kube-controller-manager状态 使用 `kubectl get pods -n kube-system` 命令检查 `kube-controller-manager` 的状态和重启次数,确认其是否处于正常运行状态[^2]。 ```bash kubectl get pods -n kube-system ``` 如果发现 `kube-controller-manager` 频繁重启,可以进一步查看其日志以定位问题: ```bash kubectl logs <kube-controller-manager-pod-name> -n kube-system ``` #### 2. 检查组件状态 使用 `kubectl get cs` 命令查看 Kubernetes 组件状态,确认 `kube-controller-manager` 是否显示为 `Unhealthy`: ```bash kubectl get cs ``` #### 3. 检查 Endpoint 和 Leader 选举问题 如果 `kube-controller-manager` 频繁重启且日志中显示 Leader 选举相关的问题,可能是由于 `kube-controller-manager` 在进行 Leader 选举时出现了频繁切换。这种情况通常与 etcd 的性能有关,特别是在磁盘 IOPS 较低的情况下,etcd 的响应速度较慢,导致 Leader 选举过程不稳定。可以通过以下步骤进行排查: - **检查 etcd 的性能**:确保 etcd 所在的磁盘具有足够的 IOPS,建议使用高性能存储设备以避免因磁盘性能问题导致的 Leader 切换。 - **查看 Leader 选举日志**:在 `kube-controller-manager` 的日志中查找与 Leader 选举相关的条目,观察是否有频繁的 Leader 变更记录。 - **调整 Leader 选举参数**:根据集群规模和网络延迟情况,适当调整 Leader 选举的超时时间和租约时间,以减少不必要的切换。 #### 4. 检查 Endpoints 对象 在某些情况下,`kube-controller-manager` 可能会因为无法正确更新 Endpoints 对象而导致重启。可以尝试手动删除 `kube-controller-manager` 的 Endpoints 对象,观察其是否会重新生成并恢复正常运行: ```bash kubectl delete endpoints -n kube-system kube-controller-manager ``` 删除后,`kube-controller-manager` 应该会重新注册自身,并更新 Endpoints 的 `resourceVersion`。如果问题仍然存在,建议进一步检查 `kube-controller-manager` 的配置文件和启动参数,确保其与集群的其他组件兼容[^1]。 #### 5. 检查 API Server 和 etcd 的连接 `kube-controller-manager` 依赖于与 API Server 和 etcd 的稳定连接。如果网络不稳定或配置错误,可能导致 `kube-controller-manager` 无法正常工作。可以通过以下方式检查: - **检查 API Server 的可达性**:确保 `kube-controller-manager` 能够正常访问 API Server。 - **检查 etcd 的连接状态**:确认 `kube-controller-manager` 与 etcd 之间的连接是否稳定,避免因连接超时或中断导致的异常。 #### 6. 检查系统资源 确保 `kube-controller-manager` 所在节点的系统资源(如 CPU、内存)充足,避免因资源不足导致的 OOM(Out of Memory)或其他异常。 ### 相关问题 1. 如何配置 kube-controller-manager 的 Leader 选举参数? 2. 如何判断 etcd 的性能是否影响了 kube-controller-manager 的稳定性? 3. kube-controller-manager 的 Endpoints 对象是如何生成和更新的? 4. 如何通过日志分析 kube-controller-manager 的异常行为? 5. 如何优化 kube-controller-manager 的性能以减少重启频率?
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cnskylee

技术分享我是认真的,期待您打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值