k8s 使全部 pod 调度到 master 上

本文介绍了如何在Kubernetes集群中处理从节点故障。首先,通过移除master节点的不可调度污点,允许Pod在master上运行。接着,为故障的从节点设置NoExecute污点,驱逐其上的Pod,并删除节点。最后,当所有故障节点处理完毕后,可以添加新的从节点以恢复集群的正常运行。这一过程涉及关键操作如kubectltaint命令的使用和节点状态的管理。
摘要由CSDN通过智能技术生成

当前运行的是一个一主三从的简单云集群,由于某些原因从节点出现了故障。在这个从节点上面运行了一些 pod,想要重新配置一个新的从节点。

有以下两步:

  • 取消 master 的不可调度/污点
  • 把 node 设置污点 effect 为 NoExecute

effect 描述污点的作用,有如下三个选项:

  • PreferNoSchedule:kubernetes 将尽量避免把 Pod 调度到具有该污点的 Node 上,除非没有其他节点可调度
  • NoSchedule:kubernetes 将不会把 Pod 调度到具有该污点的 Node 上,但不会影响当前 Node 上已存在的Pod
  • NoExecute:kubernetes 将不会把 Pod 调度到具有该污点的 Node 上,同时也会将 Node 上已存在的 Pod 驱离

允许 pod 调度到 master 上

#查看污点
[root@master1 ~]# kubectl describe node master1 | grep Taints
Taints: node-role.kubernetes.io/master:NoSchedule
#去除污点,允许 master 部署 pod 
[root@master1 ~]# kubectl taint nodes --all node-role.kubernetes.io/master-
node/master1 untainted
error: taint "node-role.kubernetes.io/master" not found
#再次查看,无显示,说明污点去除成功
[root@master1 ~]# kubectl describe node master1 | grep Taints
Taints:    <none>

给 node 设置 NoExecute 污点

[root@master1 ~]# kubectl taint nodes node01 key=value:NoExecute
node/node01 tainted
[root@master1 ~]# kubectl taint nodes node02 key=value:NoExecute
node/node02 tainted
# 查看调度情况
[root@master1 ~]# kubectl get pod -A -o wide 

最后,为了让新的 node 代替旧的 node,要记得把 node 节点删除。

kubectl delete node node01
kubectl delete node node02

现在就只剩下一个 master 了,可以重新添加新的 node 了。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小小扇子

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值