发布时间:2023-08-04 08:00
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 # 创建label
kubectl label node 192.168.1.13 learn.org/role- # 删除label
kubectl get node 192.168.1.13 --show-labels #查看节所有标签
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
name: nginx-volume
name: nginx-volume
namespace: default
spec:
replicas: 1
selector:
matchLabels:
name: nginx-volume
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
type: RollingUpdate
template:
metadata:
labels:
name: nginx-volume
spec:
nodeSelector:
learn.org/role: online
第二:nodeSelector配置为节点hostname
spec:
template:
spec:
nodeSelector:
kubernetes.io/hostname: 192.168.1.13
第三:nodeName配置为节点IP
spec:
template:
spec:
nodeName: 192.168.1.13