网站html5自适应屏幕大小,天翼电子商务有限公司,帝国网站后台编辑器没有了,wordpress主题转discuz1.影响pod调度的因素
nodeName 节点名
resources 资源限制
hostNetwork 宿主机网络
污点
污点容忍
Pod亲和性
Pod反亲和性
节点亲和性 2.污点
通常是作用于worker节点上#xff0c;其可以影响pod的调度
语法#xff1a;key[value]:effect
effect:[ɪˈfek…1.影响pod调度的因素
nodeName 节点名
resources 资源限制
hostNetwork 宿主机网络
污点
污点容忍
Pod亲和性
Pod反亲和性
节点亲和性 2.污点
通常是作用于worker节点上其可以影响pod的调度
语法key[value]:effect
effect:[ɪˈfekt]
effect必须是NoSchedule、PreferNoSchedule或NoExecute。
NoSchedule: [noʊ,ˈskedʒuːl]
该节点不再接收新的Pod调度但不会驱赶已经调度到该节点的Pod。
PreferNoSchedule: [prɪˈfɜːr,noʊ,ˈskedʒuː] 该节点可以接受调度但会尽可能将Pod调度到其他节点换句话说让该节点的调度优先级降低啦。
NoExecute:[ˈnoʊ,eksɪkjuːt] 该节点不再接收新的Pod调度与此同时会立刻驱逐已经调度到该节点的Pod。
1.查看节点污点
kubectl describe nodes 2.创建10个pod,发现pod调度在232和233节点上 3.给k8s232打上污点
kubectl taint node k8s232 wudianmingziwudian:NoExecute 4.查看污点kubectl describe nodes|grep Taints发现此时已经有污点 5.查看pod信息发现此时所有pod都调度到k8s233上 6.移除污点kubectl taint node k8s232 wudianmingzi-
7.移除污点从新创建pod之后pod能重新调度到pod上
命令总结
查看污点
kubectl describe nodes|grep Taints
制造污点帮助信息
kubectl taint --help
制造污点
kubectl taint node 节点名 keyvalue:NoExecute
value可省略
移除污点
kubectl taint node k8s232 key-NoExecute 移除现在节点所有的pod
NoSchedule 不移除但是不会有新的pod
PreferNoSchedule 优先级降低3.污点容忍
pod.spec.tolerations
spec:# 配置Pod的污点容忍tolerations:# 指定污点的key# 若不指定key则operator的值必须为Exists表示匹配所有的key- key: qq# 指定污点的valuevalue: ww# 指定污点的effect有效值为: NoSchedule, PreferNoSchedule,NoExecute# 若不指定则匹配所有的影响度。effect: NoExecute# 表示key和value的关系有效值为Exists Equal。# Exists:# 表示存在指定的key即可若配置则要求value字段为空。# Equal:# 默认值表示keyvalue。operator: Equal- key: weboperator: Exists- key: node-role.kubernetes.io/masteroperator: Exists# 如果不指定keyvalueeffect仅配置operator: Exists表示无视任何污点!#- operator: Exists例1匹配所有key为webvalue值为空effect为NoExecute的污点
tolerations:
- key: weboperator: Exists # 当value为空时使用Exists表示key存在即可effect: NoExecute
例2匹配所有key为test值为version1effect为所有的污点
tolerations:
- key: testoperator: Equal # 当指定了具体的value时使用Equal进行匹配value: version1effect: * # *表示匹配所有可能的effect值
例3忽视所有污点
tolerations:
- operator: Exists # 使用Exists且不指定key和effect表示容忍所有污点补充实现pod调度到特定两个pod上
给节点打标签
kubectl label nodes k8s231 keyvalue
选择调度的节点所有节点忽视所有污点如上例三配置
spec:nodeSelector:keyvalue...
注意:节点必须包含所有这里的标签才会被选上
所有节点删除标签
kubectl label nodes --all key-
但是这样子当两个节点比如节点a,keyvalue1,key2value2此时无法满足所有引入了亲和性。 4.节点亲和性
查看相关信息 三种类型节点亲和性pod亲和性pod反亲和性
节点亲和性
节点亲和性会匹配各个节点的标签如果匹配成功则会调度到这个节点如下代码pod会调度到标签为eatshaokao或者eatlongxia的节点上
affinity:# 定义节点的亲和性nodeAffinity:# 定义硬限制requiredDuringSchedulingIgnoredDuringExecution:# 定义节点的匹配条件nodeSelectorTerms:# 基于节点的标签进行匹配- matchExpressions:# 指定标签的key- key: eat# 指定标签的valuevalues:- shaokao- longxia# 指定key和value之间的对应关系operator: In# 指定key和value之间的对应关系有效值如下:# In:# key的值必须在vlaues内。要求values不能为空。# NotIn:# 和In相反。要求values不能为空。# Exists:# 只要存在指定key即可vlaues的值必须为空。# DoesNotExist:# 只要不存在指定key即可vlaues的值必须为空。# Gt:# 表示大于的意思values的值会被解释为整数。# Lt:# 表示小于的意思values的值会被解释为整数。
如图 5.pod亲和性与反亲和性
pod的亲和性当拓扑域topologyKey匹配的节点标签的key匹配成功则所有pod都往节点标签是这个key的节点调度比方说在广州深圳佛山三地都有服务器想让所有pod都调度到其中一地。如何实现 1.给不同地址的节点打标签
kubectl label node k8s231 placeguangzhou
kubectl label node k8s232 placeshenzhun
kubectl label node k8s233 placefoshan 如图所示通过设置节点亲和性拓扑域topologyKey设为标签的key(这里为place),即可完成上述需求。
此时所有pod都会调度到其中一地。
反亲和性将podAddinity改为podAntiAffinity其他不变此时每个topologyKey标签只能调度一个pod。若没有足够的节点每个节点的标签place的值应该与其他不同则剩下的pod将会处于penging状态。 6.DaemonSet
DaemonSet概述: DaemonSet确保全部worker节点上运行一个Pod的副本。 DaemonSet的一些典型用法 (1)在每个节点上运行集群守护进程(flannel等) (2)在每个节点上运行日志收集守护进程(flumefilebeatfluentd等) (3)在每个节点上运行监控守护进程zabbix agentnode_exportor等 温馨提示: (1)当有新节点加入集群时也会为新节点新增一个Pod; (2)当有节点从集群移除时这些Pod也会被回收; (3)删除DaemonSet将会删除它创建的所有Pod; (4)如果节点被打了污点的话且DaemonSet中未定义污点容忍则Pod并不会被调度到该节点上;(flannel案例)