求助:calico-kube-controllers Pod处于Pending状态如何修复
修复Calico Kube-Controllers Pod处于Pending状态的问题
问题原因
从Pod调度事件可明确:主节点kubernetes1带有node-role.kubernetes.io/control-plane污点,而Calico Kube-Controllers Pod的容忍规则仅包含node-role.kubernetes.io/master:NoSchedule,无法匹配该节点的污点,导致Pod无法被调度,一直处于Pending状态。
解决方案
方案一:为Calico Kube-Controllers添加对应污点的容忍规则(推荐)
- 编辑Calico Kube-Controllers的Deployment:
kubectl edit deployment calico-kube-controllers -n kube-system
- 在
spec.template.spec.tolerations数组中添加以下容忍规则:
- key: "node-role.kubernetes.io/control-plane" operator: "Exists" effect: "NoSchedule"
- 保存并退出编辑器,Kubernetes会自动重建Pod,新Pod将能正常调度到主节点。
方案二:移除主节点的node-role.kubernetes.io/control-plane污点(不推荐)
如果不需要主节点保留该污点,可执行以下命令移除:
kubectl taint nodes kubernetes1 node-role.kubernetes.io/control-plane-
验证修复效果
执行以下命令确认Pod状态变为Running:
kubectl get pods -n kube-system | grep calico-kube-controllers
内容的提问来源于stack exchange,提问作者Peter Penzov
相关产品推荐
相关产品推荐

