This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.4.2. 为 OpenShift Virtualization 组件指定节点
通过配置节点放置规则来指定要部署 OpenShift Virtualization Operator、工作负载和控制器的节点。
您可以在安装 OpenShift Virtualization 后为一些组件配置节点放置,但如果要为工作负载配置节点放置,则一定不能存在虚拟机。
4.2.1. 关于虚拟化组件的节点放置 复制链接链接已复制到粘贴板!
您可能想要自定义 OpenShift Virtualization 在什么位置部署其组件,以确保:
- 虚拟机仅部署到设计为用于虚拟化工作负载的节点上。
- Operator 仅在基础架构节点上部署。
- 某些节点不会受到 OpenShift Virtualization 的影响。例如,您有与集群中运行的虚拟化不相关的工作负载,希望这些工作负载与 OpenShift Virtualization 分离。
4.2.1.1. 如何将节点放置规则应用到虚拟化组件 复制链接链接已复制到粘贴板!
您可以通过直接编辑对应对象或使用 Web 控制台为组件指定节点放置规则。
-
对于 Operator Lifecycle Manager(OLM)部署的 OpenShift Virtualization Operator,直接编辑 OLM
Subscription
对象。目前,您无法使用 Web 控制台为Subscription
对象配置节点放置规则。 -
对于 OpenShift Virtualization Operator 部署的组件,直接编辑
HyperConverged
对象,或在 OpenShift Virtualization 安装过程中使用 Web 控制台进行配置。 对于 hostpath 置备程序,直接编辑
HostPathProvisioner
对象,或使用 web 控制台进行配置。警告您必须将 hostpath 置备程序和虚拟化组件调度到同一节点上。否则,使用 hostpath 置备程序的虚拟化 pod 无法运行。
根据对象,您可以使用以下一个或多个规则类型:
nodeSelector
- 允许将 Pod 调度到使用您在此字段中指定的键值对标记的节点上。节点必须具有与所有列出的对完全匹配的标签。
关联性
- 可让您使用更宽松的语法来设置与 pod 匹配的规则。关联性也允许在规则应用方面更加精细。例如,您可以指定规则是首选项,而不是硬要求,因此如果不满足该规则,仍可以调度 pod。
容限(tolerations)
- 允许将 pod 调度到具有匹配污点的节点。如果某个节点有污点(taint),则该节点只接受容许该污点的 pod。
4.2.1.2. 放置在 OLM 订阅对象中的节点 复制链接链接已复制到粘贴板!
要指定 OLM 部署 OpenShift Virtualization Operator 的节点,在 OpenShift Virtualization 安装过程中编辑 Subscription
对象。您可以在 spec.config
字段中包含节点放置规则,如下例所示:
- 1
config
字段支持nodeSelector
和tolerations
,但它不支持关联性
。
4.2.1.3. HyperConverged 对象中的节点放置 复制链接链接已复制到粘贴板!
要指定 OpenShift Virtualization 部署其组件的节点,您可以在 OpenShift Virtualization 安装过程中创建的 HyperConverged Cluster 自定义资源(CR)文件中包含 nodePlacement
对象。您可以在 spec.infra
和 spec.workloads
字段中包含 nodePlacement
,如下例所示:
- 1
nodePlacement
字段支持nodeSelector
、affinity
和tolerations
字段。
4.2.1.4. HostPathProvisioner 对象中的节点放置 复制链接链接已复制到粘贴板!
您可以在安装 hostpath 置备程序时创建的 HostPathProvisioner
对象的 spec.workload
字段中配置节点放置规则。
- 1
workload
字段支持nodeSelector
、affinity
和tolerations
字段。
4.2.2. 清单示例 复制链接链接已复制到粘贴板!
以下示例 YAML 文件使用 nodePlacement
、affinity(关联性)
和 tolerations(容限)
对象为 OpenShift Virtualization 组件自定义节点放置。
4.2.2.1. Operator Lifecycle Manager Subscription 对象 复制链接链接已复制到粘贴板!
4.2.2.1.1. 示例:在 OLM 订阅对象中使用 nodeSelector 的节点放置 复制链接链接已复制到粘贴板!
在本例中,配置了 nodeSelector
,OLM 将 OpenShift Virtualization Operator 放置到标记为 example.io/example-infra-key = example-infra-value
的节点上。
4.2.2.1.2. 示例:将容限放置在 OLM 订阅对象中 复制链接链接已复制到粘贴板!
在本例中,为 OLM 部署 OpenShift Virtualization Operator 保留的节点使用 key=virtualization:NoSchedule
污点标记。只有具有与容限匹配的 pod 才会调度到这些节点。
4.2.2.2. HyperConverged 对象 复制链接链接已复制到粘贴板!
在本例中,配置了 nodeSelector
,将基础架构资源放置在带有 example.io/example-infra-key = example-infra-value = example-infra-value
的节点上,把工作负载放置在带有 example.io/example-workloads-key = example-workloads-value
的节点上。
4.2.2.2.2. 示例:在 HyperConverged Cluster CR 中使用关联性进行节点放置 复制链接链接已复制到粘贴板!
在本例中,配置了 affinity
,将基础架构资源放置在带有 example.io/example-infra-key = example-value
的节点上,把工作负载放置在带有 example.io/example-workloads-key = example-workloads-value
的节点上。对于工作负载,最好使用八个以上 CPU 的节点,但如果它们不可用,仍可调度 pod。
4.2.2.2.3. 示例:在 HyperConverged Cluster CR 中使用容限进行节点放置 复制链接链接已复制到粘贴板!
在本例中,为 OpenShift Virtualization 组件保留的节点使用 key=virtualization:NoSchedule
污点标记。只有具有与容限匹配的 pod 才会调度到这些节点。
4.2.2.3. HostPathProvisioner 对象 复制链接链接已复制到粘贴板!
在本例中,配置了 nodeSelector
,以便将工作负载放置到带有 example.io/example-workloads-key = example-workloads-value
的节点上。