|NO.Z.00201|——————————|CloudNative|——|KuberNetes&高级调度.V04|——|污点容忍.v02|NoSchedule不会被调度但不强制|
一、Taint&Toleration:NoSchedule不会被调度,但不强制
### --- 为master01打一个污点,NoSchedule类型,不会被调度,但不强制迁移
~~~ 查看Pod部署在那些节点上
[root@k8s-master01 ~]# kubectl get po -owide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
busybox 1/1 Running 126 9d 172.25.244.211 k8s-master01 <none> <none>
demo-nginx-67ff7f7bb5-984xl 2/2 Running 0 3h35m 172.25.244.227 k8s-master01 <none> <none>
demo-nginx-67ff7f7bb5-sz9nv 2/2 Running 0 3h35m 172.18.195.32 k8s-master03 <none> <none>
hello-1619696760-vbpgl 0/1 Completed 0 4m39s 172.27.14.238 k8s-node02 <none> <none>
hello-1619696880-scmq6 0/1 Completed 0 2m46s 172.27.14.239 k8s-node02 <none> <none>
hello-1619697000-tqzlj 0/1 Completed 0 44s 172.27.14.240 k8s-node02 <none> <none>
### --- 给master01节点打一个污点;采用NoSchedule类型,
~~~ 只是让这个节点不被调度,但是不会被强制迁移。
~~~ 注:这个NoSchedule类型的是不会强制迁移Pod的
[root@k8s-master01 ~]# kubectl taint node k8s-master01 master-test=test:NoSchedule
node/k8s-master01 tainted
二、NoSchedule污点验证
### --- 污点验证:为master01节点打污点,让master01节点不被调用
~~~ 查看master01上有什么label
~~~ 注:所有的节点都是由这个标签的kubernetes.io/hostname
[root@k8s-master01 ~]# kubectl get node --show-labels
NAME STATUS ROLES AGE VERSION LABELS
k8s-master01 Ready <none> 19d v1.20.0 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-master01,kubernetes.io/os=linux,node.kubernetes.io/node=
~~~ # 可以看到这两个容器显示Pending状态,
~~~ 因为它不符合我们之前打的那个污点NoSchedule,不会被调度
[root@k8s-master01 ~]# kubectl edit deploy demo-nginx
restartPolicy: Always // 此配置下加入如下参数
nodeSelector: // 约束不让部署在master01节点
kubernetes.io/hostname: k8s-master01
[root@k8s-master01 ~]# kubectl get po -owide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
demo-nginx-7f784c74d8-h2788 0/2 Pending 0 4s <none> <none> <none> <none>
demo-nginx-7f784c74d8-tnzdq 0/2 Pending 0 5s <none> <none> <none> <none>
### --- 容忍验证:为master01节点配置容忍,让匹配条件的可以部署在master01节点。
~~~ 为其加入容忍查看结果,会被容忍;可以被部署在master01上面
~~~ 注:这个配置就是告诉deployment,我可以容忍这个污点,
~~~ 这个污点的key是master-test,value:是test,影响是NoSchedule:
~~~ 注:符合这个条件的可以去匹配,可以部署在这个节点上面
[root@k8s-master01 ~]# kubectl edit deploy demo-nginx
nodeSelector:
kubernetes.io/hostname: k8s-master01// 污点添加的参数
restartPolicy: Always // 下列添加如下参数
tolerations: // 容忍参数
- key: "master-test"
value: "test"
effect: "NoSchedule"
operator: "Equal"
### --- 验证是否可以部署在master01节点
~~~ 注:可以看到它部署在master01节点上面了
[root@k8s-master01 ~]# kubectl get po -owide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
demo-nginx-6fddc76f8d-9cjzb 0/2 ContainerCreating 0 13s <none> k8s-master01 <none> <none>
demo-nginx-6fddc76f8d-qz8sh 0/2 ContainerCreating 0 13s <none> k8s-master01 <none> <none>
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
——W.S.Landor
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了