roo*_*099 7 kubernetes daemonset
我正在考虑将我的 Kubernetes 集群分区为专用节点区域,供专用用户组专用,如此处所述。我想知道污染节点会如何影响DaemonSets,包括那些对集群操作至关重要的节点(例如kube-proxy,kube-flannel-ds-amd64)?
文档称守护进程 pod 尊重污点和容忍度。kubectl taint nodes node-x zone=zone-y:NoSchedule但如果是这样,当 pod(不在我的控制之下,而是由 Kubernetes 自己拥有DaemonSet kube-proxy)不具有相应的容忍度时,系统如何在受污染的节点上调度 kube-proxy pod 。
到目前为止,我凭经验发现,Kubernetes 1.14 无论如何都会重新安排 kube-proxy pod(在我在 tainted 上删除它之后node-x),这似乎与文档相矛盾。另一方面,我自己的情况似乎并非如此DaemonSet。当我杀死它的 pod 时,node-x只有在我删除节点的污点之后(或者可能是在我向 pod 内的 pod 规范添加了容忍度之后DaemonSet),它才会被重新安排。
那么DaemonSets 和 tolerations 详细来说是如何互操作的。难道某些DaemonSets(比如kube-proxy,kube-flannel-ds-amd64)被特殊对待了?
您的kube-proxy和 flannel 守护进程集将在其清单中定义许多容忍度,这意味着即使在受污染的节点上,它们也会被调度。
以下是我的 canal 守护进程中的几个:
tolerations:
- effect: NoSchedule
operator: Exists
- key: CriticalAddonsOnly
operator: Exists
- effect: NoExecute
operator: Exists
Run Code Online (Sandbox Code Playgroud)
以下是我的主节点之一的污点:
taints:
- effect: NoSchedule
key: node-role.kubernetes.io/controlplane
value: "true"
- effect: NoExecute
key: node-role.kubernetes.io/etcd
value: "true"
Run Code Online (Sandbox Code Playgroud)
NoSchedule尽管由于其污点,大多数工作负载不会安排在主服务器上NoExectue,但 Canal Pod 仍将在那里运行,因为守护进程集专门容忍这些污点。
您已经链接到的文档有详细说明。
| 归档时间: |
|
| 查看次数: |
16735 次 |
| 最近记录: |