Kubernets 调度常用的命令-马哥教育

taints 内容包括 key、value、effect:

key 就是配置的键值
value 就是内容
effect 是标记了这个 taints 行为是什么
目前 Kubernetes 里面有三个 taints 行为:

NoSchedule 禁止新的 Pod 调度上来
PreferNoSchedul 尽量不调度到这台

k8s的master节点本身就带有effect类型为NoSchedule的污点,这也是为什么k8s在调度Pod时,不会调度到master节点的原因,具体查看如下:(Kubeadm在安装初始化init的时候给master打上了污点,其余节点是没有该污点的。Master节点主要任务是管理集群的,不应该跑具体的业务应用。所以不允许pod落在master节点)

[root@k8s-master ~]# kubectl describe node k8s-master
Taints: node-role.kubernetes.io/master:NoSchedule
kubectl taint nodes k8s-master node-role.kubernetes.io/master=:NoSchedule

注意⚠️ : 为master设置的这个taint中, node-role.kubernetes.io/masterkeyvalue为空, effectNoSchedule

驱逐节点是一种有损操作,驱逐的原理 :
  1. 封锁节点 (设为不可调度,避免新的 Pod 调度上来)。
  2. 将该节点上的 Pod 删除。
  3. ReplicaSet 控制器检测到 Pod 减少,会重新创建一个 Pod,调度到新的节点上。

设置节点不可以调度

[root@k8s-master ~]# kubectl cordon k8s-node1
[root@k8s-master ~]# kubectl describe node k8s-node1
node.kubernetes.io/unschedulable:NoSchedule

设置将节点上pod驱逐

# kubectl drain node2 --force --ignore-daemonsets

kubectl drain操作会将相应节点上的旧Pod删除,并在可调度节点上面起一个对应的Pod。当旧Pod没有被正常删除的情况下,新Pod不会起来。

例如:旧Pod一直处于Terminating状态。

对应的解决方式是通过重启相应节点的kubelet,或者强制删除该Pod。

# 重启发生`Terminating`节点的kubelet
systemctl restart kubelet
# 强制删除`Terminating`状态的Pod
kubectl delete pod <PodName> --namespace=<Namespace> --force --grace-period=0

#节点恢复正常后, 设置节点为可调度

kubectl uncordon k8s-node1

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值