kubernetes第七天

打印 上一主题 下一主题

主题 1730|帖子 1730|积分 5200

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
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 wudianmingzi=wudian:NoExecute

4.查看污点kubectl describe nodes|grep Taints,发现此时已经有污点

5.查看pod信息,发现此时全部pod都调理到k8s233上

6.移除污点:kubectl taint node k8s232 wudianmingzi-
7.移除污点,重新创建pod之后,pod能重新调理到pod上
命令总结:
  1. 查看污点:
  2. kubectl describe nodes|grep Taints
  3. 制造污点帮助信息
  4. kubectl taint --help
  5. 制造污点
  6. kubectl taint node 节点名 key=value:NoExecute
  7. value可省略
  8. 移除污点
  9. kubectl taint node k8s232 key-
  10. NoExecute  移除现在节点所有的pod
  11. NoSchedule 不移除,但是不会有新的pod
  12. PreferNoSchedule  优先级降低
复制代码
3.污点容忍
pod.spec.tolerations
  1. spec:
  2.       # 配置Pod的污点容忍
  3.       tolerations:
  4.         # 指定污点的key
  5.         # 若不指定key,则operator的值必须为Exists,表示匹配所有的key
  6.       - key: qq
  7.         # 指定污点的value
  8.         value: ww
  9.         # 指定污点的effect,有效值为: NoSchedule, PreferNoSchedule,NoExecute
  10.         # 若不指定则匹配所有的影响度。
  11.         effect: NoExecute
  12.         # 表示key和value的关系,有效值为Exists, Equal。
  13.         #    Exists:
  14.         #      表示存在指定的key即可,若配置,则要求value字段为空。
  15.         #    Equal:
  16.         #      默认值,表示key=value。
  17.         operator: Equal
  18.       - key: web
  19.         operator: Exists
  20.       - key: node-role.kubernetes.io/master
  21.         operator: Exists
  22.       # 如果不指定key,value,effect,仅配置"operator: Exists"表示无视任何污点!
  23.       #- operator: Exists
复制代码
例1:匹配全部key为web,value值为空,effect为NoExecute的污点
  1. tolerations:
  2. - key: "web"
  3.   operator: "Exists"  # 当value为空时,使用Exists表示key存在即可
  4.   effect: "NoExecute"
复制代码
例2:匹配全部key为test,值为version1,effect为全部的污点
  1. tolerations:
  2. - key: "test"
  3.   operator: "Equal"  # 当指定了具体的value时,使用Equal进行匹配
  4.   value: "version1"
  5.   effect: "*"  # "*"表示匹配所有可能的effect值
复制代码
例3:忽视全部污点
  1. tolerations:
  2. - operator: "Exists"  # 使用Exists且不指定key和effect,表示容忍所有污点
复制代码
增补:实现pod调理到特点两个pod上
给节点打标签:
kubectl label nodes k8s231 key=value
选择调理的节点(全部节点忽视全部污点,如上例三配置)
  1. spec:
  2.   nodeSelector:
  3.      key=value
  4.      ...
  5. 注意:节点必须包含所有这里的标签,才会被选上
复制代码
全部节点删除标签
kubectl label nodes --all  key-
但是这样子当两个节点,比如节点a,key=value1,key2=value2,此时无法满足,全部引入了亲和性。

4.节点亲和性
查看干系信息

三种类型:节点亲和性,pod亲和性,pod反亲和性
节点亲和性:
  1. affinity:
  2.         # 定义节点的亲和性
  3.         nodeAffinity:
  4.           # 定义硬限制
  5.           requiredDuringSchedulingIgnoredDuringExecution:
  6.             # 定义节点的匹配条件
  7.             nodeSelectorTerms:
  8.               # 基于节点的标签进行匹配
  9.             - matchExpressions:
  10.                 # 指定标签的key
  11.               - key: hobby
  12.                 # 指定标签的value
  13.                 values:
  14.                 - eat
  15.                 - sleep
  16.                 # 指定key和value之间的对应关系,有效值如下:
  17.                 #   In:
  18.                 #     key的值必须在vlaues内。要求values不能为空。
  19.                 #   NotIn:
  20.                 #     和In相反。要求values不能为空。
  21.                 #   Exists:
  22.                 #     只要存在指定key即可,vlaues的值必须为空。
  23.                 #   DoesNotExist:
  24.                 #     只要不存在指定key即可,vlaues的值必须为空。
  25.                 #   Gt:
  26.                 #     表示大于的意思,values的值会被解释为整数。
  27.                 #   Lt:
  28.                 #     表示小于的意思,values的值会被解释为整数。
  29.                 operator: In
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

泉缘泉

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表