Kubernetes Tolerations -为什么我们需要在pod上定义“Effect”

n3h0vuf2  于 2023-08-03  发布在  Kubernetes
关注(0)|答案(2)|浏览(124)

当定义污点和公差时,我们将污点定义如下:

kubectl taint nodes node1 key1=value1:NoSchedule

字符串
现在,任何不具有如下定义的容差的pod将不会在node1上调度。定义了容差的节点将在此节点上进行调度。但是,为什么我们需要在POD上定义NoSchedule?它已在节点上定义。

tolerations:
- key: "key1"
  operator: "Equal"
  value: "value1"
  effect: "NoSchedule"


如果出现以下情况,会产生什么影响:
1.节点效应为NoSchedule

kubectl taint nodes node1 key1=value1:NoSchedule


1.但POD容差为NoExecute

tolerations:
- key: "key1"
  operator: "Equal"
  value: "value1"
  effect: "NoExecute"


注意:我理解它不仅试图匹配“污点值”,而且还匹配“污点效果”。但是,是否也有匹配“污点效应”的用例呢?
effect(string)Effect表示要匹配的污点效果。空表示匹配所有污点效果。指定时,允许的值为NoSchedule、PreferNoSchedule和NoExecute。
谢啦,谢啦

yrdbyhpb

yrdbyhpb1#

如果出现以下情况,会产生什么影响:
1.节点效应为NoSchedule
kubectl污染节点node 1 key 1 = value 1:NoSchedule
1.但POD容差为NoExecute
Pod将不会被调度到它无法容忍的节点上,例如。您的示例pod将不会被调度到被NoSchdule污染的节点上,因为它只允许NoExecute
...use case for matching "taint effect"
不确定这里是什么意思;但是可以通过仅指定密钥和值来容忍具有任何效果的密钥。

gojuced7

gojuced72#

我也有同样的问题,我偶然发现了这篇文章。我的一些想法帮助我理解它:
1.污点和容忍应该一起工作from the docs 3rd paragrah
1.效果描述了Pod-节点关系,因此它们必须就采取什么动作达成一致。
如果出现以下情况,会产生什么影响:
节点效果为NoSchedule kubectl污染节点node 1 key 1 = value 1:NoSchedule
但POD容差为NoExecute
因此,在这种情况下,pod和节点没有关于做什么的协议,所以它与根本没有macthing key=value的效果相同,所以pod根本不会被调度。
为什么我们需要在POD上定义NoSchedule?它已在节点上定义。
你不需要指定pod的效果,如果你希望pod和节点有相同的效果。
但是你可能想以不同的方式管理另一个pod,我认为当多重污染和容忍开始起作用时,这更有意义。阅读上面文档的例子对我有帮助。
这就是我所理解的。有什么误会就告诉我。

相关问题