3.7. 为自动化控制器 pod 指定专用节点
在专用节点上运行控制 pod 非常重要,以便分隔控制 pod 和自动化作业 pod,并防止这两种类型的 pod 间的资源争用。这种分离有助于维护控制 pod 及其提供的服务的稳定性和可靠性,而不会因为资源限制而造成降级风险。
在此参考环境中,重点是最大程度提高可以运行的自动化作业的数量。这意味着,在 Red Hat OpenShift 环境中可用的 3 个 worker 节点,一个 worker 节点专用于运行 control pod,而其他 2 个 worker 节点则用于执行自动化作业。
如果专用 worker 节点要停机,则只使用一个 worker 节点来运行 control pod 的潜在风险,因为当专用 worker 节点要停机时,该服务不会启动。要补救这种情况,请减少运行自动化作业的 worker 节点数量,或添加额外的 worker 节点,以便在 Red Hat OpenShift 集群中运行额外的控制 pod 副本是可行的选项。
3.7.1. 为自动化控制器将控制 pod 分配给特定的 worker 节点 复制链接链接已复制到粘贴板!
要将 control pod 分配给 Red Hat OpenShift 中的特定节点,使用 pod 规格中的 node_selector 字段以及 topology_spread_constraints 字段的组合。node_selector 字段允许您指定节点必须匹配的标签条件,才能有资格托管该 pod。例如,如果您有一个带有标签 aap_node_type: control 的节点,在 pod 规格中指定以下内容以将 pod 分配给此节点:
spec:
...
node_selector: |
aap_node_type: control
spec:
...
node_selector: |
aap_node_type: control
topology_spread_constraints 将可在标签 aap_node_type: control 设置为 1 的节点上的 pod (maxSkew)的最大数量。topologyKey 设置为 kubernetes.io/hostname,它是指示节点主机名的内置标签。whenUnsatisfiable 设置被设置为 ScheduleAnyway,允许在没有足够的节点满足约束时调度 pod。labelSelector 与带有标签 aap_node_type: control 的 pod 匹配。这样做的影响是 Red Hat OpenShift 优先选择每个节点调度单个控制器 pod。但是,如果存在比可用的 worker 节点更多的副本请求,如果有足够的资源可用,Red Hat OpenShift 允许在同一 worker 节点上调度多个控制器 pod。
tolerations 部分指定 pod 只能调度到带有标签 dedicated: AutomationController 的节点上,容限的效果被设为 NoSchedule,确保 pod 不会调度到没有所需标签的节点。这用于与 topology_spread_contstraints 结合使用,不仅指定如何在节点之间分散 pod,还用于指示它们可以调度到哪些节点。
节点标签和污点的应用程序可在 附录 C, 将标签和污点应用到 Red Hat OpenShift 节点 中找到。为 spec 文件添加节点选择器、拓扑约束和容限的步骤在 第 6 章 安装自动化控制器 中显示。