1、kubernetes集群POD调度策略
(1)、NoSchedule: 一定不能被调度
(2)、PreferNoSchedule: 尽量不要调度
(3)、NoExecute: 不仅不会调度, 还会驱逐Node上已有的Pod
2、将master节点设置为可调度POD,即去除污点
kubectl describe no 192.168.1.12 # 查看节点Taints值
kubectl taint node 192.168.1.12 node-role.kubernetes.io/master-
# 执行结果
[root@192 kubeadm]# kubectl taint node 192.168.1.12 node-role.kubernetes.io/master-
node/192.168.1.12 untainted
3、将master节点设置为不可调度POD,即设置为污点
kubectl taint node 192.168.1.12 node-role.kubernetes.io/master=:NoSchedule
# 执行结果
[root@192 kubeadm]# kubectl taint node 192.168.1.12 node-role.kubernetes.io/master=:NoSchedule
node/192.168.1.12 tainted
4、驱逐已经运行的POD容器
kubectl drain --ignore-daemonsets 192.168.1.13
5、k8s集群node打污点,不被调度
kubectl cordon 192.168.1.13
kubectl taint nodes 192.168.1.13 node.kubernetes.io/unschedulable=:NoSchedule
6、k8s集群node去除污点
kubectl uncordon 192.168.1.13
或 kubectl taint nodes 192.168.1.13 node.kubernetes.io/unschedulable:NoSchedule-
7、将POD调度到指定工作节点的三种方法
第一:先创建label名称,再在deploy配置关联label名称
kubectl label node 192.168.1.13 learn.org/role=online
kubectl get node 192.168.1.13 --show-labels #查看节所有标签 nodeSelector为已创建label
spec:
nodeSelector:
learn.org/role: online
第二:nodeSelector配置为节点hostname
spec:
nodeSelector:
kubernetes.io/hostname: 192.168.1.13
第三:nodeName配置为节点IP
spec:
nodeName: 192.168.1.13
技术交流:https://edu.51cto.com/course/27452.html