$ oc edit infrastructures.config.openshift.io cluster
默认情况下,安装程序将控制平面和计算机器安装到单个Nutanix Prism Element(集群)中。为了提高OpenShift Container Platform集群的容错能力,您可以指定将这些机器分布在多个Nutanix集群中,方法是配置故障域。
故障域表示在安装期间和之后可用于OpenShift Container Platform机器池的附加Prism Element实例。
OpenShift Container Platform安装方法决定了如何以及何时配置故障域。
如果使用安装程序预置的基础架构进行部署,则可以在部署集群之前在安装配置文件中配置故障域。有关更多信息,请参见配置故障域。
您也可以在集群部署后配置故障域。有关部署后配置故障域的更多信息,请参见向现有Nutanix集群添加故障域。
如果使用您管理的基础架构(用户预置的基础架构)进行部署,则无需其他配置。集群部署后,您可以手动跨故障域分配控制平面和计算机器。
默认情况下,安装程序将控制平面和计算机器安装到单个Nutanix Prism Element(集群)中。部署OpenShift Container Platform集群后,您可以通过使用故障域向部署添加其他Prism Element实例来提高其容错能力。
故障域表示可以部署新的控制平面和计算机器以及可以分配现有控制平面和计算机器的单个Prism Element实例。
规划使用故障域时,请考虑以下要求:
所有Nutanix Prism Element实例都必须由同一Prism Central实例管理。不支持由多个Prism Central实例组成的部署。
构成Prism Element集群的机器必须位于同一个以太网网络上,以便故障域能够相互通信。
每个将用作OpenShift Container Platform集群中故障域的Prism Element都需要一个子网。定义这些子网时,它们必须共享相同的IP地址前缀(CIDR),并且应包含OpenShift Container Platform集群使用的虚拟IP地址。
您可以通过修改其基础设施自定义资源 (CR) (infrastructures.config.openshift.io
) 来向现有的Nutanix集群添加故障域。
建议您配置三个故障域以确保高可用性。 |
运行以下命令编辑基础设施CR:
$ oc edit infrastructures.config.openshift.io cluster
配置故障域。
spec:
cloudConfig:
key: config
name: cloud-provider-config
#...
platformSpec:
nutanix:
failureDomains:
- cluster:
type: UUID
uuid: <uuid>
name: <failure_domain_name>
subnets:
- type: UUID
uuid: <network_uuid>
- cluster:
type: UUID
uuid: <uuid>
name: <failure_domain_name>
subnets:
- type: UUID
uuid: <network_uuid>
- cluster:
type: UUID
uuid: <uuid>
name: <failure_domain_name>
subnets:
- type: UUID
uuid: <network_uuid>
# ...
其中
<uuid>
指定Prism Element的通用唯一标识符 (UUID)。
<failure_domain_name>
指定故障域的唯一名称。名称限制为64个或更少的字符,可以包含小写字母、数字和破折号 (-
)。破折号不能位于名称的开头或结尾位置。
<network_uuid>
指定Prism Element子网对象的UUID。子网的IP地址前缀(CIDR)应包含OpenShift Container Platform集群使用的虚拟IP地址。OpenShift Container Platform集群中每个故障域(Prism Element)仅支持一个子网。
保存CR以应用更改。
您可以通过修改控制平面机器集自定义资源 (CR) 来跨Nutanix故障域分配控制平面。
您已在集群的 Infrastructure 自定义资源 (CR) 中配置了故障域。
控制平面机器集自定义资源 (CR) 处于活动状态。
有关检查控制平面机器集自定义资源状态的更多信息,请参阅“附加资源”。
运行以下命令来编辑控制平面机器集 CR
$ oc edit controlplanemachineset.machine.openshift.io cluster -n openshift-machine-api
通过添加spec.template.machines_v1beta1_machine_openshift_io.failureDomains
节来配置控制平面机器集以使用故障域。
apiVersion: machine.openshift.io/v1
kind: ControlPlaneMachineSet
metadata:
creationTimestamp: null
labels:
machine.openshift.io/cluster-api-cluster: <cluster_name>
name: cluster
namespace: openshift-machine-api
spec:
# ...
template:
machineType: machines_v1beta1_machine_openshift_io
machines_v1beta1_machine_openshift_io:
failureDomains:
platform: Nutanix
nutanix:
- name: <failure_domain_name_1>
- name: <failure_domain_name_2>
- name: <failure_domain_name_3>
# ...
保存您的更改。
默认情况下,控制平面机器集会自动将更改传播到您的控制平面配置。如果集群配置为使用OnDelete
更新策略,则必须手动替换您的控制平面。有关更多信息,请参阅“附加资源”。
您可以通过以下方式之一跨 Nutanix 故障域分配计算机器
编辑现有的计算机器集 允许您作为最小配置更新跨 Nutanix 故障域分配计算机器。
替换现有的计算机器集 可确保规范不变,并且所有机器都相同。
要使用现有的计算机器集跨 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
节来配置计算机器集以使用第一个故障域。
请确保您为 |
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 。 |
根据需要,继续修改机器集以引用部署可用的其他故障域。
要通过替换计算机器集跨 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)
...
1 | 集群基础设施 ID。 | ||
2 | 默认节点标签。
|
||
3 | 计算机器集 CR 的<providerSpec> 部分中的值是特定于平台的。有关 CR 中<providerSpec> 参数的更多信息,请参阅您提供程序的示例计算机器集 CR 配置。 |
通过更新或添加以下内容到<new_machine_set_name_1>.yaml
文件中的spec.template.spec.providerSpec.value
节来配置新的计算机器集以使用第一个故障域。
请确保您为 |
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