12.3. control plane 机器集配置


这些 YAML 片断示例显示 control plane 机器集自定义资源(CR)的基本结构,以及供应商规格和故障域配置的特定于平台的示例。

12.3.1. control plane 机器集自定义资源的 YAML 示例

ControlPlaneMachineSet CR 的基础构建方式与所有平台相同。

ControlPlaneMachineSet CR YAML 文件示例

apiVersion: machine.openshift.io/v1
kind: ControlPlaneMachineSet
metadata:
  name: cluster 1
  namespace: openshift-machine-api
spec:
  replicas: 3 2
  selector:
    matchLabels:
      machine.openshift.io/cluster-api-cluster: <cluster_id> 3
      machine.openshift.io/cluster-api-machine-role: master
      machine.openshift.io/cluster-api-machine-type: master
  state: Active 4
  strategy:
    type: RollingUpdate 5
  template:
    machineType: machines_v1beta1_machine_openshift_io
    machines_v1beta1_machine_openshift_io:
      failureDomains:
        platform: <platform> 6
        <platform_failure_domains> 7
      metadata:
        labels:
          machine.openshift.io/cluster-api-cluster: <cluster_id>
          machine.openshift.io/cluster-api-machine-role: master
          machine.openshift.io/cluster-api-machine-type: master
      spec:
        providerSpec:
          value:
            <platform_provider_spec> 8

1
指定 ControlPlaneMachineSet CR 的名称,即 集群。不要更改这个值。
2
指定 control plane 机器的数量。仅支持具有三个 control plane 机器的集群,因此 replicas 值为 3。不支持水平扩展。不要更改这个值。
3
指定基于置备集群时所设置的集群 ID 的基础架构 ID。在创建 ControlPlaneMachineSet CR 时,您必须指定这个值。如果已安装 OpenShift CLI(oc)软件包,您可以通过运行以下命令来获取基础架构 ID:
$ oc get -o jsonpath='{.status.infrastructureName}{"\n"}' infrastructure cluster
4
指定 Operator 的状态。当状态为 Inactive 时,Operator 无法正常工作。您可以通过将值设置为 Active 来激活 Operator。
重要

在激活 Operator 前,您必须确保 ControlPlaneMachineSet CR 配置适合您的集群要求。有关激活 Control Plane Machine Set Operator 的更多信息,请参阅"使用 control plane 机器集入门"。

5
指定集群的更新策略。允许的值是 OnDeleteRollingUpdate。默认值为 RollingUpdate。有关更新策略的更多信息,请参阅"更新 control plane 配置"。
6
指定云供应商平台名称。不要更改这个值。
7
为集群指定 <platform_failure_domains> 配置。本节的格式和值特定于提供程序。如需更多信息,请参阅您的云供应商的故障域配置示例。
注意

VMware vSphere 不支持故障域。

8
为集群指定 <platform_provider_spec> 配置。本节的格式和值特定于提供程序。如需更多信息,请参阅云供应商的供应商规格示例。
特定于供应商的配置

control plane 机器集资源的 <platform_provider_spec><platform_failure_domains> 部分是特定于供应商的。请参阅集群的 YAML 示例:

12.3.2. 用于配置 Amazon Web Services 集群的 YAML 示例

control plane 机器集 CR 的一些部分是特定于供应商的。以下示例 YAML 片断显示 Amazon Web Services (AWS)集群的供应商规格和故障域配置。

12.3.2.1. AWS 供应商规格示例

当您为现有集群创建 control plane 机器集时,供应商规格必须与安装程序创建的 control plane 机器自定义资源 (CR) 中的 providerSpec 配置匹配。您可以省略 CR 的故障域部分中设置的任何字段。

在以下示例中,<cluster_id> 是基础架构 ID,它基于您在置备集群时设定的集群 ID。如果已安装 OpenShift CLI,您可以通过运行以下命令来获取基础架构 ID:

$ oc get -o jsonpath='{.status.infrastructureName}{"\n"}' infrastructure cluster

AWS providerSpec 值示例

providerSpec:
  value:
    ami:
      id: ami-<ami_id_string> 1
    apiVersion: machine.openshift.io/v1beta1
    blockDevices:
    - ebs: 2
        encrypted: true
        iops: 0
        kmsKey:
          arn: ""
        volumeSize: 120
        volumeType: gp3
    credentialsSecret:
      name: aws-cloud-credentials 3
    deviceIndex: 0
    iamInstanceProfile:
      id: <cluster_id>-master-profile 4
    instanceType: m6i.xlarge 5
    kind: AWSMachineProviderConfig 6
    loadBalancers: 7
    - name: <cluster_id>-int
      type: network
    - name: <cluster_id>-ext
      type: network
    metadata:
      creationTimestamp: null
    metadataServiceOptions: {}
    placement: 8
      region: <region> 9
    securityGroups:
    - filters:
      - name: tag:Name
        values:
        - <cluster_id>-master-sg 10
    subnet: {} 11
    userDataSecret:
      name: master-user-data 12

1
指定集群的 Red Hat Enterprise Linux CoreOS (RHCOS) Amazon Machine Images (AMI) ID。AMI 必须与集群属于同一区域。如果要使用 AWS Marketplace 镜像,则必须从 AWS Marketplace 完成 OpenShift Container Platform 订阅来获取您所在地区的 AMI ID。
2
指定加密的 EBS 卷的配置。
3
指定集群的 secret 名称。不要更改这个值。
4
指定 AWS Identity and Access Management (IAM )实例配置集。不要更改这个值。
5
为 control plane 指定 AWS 实例类型。
6
指定云供应商平台类型。不要更改这个值。
7
指定集群的内部 (int) 和外部 (ext) 负载均衡器。
注意

您可以在私有 OpenShift Container Platform 集群中省略外部 (ext) 负载均衡器参数。

8
此参数在故障域中配置,此处显示了一个空值。如果为此参数指定的值与故障域中的值不同,Operator 会使用故障域中的值覆盖它。
9
指定集群的 AWS 区域。
10
指定 control plane 机器安全组。
11
此参数在故障域中配置,此处显示了一个空值。如果为此参数指定的值与故障域中的值不同,Operator 会使用故障域中的值覆盖它。
12
指定 control plane 用户数据 secret。不要更改这个值。

12.3.2.2. AWS 故障域配置示例

故障域的 control plane 机器集概念与现有 可用区(AZ) 的 AWS 概念类似。ControlPlaneMachineSet CR 尽可能将 control plane 机器分散到多个故障域中。

在 control plane 机器集中配置 AWS 故障域时,您必须指定可用区名称和要使用的子网。

AWS 故障域值示例

failureDomains:
  aws:
  - placement:
      availabilityZone: <aws_zone_a> 1
    subnet: 2
      filters:
      - name: tag:Name
        values:
        - <cluster_id>-private-<aws_zone_a> 3
      type: Filters 4
  - placement:
      availabilityZone: <aws_zone_b> 5
    subnet:
      filters:
      - name: tag:Name
        values:
        - <cluster_id>-private-<aws_zone_b> 6
      type: Filters
  platform: AWS 7

1
为第一个故障域指定一个 AWS 可用区。
2
指定子网配置。在本例中,子网类型是 Filters,因此有一个 filters 片段。
3
使用基础架构 ID 和 AWS 可用性区域指定第一个故障域的子网名称。
4
指定子网类型。允许的值包括:ARNFiltersID。默认值为 Filters
5
使用基础架构 ID 和 AWS 可用域指定额外故障域的子网名称。
6
为额外的故障域指定集群的基础架构 ID 和 AWS 可用区。
7
指定云供应商平台名称。不要更改这个值。

12.3.3. 用于配置 Google Cloud Platform 集群的 YAML 示例

control plane 机器集 CR 的一些部分是特定于供应商的。以下示例 YAML 片断显示 Google Cloud Platform (GCP)集群的供应商规格和故障域配置。

12.3.3.1. GCP 供应商规格示例

当您为现有集群创建 control plane 机器集时,供应商规格必须与安装程序创建的 control plane 机器自定义资源 (CR) 中的 providerSpec 配置匹配。您可以省略 CR 的故障域部分中设置的任何字段。

使用 OpenShift CLI 获取的值

在以下示例中,您可以使用 OpenShift CLI 获取集群的一些值。

基础架构 ID

<cluster_id> 字符串是基础架构 ID,它基于您在置备集群时设定的集群 ID。如果已安装 OpenShift CLI,您可以通过运行以下命令来获取基础架构 ID:

$ oc get -o jsonpath='{.status.infrastructureName}{"\n"}' infrastructure cluster
镜像路径

<path_to_image> 字符串是用于创建磁盘的镜像的路径。如果已安装 OpenShift CLI,您可以通过运行以下命令来获取镜像的路径:

$ oc -n openshift-machine-api \
  -o jsonpath='{.spec.template.machines_v1beta1_machine_openshift_io.spec.providerSpec.value.disks[0].image}{"\n"}' \
  get ControlPlaneMachineSet/cluster

GCP providerSpec 值示例

apiVersion: machine.openshift.io/v1
kind: ControlPlaneMachineSet
metadata:
  name: cluster
  namespace: openshift-machine-api
spec:
# ...
  template:
# ...
      spec:
        providerSpec:
          value:
            apiVersion: machine.openshift.io/v1beta1
            canIPForward: false
            credentialsSecret:
              name: gcp-cloud-credentials 1
            deletionProtection: false
            disks:
            - autoDelete: true
              boot: true
              image: <path_to_image> 2
              labels: null
              sizeGb: 200
              type: pd-ssd
            kind: GCPMachineProviderSpec 3
            machineType: e2-standard-4
            metadata:
              creationTimestamp: null
            metadataServiceOptions: {}
            networkInterfaces:
            - network: <cluster_id>-network
              subnetwork: <cluster_id>-master-subnet
            projectID: <project_name> 4
            region: <region> 5
            serviceAccounts: 6
            - email: <cluster_id>-m@<project_name>.iam.gserviceaccount.com
              scopes:
              - https://www.googleapis.com/auth/cloud-platform
            shieldedInstanceConfig: {}
            tags:
            - <cluster_id>-master
            targetPools:
            - <cluster_id>-api
            userDataSecret:
              name: master-user-data 7
            zone: "" 8

1
指定集群的 secret 名称。不要更改这个值。
2
指定用于创建磁盘的镜像的路径。

要使用 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
3
指定云供应商平台类型。不要更改这个值。
4
指定用于集群的 GCP 项目的名称。
5
指定集群的 GCP 区域。
6
指定一个单个服务帐户。不支持多个服务帐户。
7
指定 control plane 用户数据 secret。不要更改这个值。
8
此参数在故障域中配置,此处显示了一个空值。如果为此参数指定的值与故障域中的值不同,Operator 会使用故障域中的值覆盖它。

12.3.3.2. GCP 故障域配置示例

故障域的 control plane 机器集概念与现有 GCP 概念区(zone)类似。ControlPlaneMachineSet CR 尽可能将 control plane 机器分散到多个故障域中。

在 control plane 机器集中配置 GCP 故障域时,您必须指定要使用的区名称。

GCP 故障域值示例

failureDomains:
  gcp:
  - zone: <gcp_zone_a> 1
  - zone: <gcp_zone_b> 2
  - zone: <gcp_zone_c>
  - zone: <gcp_zone_d>
  platform: GCP 3

1
为第一个故障域指定 GCP 区。
2
指定额外的故障域。其它故障域的方式相同。
3
指定云供应商平台名称。不要更改这个值。

12.3.4. 用于配置 Microsoft Azure 集群的 YAML 示例

control plane 机器集 CR 的一些部分是特定于供应商的。以下示例 YAML 片断显示 Azure 集群的供应商规格和故障域配置。

12.3.4.1. Azure 供应商规格示例

当您为现有集群创建 control plane 机器集时,供应商规格必须与安装程序创建的 control plane Machine CR 中的 providerSpec 配置匹配。您可以省略 CR 的故障域部分中设置的任何字段。

在以下示例中,<cluster_id> 是基础架构 ID,它基于您在置备集群时设定的集群 ID。如果已安装 OpenShift CLI,您可以通过运行以下命令来获取基础架构 ID:

$ oc get -o jsonpath='{.status.infrastructureName}{"\n"}' infrastructure cluster

Azure providerSpec 值示例

providerSpec:
  value:
    acceleratedNetworking: true
    apiVersion: machine.openshift.io/v1beta1
    credentialsSecret:
      name: azure-cloud-credentials 1
      namespace: openshift-machine-api
    diagnostics: {}
    image: 2
      offer: ""
      publisher: ""
      resourceID: /resourceGroups/<cluster_id>-rg/providers/Microsoft.Compute/galleries/gallery_<cluster_id>/images/<cluster_id>-gen2/versions/412.86.20220930 3
      sku: ""
      version: ""
    internalLoadBalancer: <cluster_id>-internal 4
    kind: AzureMachineProviderSpec 5
    location: <region> 6
    managedIdentity: <cluster_id>-identity
    metadata:
      creationTimestamp: null
      name: <cluster_id>
    networkResourceGroup: <cluster_id>-rg
    osDisk: 7
      diskSettings: {}
      diskSizeGB: 1024
      managedDisk:
        storageAccountType: Premium_LRS
      osType: Linux
    publicIP: false
    publicLoadBalancer: <cluster_id> 8
    resourceGroup: <cluster_id>-rg
    subnet: <cluster_id>-master-subnet 9
    userDataSecret:
      name: master-user-data 10
    vmSize: Standard_D8s_v3
    vnet: <cluster_id>-vnet
    zone: "" 11

1
指定集群的 secret 名称。不要更改这个值。
2
指定 control plane 机器集的镜像详情。
3
指定与实例类型兼容的镜像。安装程序创建的 Hyper-V 生成 V2 镜像具有 -gen2 后缀,而 V1 镜像则与没有后缀的名称相同。
4
指定 control plane 的内部负载均衡器。此字段可能无法预先配置,但在 ControlPlaneMachineSet 和 control plane Machine CR 中都是必需的。
5
指定云供应商平台类型。不要更改这个值。
6
指定要放置 control plane 机器的区域。
7
指定 control plane 的磁盘配置。
8
指定 control plane 的公共负载均衡器。
注意

您可以在具有用户定义的出站路由的私有 OpenShift Container Platform 集群上省略 publicLoadBalancer 参数。

9
指定 control plane 的子网。
10
指定 control plane 用户数据 secret。不要更改这个值。
11
此参数在故障域中配置,此处显示了一个空值。如果为此参数指定的值与故障域中的值不同,Operator 会使用故障域中的值覆盖它。

12.3.4.2. Azure 故障域配置示例

故障域的 control plane 机器集概念与 Azure 可用区的现有 Azure 概念类似。ControlPlaneMachineSet CR 尽可能将 control plane 机器分散到多个故障域中。

在 control plane 机器集中配置 Azure 故障域时,您必须指定可用区名称。

Azure 故障域值示例

failureDomains:
  azure: 1
  - zone: "1"
  - zone: "2"
  - zone: "3"
  platform: Azure 2

1
每个实例都指定故障域的 Azure 可用区。
2
指定云供应商平台名称。不要更改这个值。

12.3.5. 用于配置 Nutanix 集群的 YAML 示例

control plane 机器集 CR 的一些部分是特定于供应商的。以下示例 YAML 片断显示了 Nutanix 集群的供应商规格配置。

12.3.5.1. Nutanix 供应商规格示例

当您为现有集群创建 control plane 机器集时,供应商规格必须与安装程序创建的 control plane 机器自定义资源 (CR) 中的 providerSpec 配置匹配。

使用 OpenShift CLI 获取的值

在以下示例中,您可以使用 OpenShift CLI 获取集群的一些值。

基础架构 ID

<cluster_id> 字符串是基础架构 ID,它基于您在置备集群时设定的集群 ID。如果已安装 OpenShift CLI,您可以通过运行以下命令来获取基础架构 ID:

$ oc get -o jsonpath='{.status.infrastructureName}{"\n"}' infrastructure cluster

Nutanix providerSpec 值示例

providerSpec:
  value:
    apiVersion: machine.openshift.io/v1
    bootType: "" 1
    categories: 2
    - key: <category_name>
      value: <category_value>
    cluster: 3
      type: uuid
      uuid: <cluster_uuid>
    credentialsSecret:
      name: nutanix-credentials 4
    image: 5
      name: <cluster_id>-rhcos
      type: name
    kind: NutanixMachineProviderConfig 6
    memorySize: 16Gi 7
    metadata:
      creationTimestamp: null
    project: 8
      type: name
      name: <project_name>
    subnets: 9
    - type: uuid
      uuid: <subnet_uuid>
    systemDiskSize: 120Gi 10
    userDataSecret:
      name: master-user-data 11
    vcpuSockets: 8 12
    vcpusPerSocket: 1 13

1
指定 control plane 机器使用的引导类型。有关引导类型的更多信息,请参阅虚拟环境中的了解 UEFI、安全引导和 TPM。有效值为 LegacySecureBootUEFI。默认值为 Legacy
注意

您必须在 OpenShift Container Platform 4.14 中使用 Legacy 引导类型。

2
指定一个或多个 Nutanix Prism 类别以应用到 control plane 机器。此小节需要 keyvalue 参数代表存在于 Prism Central 中的类别的键值对。有关类别的更多信息,请参阅类别管理
3
指定 Nutanix Prism Element 集群配置。在本例中,集群类型是 uuid,因此有一个 uuid 小节。
4
指定集群的 secret 名称。不要更改这个值。
5
指定用于创建磁盘的镜像。
6
指定云供应商平台类型。不要更改这个值。
7
指定为 control plane 机器分配的内存。
8
指定用于集群的 Nutanix 项目。在本例中,项目类型是 name,因此有一个 name 小节。
9
指定子网配置。在本例中,子网类型是 uuid,因此有一个 uuid 小节。
10
指定 control plane 机器的 VM 磁盘大小。
11
指定 control plane 用户数据 secret。不要更改这个值。
12
指定为 control plane 机器分配的 vCPU 套接字数量。
13
指定每个 control plane vCPU 套接字的 vCPU 数量。

12.3.6. 用于配置 VMware vSphere 集群的 YAML 示例

control plane 机器集 CR 的一些部分是特定于供应商的。以下示例 YAML 片断显示了 VMware vSphere 集群的供应商规格配置。

12.3.6.1. vSphere 供应商规格示例

当您为现有集群创建 control plane 机器集时,供应商规格必须与安装程序创建的 control plane 机器自定义资源 (CR) 中的 providerSpec 配置匹配。

vSphere providerSpec 值示例

providerSpec:
  value:
    apiVersion: machine.openshift.io/v1beta1
    credentialsSecret:
      name: vsphere-cloud-credentials 1
    diskGiB: 120 2
    kind: VSphereMachineProviderSpec 3
    memoryMiB: 16384 4
    metadata:
      creationTimestamp: null
    network: 5
      devices:
      - networkName: <vm_network_name>
    numCPUs: 4 6
    numCoresPerSocket: 4 7
    snapshot: ""
    template: <vm_template_name> 8
    userDataSecret:
      name: master-user-data 9
    workspace:
      datacenter: <vcenter_datacenter_name> 10
      datastore: <vcenter_datastore_name> 11
      folder: <path_to_vcenter_vm_folder> 12
      resourcePool: <vsphere_resource_pool> 13
      server: <vcenter_server_ip> 14

1
指定集群的 secret 名称。不要更改这个值。
2
指定 control plane 机器的 VM 磁盘大小。
3
指定云供应商平台类型。不要更改这个值。
4
指定为 control plane 机器分配的内存。
5
指定在其上部署 control plane 的网络。
6
指定为 control plane 机器分配的 CPU 数量。
7
指定每个 control plane CPU 的内核数。
8
指定要使用的 vSphere 虚拟机模板,如 user-5ddjd-rhcos
9
指定 control plane 用户数据 secret。不要更改这个值。
10
指定 control plane 的 vCenter Datacenter。
11
为 control plane 指定 vCenter Datastore。
12
指定 vCenter 中 vSphere 虚拟机文件夹的路径,如 /dc1/vm/user-inst-5ddjd
13
指定虚拟机的 vSphere 资源池。
14
指定 vCenter 服务器 IP 或完全限定域名。

12.3.7. 用于配置 Red Hat OpenStack Platform (RHOSP) 集群的 YAML 示例

control plane 机器集 CR 的一些部分是特定于供应商的。以下示例 YAML 片断显示 RHOSP 集群的供应商规格和故障域配置。

12.3.7.1. RHOSP 供应商规格示例

当您为现有集群创建 control plane 机器集时,供应商规格必须与安装程序创建的 control plane 机器自定义资源 (CR) 中的 providerSpec 配置匹配。

OpenStack providerSpec 值示例

providerSpec:
  value:
    apiVersion: machine.openshift.io/v1alpha1
    cloudName: openstack
    cloudsSecret:
      name: openstack-cloud-credentials 1
      namespace: openshift-machine-api
    flavor: m1.xlarge 2
    image: ocp1-2g2xs-rhcos
    kind: OpenstackProviderSpec 3
    metadata:
      creationTimestamp: null
    networks:
    - filter: {}
      subnets:
      - filter:
          name: ocp1-2g2xs-nodes
          tags: openshiftClusterID=ocp1-2g2xs
    securityGroups:
    - filter: {}
      name: ocp1-2g2xs-master 4
    serverGroupName: ocp1-2g2xs-master
    serverMetadata:
      Name: ocp1-2g2xs-master
      openshiftClusterID: ocp1-2g2xs
    tags:
    - openshiftClusterID=ocp1-2g2xs
    trunk: true
    userDataSecret:
      name: master-user-data

1
集群的 secret 名称。不要更改这个值。
2
control plane 的 RHOSP 类别类型。
3
RHOSP 云供应商平台类型。不要更改这个值。
4
control plane 机器安全组。

12.3.7.2. RHOSP 故障域配置示例

故障域的 control plane 机器集概念与现有 可用区(availability zone)的 Red Hat OpenStack Platform (RHOSP) 概念类似。ControlPlaneMachineSet CR 尽可能将 control plane 机器分散到多个故障域中。

以下示例演示了使用多个 Nova 可用性区域和 Cinder 可用性区域。

OpenStack 故障域值示例

failureDomains:
  platform: OpenStack
  openstack:
  - availabilityZone: nova-az0
    rootVolume:
      availabilityZone: cinder-az0
  - availabilityZone: nova-az1
    rootVolume:
      availabilityZone: cinder-az1
  - availabilityZone: nova-az2
    rootVolume:
      availabilityZone: cinder-az2

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.