You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kubernetes 1.21.1集群master节点无默认污点普通Pod被调度问题

可能原因

  • 集群初始化时主动关闭了master污点自动添加逻辑:如果使用kubeadm初始化集群,大概率是执行kubeadm init时指定了--control-plane-taints=""参数,或初始化配置文件中控制面节点的taints字段被设为空,跳过了默认污点的添加。
  • 人为主动移除了污点:集群运维人员后续执行过kubectl taint nodes --all node-role.kubernetes.io/master-这类命令,批量删除了所有master节点的默认污点。
  • 第三方部署工具的默认配置:如果使用Rancher、Kubespray这类工具部署集群,部分版本为了适配小集群、单节点集群的使用场景,会默认关闭master节点污点,允许业务负载调度到控制面节点。

处理方案

1. 重新添加master节点默认污点

对所有master节点执行以下命令添加标准NoSchedule污点:

kubectl taint nodes master1 node-role.kubernetes.io/master=:NoSchedule
kubectl taint nodes master2 node-role.kubernetes.io/master=:NoSchedule
kubectl taint nodes master3 node-role.kubernetes.io/master=:NoSchedule

你当前使用的1.21版本master节点默认污点为上述配置,如果是1.24及以上版本,对应污点需替换为node-role.kubernetes.io/control-plane=:NoSchedule

2. 清理master节点上已调度的普通业务Pod

添加污点后存量普通Pod不会自动驱逐,可手动删除已调度到master上的业务Pod,控制器会自动在符合条件的worker节点重建:

# 清理你场景中的测试Pod
kubectl delete pod nginx-test-5dbdb6f988-dfmcv nginx-test-5dbdb6f988-flm4h

如果master上还有其他普通业务Pod,可批量清理(注意排除kube-system等系统命名空间的控制面组件Pod,这类Pod默认配置了对应污点的容忍度,可正常运行在master节点):

kubectl get pods -A -o wide | grep master | grep -v kube-system | awk '{print $1" "$2}' | xargs -n2 kubectl delete pod -n

3. 验证配置

执行命令确认污点配置生效:

kubectl describe nodes | grep -i taints

所有master节点输出应为Taints: node-role.kubernetes.io/master:NoSchedule,worker节点无该污点即为配置成功,后续新建的普通业务Pod不会再被调度到master节点。

内容的提问来源于stack exchange,提问作者JAESANGPARK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 06:45:00