我正在考虑将我的Kubernetes集群划分为专用节点区域,以供专用用户集专用,如here所述。我想知道污染节点如何影响DaemonSets,包括对集群操作至关重要的节点(例如kube-proxykube-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-proxykube-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"

即使由于NoScheduleNoExectue污点而不会在主服务器上安排大多数工作负载,但由于该守护程序专门容忍了这些污点,因此将在此处运行运河 pods 。

doc you already linked to详细介绍。

关于kubernetes - 存在容忍的Kubernetes DaemonSets,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57006394/

10-15 21:48