8.2. 为生产环境创建基础架构机器集
在生产部署中,建议您部署至少三个计算机器集来容纳基础架构组件。OpenShift Logging 和 Red Hat OpenShift Service Mesh 部署 Elasticsearch,这需要三个实例安装到不同的节点上。这些节点都可以部署到不同的可用区以实现高可用性。类似的配置需要三个不同的计算机器集,每个可用区都有一个。在没有多个可用区的全局 Azure 区域,您可以使用可用性集来确保高可用性。
8.2.1. 为不同的云创建基础架构机器集 复制链接链接已复制到粘贴板!
使用云的示例计算机器。
8.2.1.1. Alibaba Cloud 上计算机器设置自定义资源的 YAML 示例 复制链接链接已复制到粘贴板!
此 YAML 示例定义了一个在地区中指定的 Alibaba Cloud 区域中运行的计算机器,并创建通过 node-role.kubernetes.io/infra: ""
标记的节点。
在本例中,<infrastructure_id>
是基础架构 ID 标签,该标签基于您在置备集群时设定的集群 ID,而 <infra>
则是要添加的节点标签。
- 1 5 7
- 指定基于置备集群时所设置的集群 ID 的基础架构 ID。如果已安装 OpenShift CLI(
oc
)软件包,您可以通过运行以下命令来获取基础架构 ID:oc get -o jsonpath='{.status.infrastructureName}{"\n"}' infrastructure cluster
$ oc get -o jsonpath='{.status.infrastructureName}{"\n"}' infrastructure cluster
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 2 3 8 9
- 指定
<infra>
节点标签。 - 4 6 10
- 指定基础架构 ID、
<infra>
节点标签和区域。 - 11
- 指定要使用的镜像。使用集群的现有默认计算机器集中的镜像。
- 12
- 指定用于计算机器集的实例类型。
- 13
- 指定要用于计算机器设置的 RAM 角色的名称。使用安装程序在默认计算机器集中填充的值。
- 14
- 指定要放置机器的区域。
- 15
- 指定集群的资源组和类型。您可以使用安装程序在默认计算机器集中填充的值,或者指定不同的值。
- 16 18 20
- 指定要用于计算机器设置的标签。最少,您必须包含本例中显示的标签,以及适当的集群值。您可以包括额外的标签,包括安装程序根据需要在默认的计算机器集中填充的标签。
- 17
- 指定根磁盘的类型和大小。使用安装程序在其创建的默认计算机器集中填充的
category
值。如果需要,以 GB 为单位指定大小
的不同值。 - 19
- 指定
openshift-machine-api
命名空间中的用户数据 YAML 文件中的 secret 名称。使用安装程序在默认计算机器集中填充的值。 - 21
- 指定您所在地区(region)内要放置机器的区域 (zone) 。确保您的地区支持您指定的区域。
- 22
- 指定一个污点,以防止将用户工作负载调度到 infra 节点上。注意
在基础架构节点上添加
NoSchedule
污点后,在该节点上运行的现有 DNS pod 被标记为misscheduled
。您必须删除或在misscheduled
DNS pod 中添加容限。
Alibaba Cloud 使用统计的机器集参数
安装程序为 Alibaba Cloud 集群创建的默认计算机器集包括 Alibaba Cloud 用来跟踪用量统计的 nonessential 标签值。这些标签在 spec.template.spec.providerSpec.value
列表的 securityGroups
、tag
和 vSwitch
参数中填充。
在创建部署额外机器的计算机器集时,必须包含所需的 Kubernetes 标签。使用统计标签默认应用,即使它们没有在您创建的计算机器集中指定。您还可以根据需要包含其他标签。
以下 YAML 片段表示默认计算机器集中哪些标签是可选的,且需要哪些标签。
spec.template.spec.providerSpec.value.securityGroups
中的标签
spec.template.spec.providerSpec.value.tag
中的标签
spec.template.spec.providerSpec.value.vSwitch
中的标签
8.2.1.2. AWS 上计算机器设置自定义资源的 YAML 示例 复制链接链接已复制到粘贴板!
此 YAML 示例定义了一个在 us-east-1a
Amazon Web Services (AWS)区域中运行的计算机器集,并创建通过 node-role.kubernetes.io/infra: ""
标记的节点。
在本例中,<infrastructure_id>
是基础架构 ID 标签,该标签基于您在置备集群时设定的集群 ID,而 <infra>
则是要添加的节点标签。
- 1 3 5 11 14 16
- 指定基于置备集群时所设置的集群 ID 的基础架构 ID。如果已安装 OpenShift CLI,您可以通过运行以下命令来获取基础架构 ID:
oc get -o jsonpath='{.status.infrastructureName}{"\n"}' infrastructure cluster
$ oc get -o jsonpath='{.status.infrastructureName}{"\n"}' infrastructure cluster
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 2 4 8
- 指定基础架构 ID、
infra
角色节点标签和区域。 - 6 7 9
- 指定
infra
角色节点标签。 - 10
- 为 OpenShift Container Platform 节点的 AWS 区域指定有效的 Red Hat Enterprise Linux CoreOS (RHCOS) Amazon Machine Image (AMI)。如果要使用 AWS Marketplace 镜像,则必须从 AWS Marketplace 完成 OpenShift Container Platform 订阅来获取您所在地区的 AMI ID。
oc -n openshift-machine-api \ -o jsonpath='{.spec.template.spec.providerSpec.value.ami.id}{"\n"}' \ get machineset/<infrastructure_id>-<role>-<zone>
$ oc -n openshift-machine-api \ -o jsonpath='{.spec.template.spec.providerSpec.value.ami.id}{"\n"}' \ get machineset/<infrastructure_id>-<role>-<zone>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 17 18
- 可选:为集群指定自定义标签数据。例如,您可以通过指定
Email:admin-email@example.com
的name:value
对来添加管理员的电子邮件地址。注意也可以在
install-config.yml
文件中在安装过程中指定自定义标签。如果install-config.yml
文件和机器集包含具有相同name
数据的标签,则机器集的标签值优先于install-config.yml
文件中的标签值。 - 12
- 指定区域,如
us-east-1a
。 - 13
- 指定区域,如
us-east-1
。 - 15
- 指定基础架构 ID 和区域。
- 19
- 指定一个污点,以防止将用户工作负载调度到 infra 节点上。注意
在基础架构节点上添加
NoSchedule
污点后,在该节点上运行的现有 DNS pod 被标记为misscheduled
。您必须删除或在misscheduled
DNS pod 中添加容限。
在 AWS 上运行的机器集支持非保证的 Spot 实例。与 AWS 上的 On-Demand 实例相比,您可以使用 Spot 实例以较低价格来节约成本。通过将 spotMarketOptions
添加到 MachineSet
YAML 文件来配置 Spot 实例。
8.2.1.3. Azure 上计算机器设置自定义资源的 YAML 示例 复制链接链接已复制到粘贴板!
此 YAML 示例定义了一个在区域(region)的 1
Microsoft Azure 区域(zone)中运行的计算机器集,并创建通过 node-role.kubernetes.io/infra: ""
标记的节点。
在本例中,<infrastructure_id>
是基础架构 ID 标签,该标签基于您在置备集群时设定的集群 ID,而 infra
则是要添加的节点标签。
- 1
- 指定基于置备集群时所设置的集群 ID 的基础架构 ID。如果已安装 OpenShift CLI,您可以通过运行以下命令来获取基础架构 ID:
oc get -o jsonpath='{.status.infrastructureName}{"\n"}' infrastructure cluster
$ oc get -o jsonpath='{.status.infrastructureName}{"\n"}' infrastructure cluster
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以运行以下命令来获取子网:
oc -n openshift-machine-api \ -o jsonpath='{.spec.template.spec.providerSpec.value.subnet}{"\n"}' \ get machineset/<infrastructure_id>-worker-centralus1
$ oc -n openshift-machine-api \ -o jsonpath='{.spec.template.spec.providerSpec.value.subnet}{"\n"}' \ get machineset/<infrastructure_id>-worker-centralus1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以运行以下命令来获取 vnet:
oc -n openshift-machine-api \ -o jsonpath='{.spec.template.spec.providerSpec.value.vnet}{"\n"}' \ get machineset/<infrastructure_id>-worker-centralus1
$ oc -n openshift-machine-api \ -o jsonpath='{.spec.template.spec.providerSpec.value.vnet}{"\n"}' \ get machineset/<infrastructure_id>-worker-centralus1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 2
- 指定
infra
节点标签。 - 3
- 指定基础架构 ID、
infra
节点标签和地区。 - 4
- 指定计算机器设置的镜像详情。如果要使用 Azure Marketplace 镜像,请参阅"选择 Azure Marketplace 镜像"。
- 5
- 指定与实例类型兼容的镜像。安装程序创建的 Hyper-V 生成 V2 镜像具有
-gen2
后缀,而 V1 镜像则与没有后缀的名称相同。 - 6
- 指定要放置机器的区域。
- 7
- 可选:在机器集中指定自定义标签。在
<custom_tag_name>
字段中提供标签名称,并在<custom_tag_value>
字段中提供对应的标签值。 - 8
- 指定您所在地区(region)内要放置机器的区域 (zone) 。确保您的地区支持您指定的区域。
- 9
- 指定一个污点,以防止将用户工作负载调度到 infra 节点上。注意
在基础架构节点上添加
NoSchedule
污点后,在该节点上运行的现有 DNS pod 被标记为misscheduled
。您必须删除或在misscheduled
DNS pod 中添加容限。
在 Azure 上运行的机器集支持非保证的 Spot 虚拟机。与 Azure 上的标准虚拟机相比,您可以使用 Spot 虚拟机以较低价格节约成本。您可以通过将 spotVMOptions
添加到 MachineSet
YAML 文件来配置 Spot VM。
8.2.1.4. Azure Stack Hub 上计算机器设置自定义资源的 YAML 示例 复制链接链接已复制到粘贴板!
此 YAML 示例定义了一个在区域(region)的 1
Microsoft Azure 区域(zone)中运行的计算机器集,并创建通过 node-role.kubernetes.io/infra: ""
标记的节点。
在本例中,<infrastructure_id>
是基础架构 ID 标签,该标签基于您在置备集群时设定的集群 ID,而 <infra>
则是要添加的节点标签。
- 1 5 7 14 16 17 18 21
- 指定基于置备集群时所设置的集群 ID 的基础架构 ID。如果已安装 OpenShift CLI,您可以通过运行以下命令来获取基础架构 ID:
oc get -o jsonpath='{.status.infrastructureName}{"\n"}' infrastructure cluster
$ oc get -o jsonpath='{.status.infrastructureName}{"\n"}' infrastructure cluster
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以运行以下命令来获取子网:
oc -n openshift-machine-api \ -o jsonpath='{.spec.template.spec.providerSpec.value.subnet}{"\n"}' \ get machineset/<infrastructure_id>-worker-centralus1
$ oc -n openshift-machine-api \ -o jsonpath='{.spec.template.spec.providerSpec.value.subnet}{"\n"}' \ get machineset/<infrastructure_id>-worker-centralus1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以运行以下命令来获取 vnet:
oc -n openshift-machine-api \ -o jsonpath='{.spec.template.spec.providerSpec.value.vnet}{"\n"}' \ get machineset/<infrastructure_id>-worker-centralus1
$ oc -n openshift-machine-api \ -o jsonpath='{.spec.template.spec.providerSpec.value.vnet}{"\n"}' \ get machineset/<infrastructure_id>-worker-centralus1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 2 3 8 9 11 19 20
- 指定
<infra>
节点标签。 - 4 6 10
- 指定基础架构 ID、
<infra>
节点标签和地区。 - 12
- 指定一个污点,以防止将用户工作负载调度到 infra 节点上。注意
在基础架构节点上添加
NoSchedule
污点后,在该节点上运行的现有 DNS pod 被标记为misscheduled
。您必须删除或在misscheduled
DNS pod 中添加容限。 - 15
- 指定要放置机器的区域。
- 13
- 指定集群的可用性集。
- 22
- 指定您所在地区(region)内要放置机器的区域 (zone) 。确保您的地区支持您指定的区域。
在 Azure Stack Hub 上运行的机器集不支持非保证的 Spot 虚拟机。
8.2.1.5. IBM Cloud 上计算机器设置自定义资源的 YAML 示例 复制链接链接已复制到粘贴板!
此 YAML 示例定义了一个在地区中指定的 IBM Cloud 区域中运行的计算机器集,并创建通过 node-role.kubernetes.io/infra: ""
标记的节点。
在本例中,<infrastructure_id>
是基础架构 ID 标签,该标签基于您在置备集群时设定的集群 ID,而 <infra>
则是要添加的节点标签。
- 1 5 7
- 基于您在置备集群时设定的集群 ID 的基础架构 ID。如果已安装 OpenShift CLI,您可以通过运行以下命令来获取基础架构 ID:
oc get -o jsonpath='{.status.infrastructureName}{"\n"}' infrastructure cluster
$ oc get -o jsonpath='{.status.infrastructureName}{"\n"}' infrastructure cluster
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 2 3 8 9 16
<infra>
节点标签。- 4 6 10
- 基础架构 ID、
<infra>
节点标签和地区。 - 11
- 用于集群安装的自定义 Red Hat Enterprise Linux CoreOS(RHCOS)镜像。
- 12
- 您区域内的基础架构 ID 和区域来放置机器。确保您的地区支持您指定的区域。
- 13
- 指定 IBM Cloud 实例配置集。
- 14
- 指定要放置机器的区域。
- 15
- 在其中放置机器资源的资源组。这是安装时指定的现有资源组,或根据基础架构 ID 命名的安装程序创建资源组。
- 17
- VPC 名称。
- 18
- 指定您所在地区(region)内要放置机器的区域 (zone) 。确保您的地区支持您指定的区域。
- 19
- 污点(taint),以防止将用户工作负载调度到 infra 节点上。注意
在基础架构节点上添加
NoSchedule
污点后,在该节点上运行的现有 DNS pod 被标记为misscheduled
。您必须删除或在misscheduled
DNS pod 中添加容限。
8.2.1.6. GCP 上计算机器设置自定义资源的 YAML 示例 复制链接链接已复制到粘贴板!
此 YAML 示例定义了一个在 Google Cloud Platform (GCP) 中运行的计算机器集,并创建通过 node-role.kubernetes.io/infra: ""
标记的节点,其中 infra
是要添加的节点标签。
使用 OpenShift CLI 获取的值
在以下示例中,您可以使用 OpenShift CLI 获取集群的一些值。
- 基础架构 ID
<infrastructure_id>
字符串是基础架构 ID,它基于您在置备集群时设定的集群 ID。如果已安装 OpenShift CLI,您可以通过运行以下命令来获取基础架构 ID:oc get -o jsonpath='{.status.infrastructureName}{"\n"}' infrastructure cluster
$ oc get -o jsonpath='{.status.infrastructureName}{"\n"}' infrastructure cluster
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 镜像路径
<path_to_image>
字符串是用于创建磁盘的镜像的路径。如果已安装 OpenShift CLI,您可以通过运行以下命令来获取镜像的路径:oc -n openshift-machine-api \ -o jsonpath='{.spec.template.spec.providerSpec.value.disks[0].image}{"\n"}' \ get machineset/<infrastructure_id>-worker-a
$ oc -n openshift-machine-api \ -o jsonpath='{.spec.template.spec.providerSpec.value.disks[0].image}{"\n"}' \ get machineset/<infrastructure_id>-worker-a
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
GCP MachineSet
值示例
- 1
- 其中
<infrastructure_id>
是基础架构 ID,它基于您在置备集群时设定的集群 ID。 - 2
- 对于
<infra>
,指定<infra>
节点标签。 - 3
- 指定当前计算机器集中使用的镜像的路径。
要使用 GCP Marketplace 镜像,请指定要使用的功能:
-
OpenShift Container Platform:
https://www.googleapis.com/compute/v1/projects/redhat-marketplace-public/global/images/redhat-coreos-ocp-413-x86-64-202305021736
-
OpenShift Platform Plus:
https://www.googleapis.com/compute/v1/projects/redhat-marketplace-public/global/images/redhat-coreos-opp-413-x86-64-202305021736
-
OpenShift Kubernetes Engine:
https://www.googleapis.com/compute/v1/projects/redhat-marketplace-public/global/images/redhat-coreos-oke-413-x86-64-202305021736
-
OpenShift Container Platform:
- 4
- 可选:以
key:value
对的形式指定自定义元数据。有关用例,请参阅 GCP 文档,以查看设置自定义元数据。 - 5
- 对于
<project_name>
,请指定用于集群的 GCP 项目的名称。 - 6
- 指定一个污点,以防止将用户工作负载调度到 infra 节点上。注意
在基础架构节点上添加
NoSchedule
污点后,在该节点上运行的现有 DNS pod 被标记为misscheduled
。您必须删除或在misscheduled
DNS pod 中添加容限。
在 GCP 上运行的机器集支持非保证的可抢占虚拟机实例。与 GCP 上的普通实例相比,您可以使用抢占虚拟机实例以较低价格节约成本。您可以通过将 preemptible
添加到 MachineSet
YAML 文件来配置抢占 VM 实例。
8.2.1.7. Nutanix 上计算机器设置自定义资源的 YAML 示例 复制链接链接已复制到粘贴板!
此 YAML 示例定义了一个 Nutanix 计算机器集,它创建标记为 node-role.kubernetes.io/infra: ""
的节点。
在本例中,<infrastructure_id>
是基础架构 ID 标签,该标签基于您在置备集群时设定的集群 ID,而 <infra>
则是要添加的节点标签。
使用 OpenShift CLI 获取的值
在以下示例中,您可以使用 OpenShift CLI (oc
) 获取集群的一些值。
- 基础架构 ID
<infrastructure_id>
字符串是基础架构 ID,它基于您在置备集群时设定的集群 ID。如果已安装 OpenShift CLI,您可以通过运行以下命令来获取基础架构 ID:oc get -o jsonpath='{.status.infrastructureName}{"\n"}' infrastructure cluster
$ oc get -o jsonpath='{.status.infrastructureName}{"\n"}' infrastructure cluster
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 1
- 其中
<infrastructure_id>
是基础架构 ID,它基于您在置备集群时设定的集群 ID。 - 2
- 指定
<infra>
节点标签。 - 3
- 指定基础架构 ID、
<infra>
节点标签和区域。 - 4
- 集群自动扩展的注解。
- 5
- 注意
您必须在 OpenShift Container Platform 4.13 中使用
Legacy
引导类型。 - 6
- 指定一个或多个 Nutanix Prism 类别以应用到计算机器。此小节需要
key
和value
参数代表存在于 Prism Central 中的类别的键值对。有关类别的更多信息,请参阅类别管理。 - 7
- 指定 Nutanix Prism Element 集群配置。在本例中,集群类型是
uuid
,因此有一个uuid
小节。 - 8
- 指定要使用的镜像。使用集群的现有默认计算机器集中的镜像。
- 9
- 指定集群的内存量(以 Gi 为单位)。
- 10
- 指定用于集群的 Nutanix 项目。在本例中,项目类型是
name
,因此有一个name
小节。 - 11
- 指定系统磁盘大小(以 Gi 为单位)。
- 12
- 指定
openshift-machine-api
命名空间中的用户数据 YAML 文件中的 secret 名称。安装程序在默认计算机器集中填充时使用的值。 - 13
- 指定 vCPU 套接字数量。
- 14
- 指定每个插槽的 vCPU 数量。
- 15
- 指定一个污点,以防止将用户工作负载调度到 infra 节点上。注意
在基础架构节点上添加
NoSchedule
污点后,在该节点上运行的现有 DNS pod 被标记为misscheduled
。您必须删除或在misscheduled
DNS pod 中添加容限。
8.2.1.8. RHOSP 上计算机器设置自定义资源的 YAML 示例 复制链接链接已复制到粘贴板!
此 YAML 示例定义了一个在 Red Hat OpenStack Platform (RHOSP) 上运行的计算机器集,并创建通过 node-role.kubernetes.io/infra: ""
标记的节点。
在本例中,<infrastructure_id>
是基础架构 ID 标签,该标签基于您在置备集群时设定的集群 ID,而 <infra>
则是要添加的节点标签。
- 1 5 7 14 16 17 18 19
- 指定基于置备集群时所设置的集群 ID 的基础架构 ID。如果已安装 OpenShift CLI,您可以通过运行以下命令来获取基础架构 ID:
oc get -o jsonpath='{.status.infrastructureName}{"\n"}' infrastructure cluster
$ oc get -o jsonpath='{.status.infrastructureName}{"\n"}' infrastructure cluster
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 2 3 8 9 20
- 指定
<infra>
节点标签。 - 4 6 10
- 指定基础架构 ID 和
<infra>
节点标签。 - 11
- 指定一个污点,以防止将用户工作负载调度到 infra 节点上。注意
在基础架构节点上添加
NoSchedule
污点后,在该节点上运行的现有 DNS pod 被标记为misscheduled
。您必须删除或在misscheduled
DNS pod 中添加容限。 - 12
- 13
- 部署到多个网络需要。如果部署到多个网络,这个列表必须包含用作
primarySubnet
值的网络。 - 15
- 指定您要发布节点端点的 RHOSP 子网。通常,这与
install-config.yaml
文件中的machineSubnet
值相同。
8.2.1.9. RHV 上计算机器设置自定义资源的 YAML 示例 复制链接链接已复制到粘贴板!
此 YAML 示例定义了一个在 RHV 上运行的计算机器集,并创建标记为 node-role.kubernetes.io/<node_role>: ""
的节点。
在本例中,<infrastructure_id>
是基础架构 ID 标签,该标签基于您在置备集群时设定的集群 ID,而 <role>
则是要添加的节点标签。
- 1 7 9
- 指定基于置备集群时所设置的集群 ID 的基础架构 ID。如果已安装 OpenShift CLI(
oc
)软件包,您可以通过运行以下命令来获取基础架构 ID:oc get -o jsonpath='{.status.infrastructureName}{"\n"}' infrastructure cluster
$ oc get -o jsonpath='{.status.infrastructureName}{"\n"}' infrastructure cluster
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 2 3 10 11 13
- 指定要添加的节点标签。
- 4 8 12
- 指定基础架构 ID 和节点标签。这两个字符串不能超过 35 个字符。
- 5
- 指定要创建的机器数量。
- 6
- 机器的选择器。
- 14
- 指定此虚拟机实例所属的 RHV 集群的 UUID。
- 15
- 指定用于创建机器的 RHV VM 模板。
- 16
- 将这个选项设置为
false
可启用磁盘预分配。默认值是true
。对于块存储域,将sparse
设置为true
且format
设置为raw
不可用。raw
格式将整个虚拟磁盘写入底层物理磁盘。 - 17
- 可以设置为
cow
或raw
。默认值为cow
。cow
格式针对虚拟机进行了优化。注意在文件存储域上分配磁盘将零写入文件。这实际上可能没有被预先分配磁盘,具体取决于底层存储。
- 18
- 可选:CPU 字段包含 CPU 配置,包括套接字、内核和线程。
- 19
- 可选:指定虚拟机的插槽数量。
- 20
- 可选:指定每个插槽的内核数。
- 21
- 可选:指定每个内核的线程数量。
- 22
- 可选:指定虚拟机的内存大小(MiB)。
- 23
- 可选:指定虚拟机保证内存的大小(以 MiB 为单位)。这是保证不会被气球机制消耗掉的内存量。如需更多信息,请参阅 Memory Ballooning 和 Optimization Settings Explained。注意
如果您使用比 RHV 4.4.8 更早的版本,请参阅 Red Hat Virtualization 集群上的 OpenShift 保证内存要求。
- 24
- 可选:节点的 Root 磁盘。
- 25
- 可选:指定可引导磁盘的大小(GiB)。
- 26
- 可选:指定计算节点的磁盘的存储域 UUID。如果没有提供,则计算节点在与控制节点相同的存储域上创建。(默认)
- 27
- 可选:虚拟机网络接口列表。如果包含此参数,OpenShift Container Platform 会丢弃来自模板中的所有网络接口并创建新接口。
- 28
- 可选:指定 vNIC 配置集 ID。
- 29
- 指定包含 RHV 凭证的 secret 对象的名称。
- 30
- 可选:指定实例优化的工作负载类型。这个值会影响
RHV VM
参数。支持的值包括:desktop
、server
(默认)、high_performance
。high_performance
提高了虚拟机的性能。存在限制,例如,您无法使用图形控制台访问虚拟机。如需更多信息,请参阅虚拟机管理指南中的配置高性能虚拟机、模板和池。 - 31
- 可选: AutoPinningPolicy 定义自动设置 CPU 和 NUMA 设置的策略,包括固定到此实例的主机。支持的值:
none
,resize_and_pin
。如需更多信息,请参阅《 虚拟机管理指南 》中的 设置 NUMA 节点。 - 32
- 33
- 可选:应用到虚拟机的关联性组名称列表。oVirt 中必须存在关联性组。
因为 RHV 在创建虚拟机时使用模板,如果您没有为可选参数指定值,RHV 将使用模板中指定的参数值。
8.2.1.10. vSphere 上计算机器设置自定义资源的 YAML 示例 复制链接链接已复制到粘贴板!
此 YAML 示例定义了一个在 VMware vSphere 上运行的计算机器集,并创建标记为 node-role.kubernetes.io/infra: ""
的节点。
在本例中,<infrastructure_id>
是基础架构 ID 标签,该标签基于您在置备集群时设定的集群 ID,而 <infra>
则是要添加的节点标签。
- 1 3 5
- 指定基于置备集群时所设置的集群 ID 的基础架构 ID。如果已安装 OpenShift CLI(
oc
)软件包,您可以通过运行以下命令来获取基础架构 ID:oc get -o jsonpath='{.status.infrastructureName}{"\n"}' infrastructure cluster
$ oc get -o jsonpath='{.status.infrastructureName}{"\n"}' infrastructure cluster
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 2 4 8
- 指定基础架构 ID 和
<infra>
节点标签。 - 6 7 9
- 指定
<infra>
节点标签。 - 10
- 指定一个污点,以防止将用户工作负载调度到 infra 节点上。注意
在基础架构节点上添加
NoSchedule
污点后,在该节点上运行的现有 DNS pod 被标记为misscheduled
。您必须删除或在misscheduled
DNS pod 中添加容限。 - 11
- 指定要将计算机器设置为的 vSphere VM 网络。此虚拟机网络必须是集群中其他计算机器所处的位置。
- 12
- 指定要使用的 vSphere 虚拟机模板,如
user-5ddjd-rhcos
。 - 13
- 指定要将计算机器设置为的 vCenter Datacenter。
- 14
- 指定要部署计算机器的 vCenter Datastore。
- 15
- 指定 vCenter 中 vSphere 虚拟机文件夹的路径,如
/dc1/vm/user-inst-5ddjd
。 - 16
- 指定虚拟机的 vSphere 资源池。
- 17
- 指定 vCenter 服务器 IP 或完全限定域名。
8.2.2. 创建计算机器集 复制链接链接已复制到粘贴板!
除了安装程序创建的计算机器集外,您还可以创建自己的来动态管理您选择的特定工作负载的机器计算资源。
先决条件
- 部署一个 OpenShift Container Platform 集群。
-
安装 OpenShift CLI(
oc
)。 -
以具有
cluster-admin
权限的用户身份登录oc
。
流程
创建一个包含计算机器集自定义资源(CR)示例的新 YAML 文件,并将其命名为
<file_name>.yaml
。确保设置
<clusterID>
和<role>
参数值。可选:如果您不确定要为特定字段设置哪个值,您可以从集群中检查现有计算机器集:
要列出集群中的计算机器集,请运行以下命令:
oc get machinesets -n openshift-machine-api
$ oc get machinesets -n openshift-machine-api
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要查看特定计算机器集自定义资源 (CR) 的值,请运行以下命令:
oc get machineset <machineset_name> \ -n openshift-machine-api -o yaml
$ oc get machineset <machineset_name> \ -n openshift-machine-api -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
运行以下命令来创建
MachineSet
CR:oc create -f <file_name>.yaml
$ oc create -f <file_name>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令,查看计算机器集列表:
oc get machineset -n openshift-machine-api
$ oc get machineset -n openshift-machine-api
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 当新的计算机器集可用时,
DESIRED
和CURRENT
的值会匹配。如果 compute 机器集不可用,请等待几分钟,然后再次运行命令。
8.2.3. 创建基础架构节点 复制链接链接已复制到粘贴板!
请参阅为安装程序置备的基础架构环境创建基础架构机器集,或为其 control plane 节点由机器 API 管理的任何集群创建基础架构机器集。
集群的基础架构系统(也称为 infra 节点)
的要求已被置备。安装程序只为 control plane 和 worker 节点提供置备。Worker 节点可以通过标记来指定为基础架构节点或应用程序(也称为 app
)。
流程
向您要充当应用程序节点的 worker 节点添加标签:
oc label node <node-name> node-role.kubernetes.io/app=""
$ oc label node <node-name> node-role.kubernetes.io/app=""
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 向您要充当基础架构节点的 worker 节点添加标签:
oc label node <node-name> node-role.kubernetes.io/infra=""
$ oc label node <node-name> node-role.kubernetes.io/infra=""
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查相关节点现在是否具有
infra
角色或app
角色:oc get nodes
$ oc get nodes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建默认的集群范围节点选择器。默认节点选择器应用到在所有命名空间中创建的 pod。这会创建一个与 pod 上任何现有节点选择器交集的交集,这会额外限制 pod 的选择器。
重要如果默认节点选择器键与 pod 标签的键冲突,则不会应用默认节点选择器。
但是,不要设置可能会导致 pod 变得不可调度的默认节点选择器。例如,当 pod 的标签被设置为不同的节点角色(如
node-role.kubernetes.io/infra=""
)时,将默认节点选择器设置为特定的节点角色(如node-role.kubernetes.io/master=""
)可能会导致 pod 无法调度。因此,将默认节点选择器设置为特定节点角色时要小心。您还可以使用项目节点选择器来避免集群范围节点选择器键冲突。
编辑
Scheduler
对象:oc edit scheduler cluster
$ oc edit scheduler cluster
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用适当的节点选择器添加
defaultNodeSelector
字段:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 默认情况下,此节点选择器示例将容器集部署到
us-east-1
区域的节点。
- 保存文件以使改变生效。
现在,您可以将基础架构资源移到新标记的 infra
节点。
8.2.4. 为基础架构机器创建机器配置池 复制链接链接已复制到粘贴板!
如果需要基础架构机器具有专用配置,则必须创建一个 infra 池。
流程
向您要分配为带有特定标签的 infra 节点的节点添加标签:
oc label node <node_name> <label>
$ oc label node <node_name> <label>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc label node ci-ln-n8mqwr2-f76d1-xscn2-worker-c-6fmtx node-role.kubernetes.io/infra=
$ oc label node ci-ln-n8mqwr2-f76d1-xscn2-worker-c-6fmtx node-role.kubernetes.io/infra=
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建包含 worker 角色和自定义角色作为机器配置选择器的机器配置池:
cat infra.mcp.yaml
$ cat infra.mcp.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意自定义机器配置池从 worker 池中继承机器配置。自定义池使用任何针对 worker 池的机器配置,但增加了部署仅针对自定义池的更改的功能。由于自定义池从 worker 池中继承资源,对 worker 池的任何更改也会影响自定义池。
具有 YAML 文件后,您可以创建机器配置池:
oc create -f infra.mcp.yaml
$ oc create -f infra.mcp.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查机器配置,以确保基础架构配置成功:
oc get machineconfig
$ oc get machineconfig
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您应该会看到一个新的机器配置,带有
rendered-infra-*
前缀。可选:要部署对自定义池的更改,请创建一个机器配置,该配置使用自定义池名称作为标签,如本例中的
infra
。请注意,这不是必须的,在此包括仅用于指示目的。这样,您可以只应用特定于 infra 节点的任何自定义配置。注意创建新机器配置池后,MCO 会为该池生成一个新的呈现配置,以及该池重启的关联节点以应用新配置。
创建机器配置:
cat infra.mc.yaml
$ cat infra.mc.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 将您添加的标签作为
nodeSelector
添加到节点。
将机器配置应用到 infra-labeled 节点:
oc create -f infra.mc.yaml
$ oc create -f infra.mc.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
确认您的新机器配置池可用:
oc get mcp
$ oc get mcp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME CONFIG UPDATED UPDATING DEGRADED MACHINECOUNT READYMACHINECOUNT UPDATEDMACHINECOUNT DEGRADEDMACHINECOUNT AGE infra rendered-infra-60e35c2e99f42d976e084fa94da4d0fc True False False 1 1 1 0 4m20s master rendered-master-9360fdb895d4c131c7c4bebbae099c90 True False False 3 3 3 0 91m worker rendered-worker-60e35c2e99f42d976e084fa94da4d0fc True False False 2 2 2 0 91m
NAME CONFIG UPDATED UPDATING DEGRADED MACHINECOUNT READYMACHINECOUNT UPDATEDMACHINECOUNT DEGRADEDMACHINECOUNT AGE infra rendered-infra-60e35c2e99f42d976e084fa94da4d0fc True False False 1 1 1 0 4m20s master rendered-master-9360fdb895d4c131c7c4bebbae099c90 True False False 3 3 3 0 91m worker rendered-worker-60e35c2e99f42d976e084fa94da4d0fc True False False 2 2 2 0 91m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在本例中,worker 节点被改为一个 infra 节点。