18.4. 在故障域间分布计算机器
您可以使用以下方法之一在 Nutanix 故障域间分发计算机器:
- 通过 编辑现有的计算机器集,您可以在 Nutanix 故障域间分发计算机器,作为最小配置更新。
- 替换现有计算机器集 可确保规格不可变,且所有机器都相同。
18.4.1. 编辑计算机器集以实施故障域
要使用现有计算机器集在 Nutanix 故障域之间分发计算机器,您可以使用您的配置更新计算机器集,然后使用扩展来替换现有的计算机器。
先决条件
- 您已在集群的 Infrastructure 自定义资源 (CR) 中配置了故障域。
流程
运行以下命令,以查看集群的 Infrastructure CR。
$ oc describe infrastructures.config.openshift.io cluster
-
对于每个故障域 (
platformSpec.nutanix.failureDomains
),请注意集群的 UUID、名称和子网对象 UUID。这些值需要将故障域添加到计算机器集中。 运行以下命令列出集群中的计算机器集:
$ oc get machinesets -n openshift-machine-api
输出示例
NAME DESIRED CURRENT READY AVAILABLE AGE <machine_set_name_1> 1 1 1 1 55m <machine_set_name_2> 1 1 1 1 55m
运行以下命令来编辑第一个计算机器集:
$ oc edit machineset <machine_set_name_1> -n openshift-machine-api
通过将以下内容添加到
spec.template.spec.providerSpec.value
小节中,将计算机器设置配置为使用第一个故障域:注意确保为
cluster
hesubnets
字段指定的值与集群的 Infrastructure CR 中的failureDomains
小节中配置的值匹配。使用 Nutanix 故障域的计算机器集示例
apiVersion: machine.openshift.io/v1 kind: MachineSet metadata: creationTimestamp: null labels: machine.openshift.io/cluster-api-cluster: <cluster_name> name: <machine_set_name_1> namespace: openshift-machine-api spec: replicas: 2 # ... template: spec: # ... providerSpec: value: apiVersion: machine.openshift.io/v1 failureDomain: name: <failure_domain_name_1> cluster: type: uuid uuid: <prism_element_uuid_1> subnets: - type: uuid uuid: <prism_element_network_uuid_1> # ...
-
注意
spec.replicas
的值,因为在扩展计算机器时需要它来应用更改。 - 保存您的更改。
运行以下命令,列出由更新的计算机器集管理的机器:
$ oc get -n openshift-machine-api machines \ -l machine.openshift.io/cluster-api-machineset=<machine_set_name_1>
输出示例
NAME PHASE TYPE REGION ZONE AGE <machine_name_original_1> Running AHV Unnamed Development-STS 4h <machine_name_original_2> Running AHV Unnamed Development-STS 4h
对于由更新的计算机器集管理的每台机器,请运行以下命令设置
delete
注解:$ oc annotate machine/<machine_name_original_1> \ -n openshift-machine-api \ machine.openshift.io/delete-machine="true"
要使用新配置创建替换机器,请运行以下命令将计算机器设置为两倍:
$ oc scale --replicas=<twice_the_number_of_replicas> \1 machineset <machine_set_name_1> \ -n openshift-machine-api
- 1
- 例如,如果计算机器设置中的原始副本数为
2
,请将副本扩展到4
。
运行以下命令,列出由更新的计算机器集管理的机器:
$ oc get -n openshift-machine-api machines -l machine.openshift.io/cluster-api-machineset=<machine_set_name_1>
当新机器处于
Running
阶段时,您可以将计算机器设置为原始副本数。要删除使用旧配置创建的机器,请运行以下命令将计算机器设置为原始副本数:
$ oc scale --replicas=<original_number_of_replicas> \1 machineset <machine_set_name_1> \ -n openshift-machine-api
- 1
- 例如,如果计算机器设置中的原始副本数为
2
,请将副本扩展到2
。
- 根据需要,继续修改机器集以引用可用于部署的额外故障域。
其他资源
18.4.2. 替换计算机器集以实施故障域
要通过替换计算机器集来跨 Nutanix 故障域分发计算机器,您可以使用您的配置创建新的计算机器集,等待它创建的机器启动,然后删除旧的计算机器集。
先决条件
- 您已在集群的 Infrastructure 自定义资源 (CR) 中配置了故障域。
流程
运行以下命令,以查看集群的 Infrastructure CR。
$ oc describe infrastructures.config.openshift.io cluster
-
对于每个故障域 (
platformSpec.nutanix.failureDomains
),请注意集群的 UUID、名称和子网对象 UUID。这些值需要将故障域添加到计算机器集中。 运行以下命令列出集群中的计算机器集:
$ oc get machinesets -n openshift-machine-api
输出示例
NAME DESIRED CURRENT READY AVAILABLE AGE <original_machine_set_name_1> 1 1 1 1 55m <original_machine_set_name_2> 1 1 1 1 55m
- 请注意现有计算机器集的名称。
使用以下方法之一创建一个包含新计算机器设置自定义资源 (CR) 的 YAML 文件:
运行以下命令,将现有计算机器集配置复制到新文件中:
$ oc get machineset <original_machine_set_name_1> \ -n openshift-machine-api -o yaml > <new_machine_set_name_1>.yaml
您可以使用首选文本编辑器编辑此 YAML 文件。
使用您的首选文本编辑器创建名为
<new_machine_set_name_1>.yaml
的空白 YAML 文件,并包含新计算机器集所需的值。如果您不确定为特定字段设置哪个值,您可以通过运行以下命令来查看现有计算机器集 CR 的值:
$ oc get machineset <original_machine_set_name_1> \ -n openshift-machine-api -o yaml
输出示例
apiVersion: machine.openshift.io/v1beta1 kind: MachineSet metadata: labels: machine.openshift.io/cluster-api-cluster: <infrastructure_id> 1 name: <infrastructure_id>-<role> 2 namespace: openshift-machine-api spec: replicas: 1 selector: matchLabels: machine.openshift.io/cluster-api-cluster: <infrastructure_id> machine.openshift.io/cluster-api-machineset: <infrastructure_id>-<role> template: metadata: labels: machine.openshift.io/cluster-api-cluster: <infrastructure_id> machine.openshift.io/cluster-api-machine-role: <role> machine.openshift.io/cluster-api-machine-type: <role> machine.openshift.io/cluster-api-machineset: <infrastructure_id>-<role> spec: providerSpec: 3 ...
通过更新或将以下内容添加到
<new_machine_set_name_1>.yaml
文件中的spec.template.spec.providerSpec.value
小节中,将新的计算机器集配置为使用第一个故障域。注意确保为
cluster
hesubnets
字段指定的值与集群的 Infrastructure CR 中的failureDomains
小节中配置的值匹配。使用 Nutanix 故障域的计算机器集示例
apiVersion: machine.openshift.io/v1 kind: MachineSet metadata: creationTimestamp: null labels: machine.openshift.io/cluster-api-cluster: <cluster_name> name: <new_machine_set_name_1> namespace: openshift-machine-api spec: replicas: 2 # ... template: spec: # ... providerSpec: value: apiVersion: machine.openshift.io/v1 failureDomain: name: <failure_domain_name_1> cluster: type: uuid uuid: <prism_element_uuid_1> subnets: - type: uuid uuid: <prism_element_network_uuid_1> # ...
- 保存您的更改。
运行以下命令来创建计算机器设置 CR:
$ oc create -f <new_machine_set_name_1>.yaml
- 根据需要,继续创建计算机器集以引用可用于部署的额外故障域。
通过为每个新计算机器集运行以下命令来列出由新计算机器集管理的机器:
$ oc get -n openshift-machine-api machines -l machine.openshift.io/cluster-api-machineset=<new_machine_set_name_1>
输出示例
NAME PHASE TYPE REGION ZONE AGE <machine_from_new_1> Provisioned AHV Unnamed Development-STS 25s <machine_from_new_2> Provisioning AHV Unnamed Development-STS 25s
当新机器处于
Running
阶段时,您可以删除不包含故障域配置的旧计算机器集。当您确认新机器处于
Running
阶段时,通过为每个机器运行以下命令来删除旧计算机器集:$ oc delete machineset <original_machine_set_name_1> -n openshift-machine-api
验证
要验证没有更新的配置的计算机器集已被删除,请运行以下命令列出集群中的计算机器集:
$ oc get machinesets -n openshift-machine-api
输出示例
NAME DESIRED CURRENT READY AVAILABLE AGE <new_machine_set_name_1> 1 1 1 1 4m12s <new_machine_set_name_2> 1 1 1 1 4m12s
要验证没有更新配置的计算机器是否已删除,请运行以下命令列出集群中的机器:
$ oc get -n openshift-machine-api machines
删除过程中的输出示例
NAME PHASE TYPE REGION ZONE AGE <machine_from_new_1> Running AHV Unnamed Development-STS 5m41s <machine_from_new_2> Running AHV Unnamed Development-STS 5m41s <machine_from_original_1> Deleting AHV Unnamed Development-STS 4h <machine_from_original_2> Deleting AHV Unnamed Development-STS 4h
删除完成后的输出示例
NAME PHASE TYPE REGION ZONE AGE <machine_from_new_1> Running AHV Unnamed Development-STS 6m30s <machine_from_new_2> Running AHV Unnamed Development-STS 6m30s
要验证由新计算机器集创建的机器是否具有正确的配置,请运行以下命令检查 CR 中的相关字段是否有新机器:
$ oc describe machine <machine_from_new_1> -n openshift-machine-api
其他资源