宁波外贸网站推广,wordpress怎么开发app,黑马程序员培训机构,万网怎么创建网站目录
一、Taint#xff08;污点#xff09;
1.污点的组成
2.污点的设置、查看和去除
3.污点实验#xff1a;
二、Toleration#xff08;容忍#xff09;
1.容忍设置的方案
2.容忍实验#xff1a; Taint 和 toleration 相互配合#xff0c;可以用来避免 pod 被分配…目录
一、Taint污点
1.污点的组成
2.污点的设置、查看和去除
3.污点实验
二、Toleration容忍
1.容忍设置的方案
2.容忍实验 Taint 和 toleration 相互配合可以用来避免 pod 被分配到不合适的节点上。每个节点上都可以应用一个或多个 taint 这表示对于那些不能容忍这些 taint 的 pod是不会被该节点接受的。如果将 toleration 应用于 pod 上则表示这些 pod 可以但不要求被调度到具有匹配 taint 的节点上。
一、Taint污点 使用 kubectl taint 命令可以给某个 Node 节点设置污点Node 被设置上污点之后就和 Pod 之间存在了一种相斥的关系可以让 Node 拒绝 Pod 的调度执行甚至将 Node 已经存在的 Pod 驱逐出去
1.污点的组成 keyvalue:effect 每个污点有一个 key 和 value 作为污点的标签其中 value 可以为空effect 描述污点的作用。当前 taint effect 支持如下三个选项
NoSchedule表示 k8s 将不会将 Pod 调度到具有该污点的 Node 上PreferNoSchedule表示 k8s 将尽量避免将 Pod 调度到具有该污点的 Node 上NoExecute表示 k8s 将不会将 Pod 调度到具有该污点的 Node 上同时会将 Node 上已经存在的 Pod 驱逐出去。
2.污点的设置、查看和去除
kubectl taint nodes node1 key1value1:NoSchedule# 设置污点kubectl describe node node-name# 节点说明中查找 Taints 字段kubectl taint nodes node1 key1:NoSchedule-# 去除污点
3.污点实验
kubectl describe node k8s-master01#主节点自带污点所以master节点不能被调度 kubectl taint node k8s-master01 node-role.kubernetes.io/master:NoSchedule-#取消master节点的污点kubectl describe node k8s-master01#查看污点已被删除kubectl create deployment taint_deploy --imagenginx:latest#创建名为taint_deploy的deployment使用nginx:latest作为pod内容器创建的镜像。kubectl scale deployment taint_deploy --replicas20#设置刚刚创建的deployment的pod副本数为20kubectl get pod -o wide#观察刚刚创建的pod因为取消了master节点的污点所以pod可以被调度到master节点运行了#master节点没有污点的情况下运行daemonsetmaster节点也会运行一个daemonset。
二、Toleration容忍 设置了污点的 Node 将根据 taint 的 effectNoSchedule、PreferNoSchedule、NoExecute 和 Pod 之间产生互斥的关系Pod 将在一定程度上不会被调度到 Node 上。 但我们可以在 Pod 上设置容忍 ( Toleration ) 意思是设置了容忍的 Pod 将可以容忍污点的存在可以被调度到存在污点的 Node 上。
pod.spec.tolerations
1.容忍设置的方案
tolerations: #容忍第一种方案
- key: key1 #指定污点的key1operator: Equal #运算符等于value: value1 #value是污点value1effect: NoSchedule #策略是NoSchedule
#这种写法的含义是keyvalueeffect必须全部匹配有一个不一样都匹配不到。第二种方案
- key: key1operator: Equalvalue: value1effect: NoExecutetolerationSeconds: 3600 #容忍3600秒第三种方案
- key: key2 #只要匹配到key和dffectvalue是什么无所谓。operator: Existseffect: NoSchedule例
Ⅰ、当不指定 key 值时表示容忍所有的污点 key**
tolerations:
- operator: Exists #只写一个存在只要有污点就能容忍Ⅱ、当不指定 effect 值时表示容忍所有的污点作用**
tolerations:
- key: keyoperator: Exists #只要key匹配到了其他的无所谓Ⅲ、有多个 Master 存在时防止资源浪费可以如下设置
kubectl taint nodes Node-Name node-role.kubernetes.io/master:PreferNoSchedule2.容忍实验
kubectl taint node k8s-master01 node-role.kibernetes.io/master:NoSchedule #将主节点的污点恢复回来kubectl get daemonset -n kube-system#查看有哪些daemonset资源kubectl get daemonset -n kube-system calico-node -o yaml#查看calico的容忍#策略NoSchedule运算符Exists存在key和value无所谓#value和策略无所谓#还能容忍NoExecute策略的value和key无所谓kubectl describe node k8s-master01#查询master节点的keyvim tolerations_daemonset.yamlapiVersion: apps/v1
kind: DaemonSet
metadata:name: tolerations-daemonsetlabels:app: daemonset
spec:selector:matchLabels:name: tolerations-daemonset-podtemplate:metadata:labels:name: tolerations-daemonset-podspec:tolerations:- key: node-role.kubernetes.io/master #master节点的污点的key。operator: Exists #匹配规则为exists存在key就容忍。containers:- name: tolerations-daemonset-podimage: nginx:latestimagePullPolicy: IfNotPresentkubectl apply -f tolerations_daemonset.yamlkubectl get daemonset#查看创建的daemonsetkubectl get pod -o wide#查看daemonset的pod是否调度在master上。