我正在考虑将我的Kubernetes集群划分为专用节点区域,以供专用用户集专用,如here所述。我想知道污染节点如何影响DaemonSets
,包括对集群操作至关重要的节点(例如kube-proxy
,kube-flannel-ds-amd64
)?
documentation说,守护程序 pods 尊重污点和容忍度。但是如果是这样,系统如何安排例如当Pod(不在我的控制下,但由Kubernetes自己的kubectl taint nodes node-x zone=zone-y:NoSchedule
拥有)时,如果节点上的kube-proxy Pod不带有相应的容差,则该节点将受DaemonSet kube-proxy
污染。
到目前为止,我凭经验发现,Kubernetes 1.14会重新计划kube-proxy pod的时间,而无论如何(在被污染的node-x
上删除它之后),这似乎与文档相矛盾。另一方面,我自己的DaemonSet
似乎不是这种情况。当我在node-x
上杀死其pod时,只有在删除节点的异味之后(或者大概是在DaemonSet
内为pod的规范添加了公差之后),才重新安排其时间。
那么DaemonSet
和容忍度如何进行详细的互操作。是否可以对某些DaemonSet
(例如kube-proxy
,kube-flannel-ds-amd64
)进行特殊处理?
最佳答案
您的kube-proxy
和flannel守护程序集将在其 list 中定义许多容忍度,这意味着即使在受污染的节点上也将对其进行调度。
这是我的运河守护进程中的一对:
tolerations:
- effect: NoSchedule
operator: Exists
- key: CriticalAddonsOnly
operator: Exists
- effect: NoExecute
operator: Exists
以下是我的主节点之一的污点:
taints:
- effect: NoSchedule
key: node-role.kubernetes.io/controlplane
value: "true"
- effect: NoExecute
key: node-role.kubernetes.io/etcd
value: "true"
即使由于
NoSchedule
和NoExectue
污点而不会在主服务器上安排大多数工作负载,但由于该守护程序专门容忍了这些污点,因此将在此处运行运河 pods 。doc you already linked to详细介绍。
关于kubernetes - 存在容忍的Kubernetes DaemonSets,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57006394/