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分类

\'k8s的label、taint、Affinity简聊使用与区别_label\'

Affiniry详细使用示例可以参考https://www.jianshu.com/p/f11a23c6d718

以上是关于k8s的labeltaintAffinity简聊使用与区别的主要内容,如果未能解决你的问题,请参考以下文章

简聊APP测试

k8s的主要功能

k8s 网络三

深入剖析k8s中的存储

k8s部署-48-k8s中如何选择使用哪个api,开发一个k8s的容器管理平台的思路是什么?

k8s常用命令