|
本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。 |
处理污点和容忍
对 Kubernetes 节点进行“污点”处理会导致在该节点上运行的 Pods 被排斥。
除非 Pods 对该节点的污点具有 toleration,否则它们将在集群中的其他节点上运行。
使用 nodeSelector 可以使 Pods 对某些节点产生亲和性。
两者都为 Pod 运行在哪些节点上提供了选择。
Rancher 日志堆栈中的默认实现
默认情况下,Rancher 会使用 cattle.io/os=linux 给所有 Linux 节点添加污点,而不会对 Windows 节点进行污点处理。
日志堆栈 Pods 对该污点具有 tolerations,这使它们能够在 Linux 节点上运行。
此外,大多数日志堆栈 Pods 仅在 Linux 上运行,并且添加了 nodeSelector 以确保它们在 Linux 节点上运行。
此示例 Pod YAML 文件展示了如何将 nodeSelector 与容忍一起使用:
apiVersion: v1
kind: Pod
# metadata...
spec:
# containers...
tolerations:
- key: cattle.io/os
operator: "Equal"
value: "linux"
effect: NoSchedule
nodeSelector:
kubernetes.io/os: linux
在上述示例中,我们确保 Pod 仅在 Linux 节点上运行,并为所有 Linux 节点上的污点添加了 toleration。
您可以对 Rancher 现有的污点或您自己的自定义污点执行相同操作。
为自定义污点添加 NodeSelector 设置和容忍度
如果您想添加自己的 nodeSelector 设置,或者想为额外的污点添加 tolerations,您可以将以下内容传递给图表的值。
tolerations:
# insert tolerations...
nodeSelector:
# insert nodeSelector...
这些值将同时添加设置到 fluentd、fluentbit 和 logging-operator 容器。
本质上,这些是日志堆栈中所有 Pods 的全局设置。
但是,如果您想为 仅 fluentbit 容器添加容忍,您可以将以下内容添加到图表的值中。
fluentbit_tolerations:
# insert tolerations list for fluentbit containers only...