k8s的labeltaintAffinity简聊使用与区别
Posted sjlinux
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了k8s的labeltaintAffinity简聊使用与区别相关的知识,希望对你有一定的参考价值。
label(标签):node上打了标签,在yaml文件里使用nodeSelector来选择标签,pod只会部署在有该标签的node上。
给node添加标签:kubectl label nodes nodename(eg:k8s-node01) label_key=label_value(eg:ssd=true)
查看所有node上有哪些标签:kubectl get nodes --show-labels
查看某个node上有哪些标签:kubectl get nodes nodename(eg:k8s-node01) --show-labels
删除node上的标签:kubectl label nodes nodename(eg:k8s-node01) label_key-(ssd-)
修改node上的标签:kubectl label nodes nodename(eg:k8s-node01) label_key=label_value(eg:mem=true) --overwrite
taint(污点):node上打了污点,在yaml文件里没有容忍(toleration)该污点的pod是不能部署到该node上的。
给node添加污点:kubectl taint nodes nodename(eg:k8s-node01) taint_key=taint_value:effect(eg:ssd=true:NoSchedule)
查看某个node上有哪些污点:kubectl describe nodes nodename(eg:k8s-node01) | grep Taint
查看所有node上有哪些污点:kubectl describe nodes | grep Taint
删除node上的污点:kubectl label nodes nodename(eg:k8s-node01) taint_key-(ssd-)
修改node上的污点:kubectl taint nodes nodename(eg:k8s-node01) taint_key=taint_value:effect(eg:ssd=true:NoExecute) --overwrite
effect可取以下三种值:
NoSchedule:禁止调度pod到该node,已经在该node的pod不受影响
NoExecute:禁止调度pod到该node,对于已经存在该node上的pod,没有容忍会立即被驱逐(可以使用tolerationSeconds来设置一段时间后驱逐)
PreferNoSchedule: 尽量不将pod调度到该node上。
toleration(容忍):与taint配合使用,只有容忍了污点,pod才有可能部署到有污点的node上。
toleration配置解析:
完全匹配:
tolerations:
- key: ssd
operator: Equal
value: true
effect: NoSchedule
不完全匹配:
tolerations:
- effect: NoSchedule
operator: Exists
#当operetor时Exists时,只可taint的key值,不能配置value值
节点不健康,600秒后再驱逐(即使容忍了污点node.kubernetes.io/unreachable,但是配置了tolerationSeconds,在规定时间内还是会驱逐)
tolerations:
- key: "node.kubernetes.io/unreachable"
operator: "Exists"
effect: "NoExecute"
tolerationSeconds: 600
Affinity(亲和力):当相互依赖的两个pod尽量或必须部署到同一个节点或同一区域(亲和力);当同一个应用的不同pod副本或同一项目的应用尽量或必须部署到不同的node上或不同区域(反亲和力)
NodeAffinity: 节点亲和力/反亲和力
PodAffinity: pod亲和力
PodAntiAffinity: pod反亲和力
PS:亲和力选择的key和value是pod或node上的标签。
topologyKey(拓扑域):是与pod亲和力一起使用的,topologyKey的值为node上label的key,key和value相同的为同一个域,常用于划分不同机房或网段等。
Affinity分类
Affiniry详细使用示例可以参考https://www.jianshu.com/p/f11a23c6d718
以上是关于k8s的labeltaintAffinity简聊使用与区别的主要内容,如果未能解决你的问题,请参考以下文章