搜索

12.5. control plane 机器的配置选项

download PDF

12.5.1. Amazon Web Services 的 control plane 配置选项

您可以更改 Amazon Web Services (AWS) control plane 机器的配置,并通过更新 control plane 机器集中的值来启用功能。当您将更新保存到 control plane 机器集时,Control Plane Machine Set Operator 会根据您配置的更新策略 control plane 机器。

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

以下示例 YAML 片断显示 AWS 集群的供应商规格和故障域配置。

12.5.1.1.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 值示例

apiVersion: machine.openshift.io/v1
kind: ControlPlaneMachineSet
metadata:
  name: cluster
  namespace: openshift-machine-api
spec:
# ...
  template:
# ...
      spec:
        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
              availabilityZone: "" 10
              tenancy: 11
            securityGroups:
            - filters:
              - name: tag:Name
                values:
                - <cluster_id>-master-sg 12
            subnet: {} 13
            userDataSecret:
              name: master-user-data 14

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
指定在 AWS 中创建 control plane 实例的位置。
9
指定集群的 AWS 区域。
10
此参数在故障域中配置,此处显示了一个空值。如果为此参数指定的值与故障域中的值不同,Control Plane Machine Set Operator 会使用故障域中的值覆盖它。
11
指定 control plane 的 AWS Dedicated 实例配置。如需更多信息,请参阅 AWS 文档有关 Dedicated 实例。以下值有效:
  • default : Dedicated 实例在共享硬件上运行。
  • dedicated : Dedicated 实例在单租户硬件上运行。
  • host : Dedicated 实例在 Dedicated 主机上运行,它是一个带有您可以控制的配置的隔离服务器。
12
指定 control plane 机器安全组。
13
此参数在故障域中配置,此处显示了一个空值。如果为此参数指定的值与故障域中的值不同,Control Plane Machine Set Operator 会使用故障域中的值覆盖它。
注意

如果故障域配置没有指定值,则会使用供应商规格中的值。在故障域中配置子网会覆盖供应商规格中的子网值。

14
指定 control plane 用户数据 secret。不要更改这个值。
12.5.1.1.2. AWS 故障域配置示例

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

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

AWS 故障域值示例

apiVersion: machine.openshift.io/v1
kind: ControlPlaneMachineSet
metadata:
  name: cluster
  namespace: openshift-machine-api
spec:
# ...
  template:
# ...
    machines_v1beta1_machine_openshift_io:
      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.5.1.2. 为 control plane 机器启用 Amazon Web Services 功能

您可以通过更新 control plane 机器集中的值来启用功能。

12.5.1.2.1. 将 API 服务器限制为私有

将集群部署到 Amazon Web Services (AWS) 后,您可以将 API 服务器重新配置为只使用私有区。

先决条件

  • 安装 OpenShift CLI(oc)。
  • 使用具有 admin 权限的用户登陆到 web 控制台。

流程

  1. 在云供应商的 web 门户或控制台中,执行以下操作:

    1. 找到并删除相关的负载均衡器组件:

      • 对于 AWS,删除外部负载均衡器。私有区的 API DNS 条目已指向内部负载均衡器,它使用相同的配置,因此您无需修改内部负载均衡器。
    2. 在公共区中删除 api.$clustername.$yourdomain DNS 条目。
  2. 通过删除 control plane 机器集自定义资源中的以下指示行来删除外部负载均衡器:

    # ...
    providerSpec:
      value:
    # ...
        loadBalancers:
        - name: lk4pj-ext 1
          type: network 2
        - name: lk4pj-int
          type: network
    # ...
    1
    删除外部负载均衡器的 name 值,它以 -ext 结尾。
    2
    删除外部负载均衡器的 type 值。
12.5.1.2.2. 使用 control plane 机器集更改 Amazon Web Services 实例类型

您可以通过更新 control plane 机器集自定义资源 (CR) 中的规格来更改 control plane 机器使用的 Amazon Web Services (AWS) 实例类型。

先决条件

  • 您的 AWS 集群使用 control plane 机器集。

流程

  1. 编辑 providerSpec 字段中的以下行:

    providerSpec:
      value:
        ...
        instanceType: <compatible_aws_instance_type> 1
    1
    使用与之前选择相同的基础指定较大的 AWS 实例类型。例如,您可以将 m6i.xlarge 更改为 m6i.2xlargem6i.4xlarge
  2. 保存您的更改。
12.5.1.2.3. 使用机器集,为 Elastic Fabric Adapter 实例分配机器到放置组

您可以配置机器集,在现有 AWS PG 中的 Elastic Fabric Adapter (EFA) 实例上部署机器。

EFA 实例不需要放置组,您可以使用放置组作为配置 EFA 以外的目的。本例使用这两者来演示能够提高指定放置组内机器的网络性能的配置。

先决条件

  • 您在 AWS 控制台中创建了放置组。

    注意

    确保您创建的放置组类型的规则和限制与预期的用例兼容。control plane 机器集尽可能将 control plane 机器分散到多个故障域中。要将放置组用于 control plane,您必须使用可跨越多个可用区的放置组类型。

流程

  1. 在文本编辑器中,为现有机器集打开 YAML 文件或创建新机器。
  2. 编辑 providerSpec 字段中的以下行:

    apiVersion: machine.openshift.io/v1
    kind: ControlPlaneMachineSet
    # ...
    spec:
      template:
        spec:
          providerSpec:
            value:
              instanceType: <supported_instance_type> 1
              networkInterfaceType: EFA 2
              placement:
                availabilityZone: <zone> 3
                region: <region> 4
              placementGroupName: <placement_group> 5
    # ...
    1
    指定支持 EFA 的实例类型。
    2
    指定 EFA 网络接口类型。
    3
    指定区域,如 us-east-1a
    4
    指定区域,如 us-east-1
    5
    指定要部署机器的现有 AWS PG 的名称。

验证

  • 在 AWS 控制台中,找到机器集创建的机器,并在机器属性中验证以下内容:

    • placement group 字段具有您为机器集中的 placementGroupName 参数指定的值。
    • 接口类型字段表示它使用 EFA。
12.5.1.2.4. Amazon EC2 实例元数据服务的机器集选项

您可以使用机器集创建使用 Amazon EC2 实例元数据服务 (IMDS) 的特定版本的机器。机器集可以创建允许使用 IMDSv1 和 IMDSv2 的机器或需要使用 IMDSv2 的机器。

注意

只有在 OpenShift Container Platform 版本 4.7 或更高版本中创建的 AWS 集群上才支持使用 IMDSv2。

重要

在配置机器集来创建需要 IMDSv2 的机器前,请确保与 AWS 元数据服务交互的工作负载都支持 IMDSv2。

12.5.1.2.4.1. 使用机器集配置 IMDS

您可以通过在机器集 YAML 文件中添加或编辑 metadataServiceOptions.authentication,来指定是否需要使用 IMDSv2。

先决条件

  • 要使用 IMDSv2,您的 AWS 集群必须使用 OpenShift Container Platform 版本 4.7 或更高版本创建。

流程

  • providerSpec 字段中添加或编辑以下行:

    providerSpec:
      value:
        metadataServiceOptions:
          authentication: Required 1
    1
    为了要求 IMDSv2,请将参数值设置为 Required。要允许使用 IMDSv1 和 IMDSv2,请将参数值设置为 Optional。如果没有指定值,则允许 IMDSv1 和 IMDSv2。
12.5.1.2.5. 将机器部署为 Dedicated 实例的机器集

您可以创建在 AWS 上运行的机器集,该机器将机器部署为 Dedicated 实例。专用实例在专用于单一客户的硬件上运行虚拟私有云(VPC)。这些 Amazon EC2 实例在主机硬件级别被物理隔离。Dedicated 实例的隔离也会存在,即使实例属于链接到一个 Forer 帐户的不同 AWS 帐户。但是,其他未专用实例如果属于同一 AWS 帐户,则可以与 Dedicated 实例共享硬件。

Machine API 支持具有公共或专用租期的实例。具有公共租期的实例在共享硬件上运行。公共租期是默认租期。具有专用租期的实例在单租户硬件上运行。

12.5.1.2.5.1. 使用机器集创建 Dedicated 实例

您可以使用 Machine API 集成来运行由 Dedicated 实例支持的机器。设置机器设置 YAML 文件中的 tenancy 字段,以便在 AWS 上启动 Dedicated 实例。

流程

  • providerSpec 字段中指定专用租户:

    providerSpec:
      placement:
        tenancy: dedicated

12.5.2. Microsoft Azure 的 control plane 配置选项

您可以通过更新 control plane 机器集中的值来更改 Microsoft Azure control plane 机器的配置并启用功能。当您将更新保存到 control plane 机器集时,Control Plane Machine Set Operator 会根据您配置的更新策略 control plane 机器。

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

以下示例 YAML 片断显示 Azure 集群的供应商规格和故障域配置。

12.5.2.1.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 值示例

apiVersion: machine.openshift.io/v1
kind: ControlPlaneMachineSet
metadata:
  name: cluster
  namespace: openshift-machine-api
spec:
# ...
  template:
# ...
      spec:
        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: "1" 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
指定将单个区用于所有故障域的集群区配置。
注意

如果集群配置为为每个故障域使用不同的区,则此参数会在故障域中配置。如果您在为每个故障域使用不同区时在供应商规格中指定这个值,则 Control Plane Machine Set Operator 会忽略它。

12.5.2.1.2. Azure 故障域配置示例

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

在 control plane 机器集中配置 Azure 故障域时,您必须指定可用区名称。Azure 集群使用跨越多个区的单一子网。

Azure 故障域值示例

apiVersion: machine.openshift.io/v1
kind: ControlPlaneMachineSet
metadata:
  name: cluster
  namespace: openshift-machine-api
spec:
# ...
  template:
# ...
    machines_v1beta1_machine_openshift_io:
      failureDomains:
        azure:
        - zone: "1" 1
        - zone: "2"
        - zone: "3"
        platform: Azure 2
# ...

1
每个实例都指定故障域的 Azure 可用区。
注意

如果集群配置为对所有故障域使用单个区,则 zone 参数在供应商规格中配置,而不是在故障域配置中。

2
指定云供应商平台名称。不要更改这个值。

12.5.2.2. 为 control plane 机器启用 Microsoft Azure 功能

您可以通过更新 control plane 机器集中的值来启用功能。

12.5.2.2.1. 将 API 服务器限制为私有

将集群部署到 Amazon Web Services (AWS) 后,您可以将 API 服务器重新配置为只使用私有区。

先决条件

  • 安装 OpenShift CLI(oc)。
  • 使用具有 admin 权限的用户登陆到 web 控制台。

流程

  1. 在云供应商的 web 门户或控制台中,执行以下操作:

    1. 找到并删除相关的负载均衡器组件:
    2. 在公共区中删除 api.$clustername.$yourdomain DNS 条目。
  2. 通过删除 control plane 机器集自定义资源中的以下指示行来删除外部负载均衡器:

    # ...
    providerSpec:
      value:
    # ...
        loadBalancers:
        - name: lk4pj-ext 1
          type: network 2
        - name: lk4pj-int
          type: network
    # ...
    1
    删除外部负载均衡器的 name 值,它以 -ext 结尾。
    2
    删除外部负载均衡器的 type 值。
12.5.2.2.2. 使用 Azure Marketplace 产品

您可以创建在 Azure 上运行的机器集,以部署使用 Azure Marketplace 产品的机器。要使用此产品,您必须首先获取 Azure Marketplace 镜像。在获取您的镜像时,请考虑以下事项:

  • 虽然镜像相同,但 Azure Marketplace publisher 根据您的区域。如果您位于北美,请将 redhat 指定为发布者。如果您位于 EMEA,请将 redhat-limited 指定为发布者。
  • 此项优惠包括 rh-ocp-worker SKU 和 rh-ocp-worker-gen1 SKU。rh-ocp-worker SKU 代表 Hyper-V 生成版本 2 虚拟机镜像。OpenShift Container Platform 中使用的默认实例类型与版本 2 兼容。如果您计划使用与版本 1 兼容的实例类型,请使用与 rh-ocp-worker-gen1 SKU 关联的镜像。rh-ocp-worker-gen1 SKU 代表 Hyper-V 版本 1 虚拟机镜像。
重要

在使用 64 位 ARM 实例的集群上不支持使用 Azure marketplace 安装镜像。

先决条件

  • 已安装 Azure CLI 客户端 (az)
  • 您的 Azure 帐户为产品授权,您使用 Azure CLI 客户端登录到此帐户。

流程

  1. 运行以下命令之一,显示所有可用的 OpenShift Container Platform 镜像:

    • 北美:

      $  az vm image list --all --offer rh-ocp-worker --publisher redhat -o table

      输出示例

      Offer          Publisher       Sku                 Urn                                                             Version
      -------------  --------------  ------------------  --------------------------------------------------------------  -----------------
      rh-ocp-worker  RedHat          rh-ocp-worker       RedHat:rh-ocp-worker:rh-ocp-worker:413.92.2023101700            413.92.2023101700
      rh-ocp-worker  RedHat          rh-ocp-worker-gen1  RedHat:rh-ocp-worker:rh-ocp-worker-gen1:413.92.2023101700       413.92.2023101700

    • 欧洲、中东和非洲地区:

      $  az vm image list --all --offer rh-ocp-worker --publisher redhat-limited -o table

      输出示例

      Offer          Publisher       Sku                 Urn                                                                     Version
      -------------  --------------  ------------------  --------------------------------------------------------------          -----------------
      rh-ocp-worker  redhat-limited  rh-ocp-worker       redhat-limited:rh-ocp-worker:rh-ocp-worker:413.92.2023101700            413.92.2023101700
      rh-ocp-worker  redhat-limited  rh-ocp-worker-gen1  redhat-limited:rh-ocp-worker:rh-ocp-worker-gen1:413.92.2023101700       413.92.2023101700

    注意

    使用可用于 compute 和 control plane 节点的最新镜像。如果需要,您的虚拟机会在安装过程中自动升级。

  2. 运行以下命令之一检查您的所提供的镜像:

    • 北美:

      $ az vm image show --urn redhat:rh-ocp-worker:rh-ocp-worker:<version>
    • 欧洲、中东和非洲地区:

      $ az vm image show --urn redhat-limited:rh-ocp-worker:rh-ocp-worker:<version>
  3. 运行以下命令之一查看提供的术语:

    • 北美:

      $ az vm image terms show --urn redhat:rh-ocp-worker:rh-ocp-worker:<version>
    • 欧洲、中东和非洲地区:

      $ az vm image terms show --urn redhat-limited:rh-ocp-worker:rh-ocp-worker:<version>
  4. 运行以下命令之一接受产品条款:

    • 北美:

      $ az vm image terms accept --urn redhat:rh-ocp-worker:rh-ocp-worker:<version>
    • 欧洲、中东和非洲地区:

      $ az vm image terms accept --urn redhat-limited:rh-ocp-worker:rh-ocp-worker:<version>
  5. 记录您所提供的镜像详情,特别是 publisher, offer, sku, 和 version 的值。
  6. 使用您提供的镜像详情,在机器集 YAML 文件的 providerSpec 部分添加以下参数:

    Azure Marketplace 机器的 providerSpec 镜像值示例

    providerSpec:
      value:
        image:
          offer: rh-ocp-worker
          publisher: redhat
          resourceID: ""
          sku: rh-ocp-worker
          type: MarketplaceWithPlan
          version: 413.92.2023101700

12.5.2.2.3. 启用 Azure 引导诊断

您可以在机器集创建的 Azure 机器上启用引导诊断。

先决条件

  • 已有 Microsoft Azure 集群。

流程

  • 将适用于您的存储类型的 diagnostics 配置添加到机器集 YAML 文件中的 providerSpec 字段中:

    • 对于 Azure Managed 存储帐户:

      providerSpec:
        diagnostics:
          boot:
            storageAccountType: AzureManaged 1
      1
      指定 Azure Managed 存储帐户。
    • 对于 Azure Unmanaged 存储帐户:

      providerSpec:
        diagnostics:
          boot:
            storageAccountType: CustomerManaged 1
            customerManaged:
              storageAccountURI: https://<storage-account>.blob.core.windows.net 2
      1
      指定 Azure Unmanaged 存储帐户。
      2
      <storage-account> 替换为存储帐户的名称。
      注意

      仅支持 Azure Blob Storage 数据服务。

验证

  • 在 Microsoft Azure 门户上,查看机器集部署的机器的 Boot diagnostics 页面,并验证您可以看到机器的串行日志。
12.5.2.2.4. 使用计算磁盘部署机器的机器集作为数据磁盘

您可以创建在 Azure 上运行的机器集,该机器集用来部署带有巨型磁盘的机器。ultra 磁盘是高性能存储,用于要求最苛刻的数据工作负载。

12.5.2.2.4.1. 使用机器集创建带有巨型磁盘的机器

您可以通过编辑机器集 YAML 文件在 Azure 上部署带有巨型磁盘的机器。

先决条件

  • 已有 Microsoft Azure 集群。

流程

  1. 运行以下命令,使用 master 数据 secret 在 openshift-machine-api 命名空间中创建自定义 secret:

    $ oc -n openshift-machine-api \
    get secret <role>-user-data \ 1
    --template='{{index .data.userData | base64decode}}' | jq > userData.txt 2
    1
    <role> 替换为 master
    2
    指定 userData.txt 作为新自定义 secret 的名称。
  2. 在文本编辑器中,打开 userData.txt 文件,并在文件中找到最后的 } 字符。

    1. 在紧接下来的行中,添加一个 ,
    2. , 之后创建一个新行并添加以下配置详情:

      "storage": {
        "disks": [ 1
          {
            "device": "/dev/disk/azure/scsi1/lun0", 2
            "partitions": [ 3
              {
                "label": "lun0p1", 4
                "sizeMiB": 1024, 5
                "startMiB": 0
              }
            ]
          }
        ],
        "filesystems": [ 6
          {
            "device": "/dev/disk/by-partlabel/lun0p1",
            "format": "xfs",
            "path": "/var/lib/lun0p1"
          }
        ]
      },
      "systemd": {
        "units": [ 7
          {
            "contents": "[Unit]\nBefore=local-fs.target\n[Mount]\nWhere=/var/lib/lun0p1\nWhat=/dev/disk/by-partlabel/lun0p1\nOptions=defaults,pquota\n[Install]\nWantedBy=local-fs.target\n", 8
            "enabled": true,
            "name": "var-lib-lun0p1.mount"
          }
        ]
      }
      1
      您要作为 ultra 磁盘附加到节点的磁盘的配置详情。
      2
      指定您使用的机器集的 dataDisks 小节中定义的 lun 值。例如,如果机器集包含 lun: 0,请指定 lun0。您可以通过在这个配置文件中指定多个 "disks" 条目来初始化多个数据磁盘。如果您指定多个 "disks" 条目,请确保每个条目的 lun 值与机器集中的值匹配。
      3
      磁盘上新分区的配置详情。
      4
      为分区指定标签。使用分层的名称可能会有帮助,如 lun0p1 代表 lun0 的第一个分区。
      5
      指定分区的总大小(以 MiB 为单位)。
      6
      指定在格式化分区时要使用的文件系统。使用分区标签来指定分区。
      7
      指定一个 systemd 单元来在引导时挂载分区。使用分区标签来指定分区。您可以通过在这个配置文件中指定多个 "partitions" 条目来创建多个分区。如果指定多个 "partitions" 条目,则必须为每个条目指定一个 systemd 单元。
      8
      对于 where,指定 storage.filesystems.path 的值。对于 What,指定 storage.filesystems.device 的值。
  3. 运行以下命令,将禁用模板值提取到名为 disableTemplating.txt 的文件:

    $ oc -n openshift-machine-api get secret <role>-user-data \ 1
    --template='{{index .data.disableTemplating | base64decode}}' | jq > disableTemplating.txt
    1
    <role> 替换为 master
  4. 运行以下命令组合 userData.txt 文件和 disableTemplating.txt 文件来创建数据 secret 文件:

    $ oc -n openshift-machine-api create secret generic <role>-user-data-x5 \ 1
    --from-file=userData=userData.txt \
    --from-file=disableTemplating=disableTemplating.txt
    1
    对于 <role>-user-data-x5,请指定 secret 的名称。将 <role> 替换为 master
  5. 运行以下命令来编辑 control plane 机器集 CR:

    $ oc --namespace openshift-machine-api edit controlplanemachineset.machine.openshift.io cluster
  6. 在指示的位置中添加以下行:

    apiVersion: machine.openshift.io/v1beta1
    kind: ControlPlaneMachineSet
    spec:
      template:
        spec:
          metadata:
            labels:
              disk: ultrassd 1
          providerSpec:
            value:
              ultraSSDCapability: Enabled 2
              dataDisks: 3
              - nameSuffix: ultrassd
                lun: 0
                diskSizeGB: 4
                deletionPolicy: Delete
                cachingType: None
                managedDisk:
                  storageAccountType: UltraSSD_LRS
              userDataSecret:
                name: <role>-user-data-x5 4
    1
    指定标签,用于选择此机器集创建的节点。此流程使用 disk.ulssd 用于这个值。
    2 3
    这些行支持使用 ultra 磁盘。对于 dataDisks,请包括整个小节。
    4
    指定之前创建的用户数据 secret。将 <role> 替换为 master
  7. 保存您的更改。

    • 对于使用默认 RollingUpdate 更新策略的集群,Operator 会自动将更改传播到 control plane 配置。
    • 对于配置为使用 OnDelete 更新策略的集群,您必须手动替换 control plane 机器。

验证

  1. 运行以下命令验证机器是否已创建:

    $ oc get machines

    机器应处于 Running 状态。

  2. 对于正在运行并附加节点的机器,请运行以下命令验证分区:

    $ oc debug node/<node-name> -- chroot /host lsblk

    在这个命令中,oc debug node/<node-name> 会在节点 <node-name> 上启动一个 debugging shell,并传递一个带有 -- 的命令。传递的命令 chroot /host 提供对底层主机操作系统二进制文件的访问,lsblk 显示连接至主机操作系统计算机的块设备。

后续步骤

  • 要在 control plane 上使用 ultra 磁盘,请重新配置工作负载以使用 control plane 的 ultra 磁盘挂载点。
12.5.2.2.4.2. 启用 ultra 磁盘的机器集的故障排除资源

使用本节中的信息从您可能会遇到的问题了解和恢复。

12.5.2.2.4.2.1. 不正确的 ultra 磁盘配置

如果在机器集中指定 ultraSSDCapability 参数的配置不正确,则机器置备会失败。

例如,如果 ultraSSDCapability 参数设置为 Disabled,但在 dataDisks 参数中指定了 ultra 磁盘,则会出现以下出错信息:

StorageAccountType UltraSSD_LRS can be used only when additionalCapabilities.ultraSSDEnabled is set.
  • 要解决这个问题,请验证机器集配置是否正确。
12.5.2.2.4.2.2. 不支持的磁盘参数

如果在机器集中指定与 ultra 磁盘不兼容的区域、可用性区域或实例大小,则机器置备会失败。检查日志中的以下出错信息:

failed to create vm <machine_name>: failure sending request for machine <machine_name>: cannot create vm: compute.VirtualMachinesClient#CreateOrUpdate: Failure sending request: StatusCode=400 -- Original Error: Code="BadRequest" Message="Storage Account type 'UltraSSD_LRS' is not supported <more_information_about_why>."
  • 要解决这个问题,请验证您是否在受支持的环境中使用此功能,以及机器设置配置是否正确。
12.5.2.2.4.2.3. 无法删除磁盘

如果因为数据磁盘无法按预期工作,则会删除大量磁盘,则机器会被删除,数据磁盘会孤立。如果需要,您必须手动删除孤立的磁盘。

12.5.2.2.5. 为机器集启用客户管理的加密密钥

您可以为 Azure 提供加密密钥,以便加密受管磁盘上的数据。您可以使用 Machine API 使用客户管理的密钥启用服务器端加密。

使用客户管理的密钥需要 Azure Key Vault、磁盘加密集和加密密钥。磁盘加密集必须在 Cloud Credential Operator(CCO)授予权限的资源组中。如果没有,则需要在磁盘加密集中授予额外的 reader 角色。

流程

  • 在机器集 YAML 文件中的 providerSpec 字段中配置磁盘加密集。例如:

    providerSpec:
      value:
        osDisk:
          diskSizeGB: 128
          managedDisk:
            diskEncryptionSet:
              id: /subscriptions/<subscription_id>/resourceGroups/<resource_group_name>/providers/Microsoft.Compute/diskEncryptionSets/<disk_encryption_set_name>
            storageAccountType: Premium_LRS
12.5.2.2.6. 使用机器集为 Azure 虚拟机配置可信启动
重要

为 Azure 虚拟机使用可信启动只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

OpenShift Container Platform 4.16 支持 Azure 虚拟机 (VM) 的可信启动。通过编辑机器集 YAML 文件,您可以配置机器集用于部署的机器的可信启动选项。例如,您可以将这些机器配置为使用 UEFI 安全功能,如安全引导或专用虚拟信任平台模块 (vTPM) 实例。

注意

有些功能组合会导致配置无效。

表 12.2. UEFI 功能组合兼容性
安全引导 [1]vTPM[2]有效配置

Enabled

Enabled

Enabled

Disabled

Enabled

省略

Disabled

Enabled

省略

Enabled

Disabled

Disabled

省略

Disabled

省略

省略

  1. 使用 secureBoot 字段。
  2. 使用 virtualizedTrustedPlatformModule 字段。

有关相关特性和功能的更多信息,请参阅 Microsoft Azure 文档中有关 Azure 虚拟机的受信任的启动 文档。

流程

  1. 在文本编辑器中,为现有机器集打开 YAML 文件或创建新机器。
  2. 编辑 providerSpec 字段下的以下部分以提供有效的配置:

    启用 UEFI 安全引导和 vTPM 的有效配置示例

    apiVersion: machine.openshift.io/v1
    kind: ControlPlaneMachineSet
    # ...
    spec:
      template:
        spec:
          providerSpec:
            value:
              securityProfile:
                settings:
                  securityType: TrustedLaunch 1
                  trustedLaunch:
                    uefiSettings: 2
                      secureBoot: Enabled 3
                      virtualizedTrustedPlatformModule: Enabled 4
    # ...

    1
    为 Azure 虚拟机启用可信启动。所有有效配置都需要这个值。
    2
    指定要使用的 UEFI 安全功能。所有有效配置都需要这个部分。
    3
    启用 UEFI 安全引导。
    4
    启用使用 vTPM。

验证

  • 在 Azure 门户中,查看机器集部署的机器的详情,并验证可信启动选项是否与您配置的值匹配。
12.5.2.2.7. 使用机器集配置 Azure 机密虚拟机
重要

使用 Azure 机密虚拟机只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

OpenShift Container Platform 4.16 支持 Azure 机密虚拟机 (VM)。

注意

64 位 ARM 架构目前不支持机密虚拟机。

通过编辑机器集 YAML 文件,您可以配置机器集用于部署的机器的机密虚拟机选项。例如,您可以将这些机器配置为使用 UEFI 安全功能,如安全引导或专用虚拟信任平台模块 (vTPM) 实例。

警告

并非所有实例类型都支持机密虚拟机。不要更改配置为使用机密虚拟机的 control plane 机器集的实例类型,使其不兼容的类型。使用不兼容的实例类型可能会导致集群不稳定。

有关相关特性和功能的更多信息,请参阅 Microsoft Azure 文档中有关机密虚拟机的信息

流程

  1. 在文本编辑器中,为现有机器集打开 YAML 文件或创建新机器。
  2. providerSpec 字段中编辑以下部分:

    配置示例

    apiVersion: machine.openshift.io/v1
    kind: ControlPlaneMachineSet
    # ...
    spec:
      template:
        spec:
          providerSpec:
            value:
              osDisk:
                # ...
                managedDisk:
                  securityProfile: 1
                    securityEncryptionType: VMGuestStateOnly 2
                # ...
              securityProfile: 3
                settings:
                    securityType: ConfidentialVM 4
                    confidentialVM:
                      uefiSettings: 5
                        secureBoot: Disabled 6
                        virtualizedTrustedPlatformModule: Enabled 7
              vmSize: Standard_DC16ads_v5 8
    # ...

    1
    在使用机密虚拟机时,指定受管磁盘的安全配置集设置。
    2
    启用 Azure VM Guest State (VMGS) blob 加密。此设置需要使用 vTPM。
    3
    指定机密虚拟机的安全配置集设置。
    4
    启用使用机密虚拟机。所有有效配置都需要这个值。
    5
    指定要使用的 UEFI 安全功能。所有有效配置都需要这个部分。
    6
    禁用 UEFI 安全引导。
    7
    启用使用 vTPM。
    8
    指定支持机密虚拟机的实例类型。

验证

  • 在 Azure 门户中,查看机器集部署的机器的详情,并验证机密虚拟机选项是否与您配置的值匹配。
12.5.2.2.8. Microsoft Azure 虚拟机的加速网络

加速网络使用单一根 I/O 虚拟化(SR-IOV)为 Microsoft Azure 虚拟机提供更直接的路径到交换机。这提高了网络性能。这个功能可以在安装后启用。

12.5.2.2.8.1. 限制

在决定是否使用加速网络时,请考虑以下限制:

  • 只有在 Machine API 操作的集群中支持加速网络。
  • 加速网络需要一个 Azure 虚拟机,其大小需要可以包括最少四个 vCPU。为了满足此要求,您可以在机器集中更改 vmSize 的值。有关 Azure VM 大小的信息,请参阅 Microsoft Azure 文档

12.5.2.2.8.2. 在现有 Microsoft Azure 集群上启用加速网络

您可以通过在机器集 YAML 文件中添加 acceleratedNetworking,在 Azure 上启用加速网络。

先决条件

  • 有一个现有的 Microsoft Azure 集群,其中的 Machine API 正常运行。

流程

  • providerSpec 字段中添加以下内容:

    providerSpec:
      value:
        acceleratedNetworking: true 1
        vmSize: <azure-vm-size> 2
    1
    此行启用加速网络。
    2
    指定包含至少四个 vCPU 的 Azure VM 大小。有关 VM 大小的信息,请参阅 Microsoft Azure 文档

验证

  • 在 Microsoft Azure 门户上,查看机器集调配的机器的 Networking 设置页面,并验证 Accelerated networking 字段设置为 Enabled

12.5.3. Google Cloud Platform 的 control plane 配置选项

您可以更改 Google Cloud Platform (GCP) control plane 机器的配置,并通过更新 control plane 机器集中的值来启用功能。当您将更新保存到 control plane 机器集时,Control Plane Machine Set Operator 会根据您配置的更新策略 control plane 机器。

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

以下 YAML 片断示例显示 GCP 集群的供应商规格和故障域配置。

12.5.3.1.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:
            - 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 6
            zone: "" 7

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
指定 control plane 用户数据 secret。不要更改这个值。
7
此参数在故障域中配置,此处显示了一个空值。如果为此参数指定的值与故障域中的值不同,Operator 会使用故障域中的值覆盖它。
12.5.3.1.2. GCP 故障域配置示例

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

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

GCP 故障域值示例

apiVersion: machine.openshift.io/v1
kind: ControlPlaneMachineSet
metadata:
  name: cluster
  namespace: openshift-machine-api
spec:
# ...
  template:
# ...
    machines_v1beta1_machine_openshift_io:
      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.5.3.2. 为 control plane 机器启用 Google Cloud Platform 功能

您可以通过更新 control plane 机器集中的值来启用功能。

12.5.3.2.1. 使用机器集配置持久性磁盘类型

您可以通过编辑机器集 YAML 文件,配置机器集在其中部署机器的持久性磁盘类型。

有关持久性磁盘类型、兼容性、区域可用性和限制的更多信息,请参阅 GCP Compute Engine 文档有关持久性磁盘的信息。

流程

  1. 在文本编辑器中,为现有机器集打开 YAML 文件或创建新机器。
  2. 编辑 providerSpec 字段中的以下行:

    apiVersion: machine.openshift.io/v1
    kind: ControlPlaneMachineSet
    ...
    spec:
      template:
        spec:
          providerSpec:
            value:
              disks:
                type: pd-ssd 1
    1
    control plane 节点必须使用 pd-ssd 磁盘类型。

验证

  • 在 Google Cloud 控制台中,查看机器集部署的机器的详情,并验证 Type 字段是否与配置的磁盘类型匹配。
12.5.3.2.2. 使用机器集配置机密虚拟机

通过编辑机器集 YAML 文件,您可以配置机器集用于部署的机器的机密虚拟机选项。

有关机密虚拟机功能、功能和兼容性的更多信息,请参阅 GCP Compute Engine 文档有关 机密虚拟机 的信息。

注意

64 位 ARM 架构目前不支持机密虚拟机。

重要

OpenShift Container Platform 4.16 不支持一些机密计算功能,如使用 AMD Secure Encrypted Virtualization Secure Nested Paging (SEV-SNP) 的机密虚拟机。

流程

  1. 在文本编辑器中,为现有机器集打开 YAML 文件或创建新机器。
  2. providerSpec 字段中编辑以下部分:

    apiVersion: machine.openshift.io/v1
    kind: ControlPlaneMachineSet
    ...
    spec:
      template:
        spec:
          providerSpec:
            value:
              confidentialCompute: Enabled 1
              onHostMaintenance: Terminate 2
              machineType: n2d-standard-8 3
    ...
    1
    指定是否启用机密虚拟机。有效值为 DisabledEnabled
    2
    指定主机维护事件期间虚拟机的行为,如硬件或软件更新。对于使用机密虚拟机的机器,此值必须设置为 Terminate,这会停止虚拟机。机密虚拟机不支持实时迁移。
    3
    指定支持机密虚拟机的机器类型。机密虚拟机支持 N2D 和 C2D 系列机器类型。

验证

  • 在 Google Cloud 控制台中,查看机器集部署的机器的详情,并验证 Confidential VM 选项是否与您配置的值匹配。
12.5.3.2.3. 使用机器集配置 Shielded VM 选项

通过编辑机器集 YAML 文件,您可以配置机器集用于部署的机器的 Shielded VM 选项。

有关 Shielded VM 特性和功能的更多信息,请参阅有关 Shielded VM 的 GCP Compute Engine 文档。

流程

  1. 在文本编辑器中,为现有机器集打开 YAML 文件或创建新机器。
  2. providerSpec 字段中编辑以下部分:

    apiVersion: machine.openshift.io/v1
    kind: ControlPlaneMachineSet
    # ...
    spec:
      template:
        spec:
          providerSpec:
            value:
              shieldedInstanceConfig: 1
                integrityMonitoring: Enabled 2
                secureBoot: Disabled 3
                virtualizedTrustedPlatformModule: Enabled 4
    # ...
    1
    在本节中,指定您想要的 Shielded VM 选项。
    2
    指定是否启用了完整性监控。有效值为 DisabledEnabled
    注意

    启用完整性监控后,不得禁用虚拟可信平台模块 (vTPM)。

    3
    指定是否启用了 UEFI 安全引导。有效值为 DisabledEnabled
    4
    指定是否启用了 vTPM。有效值为 DisabledEnabled

验证

  • 使用 Google Cloud 控制台,查看机器集部署的机器的详情,并验证 Shielded VM 选项是否与您配置的值匹配。
12.5.3.2.4. 为机器集启用客户管理的加密密钥

Google Cloud Platform(GCP)Compute Engine 允许用户提供加密密钥来加密磁盘上的数据。密钥用于对数据加密密钥进行加密,而不是加密客户的数据。默认情况下,Compute Engine 使用 Compute Engine 密钥加密这些数据。

您可以使用 Machine API 的集群中使用客户管理的密钥启用加密。您必须首先创建 KMS 密钥并为服务帐户分配正确的权限。需要 KMS 密钥名称、密钥环名称和位置来允许服务帐户使用您的密钥。

注意

如果您不想将专用服务帐户用于 KMS 加密,则使用 Compute Engine 默认服务帐户。如果没有使用专用服务帐户,则必须授予默认服务帐户权限来访问密钥。Compute Engine 默认服务帐户名称遵循 service-<project_number>@compute-system.iam.gserviceaccount.com 模式。

流程

  1. 要允许特定服务帐户使用 KMS 密钥,并为服务帐户授予正确的 IAM 角色,请使用您的 KMS 密钥名称、密钥环名称和位置运行以下命令:

    $ gcloud kms keys add-iam-policy-binding <key_name> \
      --keyring <key_ring_name> \
      --location <key_ring_location> \
      --member "serviceAccount:service-<project_number>@compute-system.iam.gserviceaccount.com” \
      --role roles/cloudkms.cryptoKeyEncrypterDecrypter
  2. 在机器集 YAML 文件中的 providerSpec 字段中配置加密密钥。例如:

    apiVersion: machine.openshift.io/v1
    kind: ControlPlaneMachineSet
    ...
    spec:
      template:
        spec:
          providerSpec:
            value:
              disks:
              - type:
                encryptionKey:
                  kmsKey:
                    name: machine-encryption-key 1
                    keyRing: openshift-encrpytion-ring 2
                    location: global 3
                    projectID: openshift-gcp-project 4
                  kmsKeyServiceAccount: openshift-service-account@openshift-gcp-project.iam.gserviceaccount.com 5
    1
    用于磁盘加密的客户管理的加密密钥名称。
    2
    KMS 密钥所属的 KMS 密钥环的名称。
    3
    KMS 密钥环存在的 GCP 位置。
    4
    可选:存在 KMS 密钥环的项目 ID。如果没有设置项目 ID,则会使用创建机器设置的机器设置 projectID
    5
    可选:用于给定 KMS 密钥加密请求的服务帐户。如果没有设置服务帐户,则使用 Compute Engine 默认服务帐户。

    当使用更新的 providerSpec 对象配置创建新机器后,磁盘加密密钥就会使用 KMS 密钥加密。

12.5.4. Nutanix 的 control plane 配置选项

您可以通过更新 control plane 机器集中的值来更改 Nutanix control plane 机器的配置。当您将更新保存到 control plane 机器集时,Control Plane Machine Set Operator 会根据您配置的更新策略 control plane 机器。

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

以下示例 YAML 片断显示了 Nutanix 集群的供应商规格配置。

12.5.4.1.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 值示例

apiVersion: machine.openshift.io/v1
kind: ControlPlaneMachineSet
metadata:
  name: cluster
  namespace: openshift-machine-api
spec:
# ...
  template:
# ...
      spec:
        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.16 中使用 Legacy 引导类型。

2
指定一个或多个 Nutanix Prism 类别以应用到 control plane 机器。此小节需要 keyvalue 参数代表存在于 Prism Central 中的类别的键值对。有关类别的更多信息,请参阅类别管理
3
指定 Nutanix Prism Element 集群配置。在本例中,集群类型是 uuid,因此有一个 uuid 小节。
注意

使用 OpenShift Container Platform 版本 4.15 或更高版本的集群可以使用故障域配置。

如果集群被配置为使用故障域,则此参数会在故障域中配置。如果您在使用故障域时在供应商规格中指定这个值,则 Control Plane Machine Set Operator 会忽略它。

4
指定集群的 secret 名称。不要更改这个值。
5
指定用于创建磁盘的镜像。
6
指定云供应商平台类型。不要更改这个值。
7
指定为 control plane 机器分配的内存。
8
指定用于集群的 Nutanix 项目。在本例中,项目类型是 name,因此有一个 name 小节。
9
指定子网配置。在本例中,子网类型是 uuid,因此有一个 uuid 小节。
注意

使用 OpenShift Container Platform 版本 4.15 或更高版本的集群可以使用故障域配置。

如果集群被配置为使用故障域,则此参数会在故障域中配置。如果您在使用故障域时在供应商规格中指定这个值,则 Control Plane Machine Set Operator 会忽略它。

10
指定 control plane 机器的 VM 磁盘大小。
11
指定 control plane 用户数据 secret。不要更改这个值。
12
指定为 control plane 机器分配的 vCPU 套接字数量。
13
指定每个 control plane vCPU 套接字的 vCPU 数量。
12.5.4.1.2. Nutanix 集群的故障域

要在 Nutanix 集群中添加或更新故障域配置,您必须对几个资源进行协调更改。需要以下操作:

  1. 修改集群基础架构自定义资源 (CR)。
  2. 修改集群 control plane 机器集 CR。
  3. 修改或替换计算机器设置 CR。

如需更多信息,请参阅 安装后配置 内容中的"将故障域添加到现有 Nutanix 集群"。

12.5.5. Red Hat OpenStack Platform 的 control plane 配置选项

您可以更改 Red Hat OpenStack Platform (RHOSP) control plane 机器的配置,并通过更新 control plane 机器集中的值来启用功能。当您将更新保存到 control plane 机器集时,Control Plane Machine Set Operator 会根据您配置的更新策略 control plane 机器。

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

以下示例 YAML 片断显示 RHOSP 集群的供应商规格和故障域配置。

12.5.5.1.1. RHOSP 供应商规格示例

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

OpenStack providerSpec 值示例

apiVersion: machine.openshift.io/v1
kind: ControlPlaneMachineSet
metadata:
  name: cluster
  namespace: openshift-machine-api
spec:
# ...
  template:
# ...
      spec:
        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.5.5.1.2. RHOSP 故障域配置示例

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

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

OpenStack 故障域值示例

apiVersion: machine.openshift.io/v1
kind: ControlPlaneMachineSet
metadata:
  name: cluster
  namespace: openshift-machine-api
spec:
# ...
  template:
# ...
    machines_v1beta1_machine_openshift_io:
      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
# ...

12.5.5.2. 为 control plane 机器启用 Red Hat OpenStack Platform (RHOSP) 功能

您可以通过更新 control plane 机器集中的值来启用功能。

12.5.5.2.1. 使用 control plane 机器集更改 RHOSP 计算类型

您可以通过更新 control plane 机器集自定义资源中的规格来更改 control plane 机器使用的 Red Hat OpenStack Platform (RHOSP)计算服务(Nova)类别。

在 RHOSP 中,类别定义计算实例的计算、内存和存储容量。通过增加或减少类别大小,您可以垂直扩展 control plane。

先决条件

  • 您的 RHOSP 集群使用 control plane 机器集。

流程

  1. 编辑 providerSpec 字段中的以下行:

    providerSpec:
      value:
    # ...
        flavor: m1.xlarge 1
    1
    指定与现有选择相同的 RHOSP 类别类型。例如,您可以将 m6i.xlarge 更改为 m6i.2xlargem6i.4xlarge。您可以根据垂直扩展需求选择大或较小的类别。
  2. 保存您的更改。

保存更改后,计算机将被替换为您选择的类别。

12.5.6. VMware vSphere 的 control plane 配置选项

您可以通过更新 control plane 机器集中的值来更改 VMware vSphere control plane 机器的配置。当您将更新保存到 control plane 机器集时,Control Plane Machine Set Operator 会根据您配置的更新策略 control plane 机器。

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

以下示例 YAML 片断显示 vSphere 集群的供应商规格和故障域配置。

12.5.6.1.1. VMware vSphere 供应商规格示例

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

vSphere 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
            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: 10
              datacenter: <vcenter_data_center_name> 11
              datastore: <vcenter_datastore_name> 12
              folder: <path_to_vcenter_vm_folder> 13
              resourcePool: <vsphere_resource_pool> 14
              server: <vcenter_server_ip> 15

1
指定集群的 secret 名称。不要更改这个值。
2
指定 control plane 机器的 VM 磁盘大小。
3
指定云供应商平台类型。不要更改这个值。
4
指定为 control plane 机器分配的内存。
5
指定在其上部署 control plane 的网络。
注意

如果集群被配置为使用故障域,则此参数会在故障域中配置。如果您在使用故障域时在供应商规格中指定这个值,则 Control Plane Machine Set Operator 会忽略它。

6
指定为 control plane 机器分配的 CPU 数量。
7
指定每个 control plane CPU 的内核数。
8
指定要使用的 vSphere 虚拟机模板,如 user-5ddjd-rhcos
9
指定 control plane 用户数据 secret。不要更改这个值。
10
指定 control plane 的工作区详情。
注意

如果集群被配置为使用故障域,则这些参数会在故障域中配置。如果您在使用故障域时在供应商规格中指定这个值,则 Control Plane Machine Set Operator 会忽略它。

11
指定 control plane 的 vCenter 数据中心。
12
为 control plane 指定 vCenter 数据存储。
13
指定 vCenter 中 vSphere 虚拟机文件夹的路径,如 /dc1/vm/user-inst-5ddjd
14
指定虚拟机的 vSphere 资源池。
15
指定 vCenter 服务器 IP 或完全限定域名。
12.5.6.1.2. VMware vSphere 故障域配置示例

在 VMware vSphere 基础架构上,集群范围的基础架构自定义资源定义(CRD) infrastructures.config.openshift.io 定义集群的故障域。ControlPlaneMachineSet 自定义资源 (CR) 中的 providerSpec 指定 control plane 机器集使用的故障域的名称,以确保 control plane 节点部署到适当的故障域中。故障域是一个基础架构资源,由 control plane 机器集、vCenter 数据中心、vCenter 数据存储和网络组成。

通过使用故障域资源,您可以使用 control plane 机器集在单独的集群或数据中心上部署 control plane 机器。control plane 机器集还在定义的故障域间平衡 control plane 机器,以便为基础架构提供容错功能。

注意

如果您修改了 ControlPlaneMachineSet CR 中的 ProviderSpec 配置,control plane 机器集会更新在主基础架构上部署的所有 control plane 机器和每个故障域基础架构。

VMware vSphere 故障域值示例

apiVersion: machine.openshift.io/v1
kind: ControlPlaneMachineSet
metadata:
  name: cluster
  namespace: openshift-machine-api
spec:
# ...
  template:
# ...
    machines_v1beta1_machine_openshift_io:
      failureDomains: 1
        platform: VSphere
        vsphere: 2
        - name: <failure_domain_name1>
        - name: <failure_domain_name2>
# ...

1
指定 OpenShift Container Platform 集群节点的 vCenter 位置。
2
根据 control plane 机器集的名称指定故障域。
重要

本节中的每个 name 字段值必须与集群范围的基础架构 CRD 的 failureDomains.name 字段中对应的值匹配。您可以运行以下命令来找到 failureDomains.name 字段的值:

$ oc get infrastructure cluster -o=jsonpath={.spec.platformSpec.vsphere.failureDomains[0].name

name 字段是您可以在 ControlPlaneMachineSet CR 中指定的唯一支持的故障域字段。

有关为每个故障域定义资源的集群范围基础架构 CRD 的示例,请参阅"在 vSphere 上为集群指定多个区域和区域"

12.5.6.2. 为 control plane 机器启用 VMware vSphere 功能

您可以通过更新 control plane 机器集中的值来启用功能。

12.5.6.2.1. 使用机器集向机器添加标签

OpenShift Container Platform 为其创建的每个虚拟机 (VM) 添加特定于集群的标签。安装程序使用这些标签在卸载集群时选择要删除的虚拟机。

除了分配给虚拟机的特定于集群的标签外,您还可以将机器集配置为向它置备的虚拟机中添加最多 10 个额外的 vSphere 标签。

先决条件

  • 您可以使用具有 cluster-admin 权限的账户访问在 vSphere 上安装的 OpenShift Container Platform 集群。
  • 您可以访问与集群关联的 VMware vCenter 控制台。
  • 您已在 vCenter 控制台中创建了标签。
  • 已安装 OpenShift CLI(oc)。

流程

  1. 使用 vCenter 控制台查找您要添加到机器的任何标签的标签 ID:

    1. 登录到 vCenter 控制台。
    2. Home 菜单中,点 Tags & Custom Attributes
    3. 选择您要添加到机器的标签。
    4. 使用您选择的标签的浏览器 URL 来识别标签 ID。

      标签 URL 示例

      https://vcenter.example.com/ui/app/tags/tag/urn:vmomi:InventoryServiceTag:208e713c-cae3-4b7f-918e-4051ca7d1f97:GLOBAL/permissions

      标签 ID 示例

      urn:vmomi:InventoryServiceTag:208e713c-cae3-4b7f-918e-4051ca7d1f97:GLOBAL

  2. 在文本编辑器中,为现有机器集打开 YAML 文件或创建新机器。
  3. 编辑 providerSpec 字段中的以下行:

    apiVersion: machine.openshift.io/v1
    kind: ControlPlaneMachineSet
    # ...
    spec:
      template:
        spec:
          providerSpec:
            value:
              tagIDs: 1
              - <tag_id_value> 2
    # ...
    1
    指定要添加到此机器集置备的机器上最多 10 个标签列表。
    2
    指定要添加到机器的标签值。例如,urn:vmomi:InventoryServiceTag:208e713c-cae3-4b7f-918e-4051ca7d1f97:GLOBAL.
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.