$ oc get controlplanemachineset.machine.openshift.io cluster \
--namespace openshift-machine-api
使用本节中的信息来了解和恢复您可能遇到的问题。
您可以验证 `ControlPlaneMachineSet` 自定义资源 (CR) 的存在和状态。
通过运行以下命令确定 CR 的状态
$ oc get controlplanemachineset.machine.openshift.io cluster \
--namespace openshift-machine-api
`Active` 的结果表示 `ControlPlaneMachineSet` CR 存在并已激活。不需要管理员操作。
`Inactive` 的结果表示 `ControlPlaneMachineSet` CR 存在但未激活。
`NotFound` 的结果表示不存在 `ControlPlaneMachineSet` CR。
要使用控制平面机器集,您必须确保存在具有适合您集群的正确设置的 `ControlPlaneMachineSet` CR。
如果您的集群具有现有的 CR,则必须验证 CR 中的配置是否适合您的集群。
如果您的集群没有现有的 CR,则必须创建一个具有适合您集群的正确配置的 CR。
Azure 中的 `ControlPlaneMachineSet` 和控制平面 `Machine` 自定义资源 (CR) 都需要 `internalLoadBalancer` 参数。如果此参数未在您的集群上预配置,则必须将其添加到这两个 CR。
有关此参数在 Azure 提供程序规范中的位置的更多信息,请参见 Azure 提供程序规范示例。在控制平面 `Machine` CR 中的位置类似。
通过运行以下命令列出集群中的控制平面机器
$ oc get machines \
-l machine.openshift.io/cluster-api-machine-role==master \
-n openshift-machine-api
对于每台控制平面机器,通过运行以下命令编辑 CR
$ oc edit machine <control_plane_machine_name>
添加具有适合您集群的正确详细信息的 `internalLoadBalancer` 参数并保存您的更改。
通过运行以下命令编辑您的控制平面机器集 CR
$ oc edit controlplanemachineset.machine.openshift.io cluster \
-n openshift-machine-api
添加具有适合您集群的正确详细信息的 `internalLoadBalancer` 参数并保存您的更改。
对于使用默认 `RollingUpdate` 更新策略的集群,操作符会自动将更改传播到您的控制平面配置。
对于配置为使用 `OnDelete` 更新策略的集群,您必须手动替换控制平面机器。
某些情况可能导致 etcd 操作符降级。
例如,在执行补救措施时,机器健康检查可能会删除托管 etcd 的控制平面机器。如果此时无法访问 etcd 成员,则 etcd 操作符将降级。
当 etcd 操作符降级时,需要手动干预以强制操作符删除失败的成员并恢复集群状态。
通过运行以下命令列出集群中的控制平面机器
$ oc get machines \
-l machine.openshift.io/cluster-api-machine-role==master \
-n openshift-machine-api \
-o wide
以下任何条件都可能表示控制平面机器失败
`STATE` 值为 `stopped`。
`PHASE` 值为 `Failed`。
`PHASE` 值超过十分钟为 `Deleting`。
在继续之前,请确保您的集群有两个健康的控制平面机器。在这个过程中对超过一台控制平面机器执行操作可能会导致 etcd 失去仲裁,并可能导致数据丢失。 如果您丢失了大部分控制平面主机,导致 etcd 失去仲裁,则必须遵循灾难恢复过程“恢复到之前的集群状态”,而不是此过程。 |
运行以下命令来编辑故障控制平面机器的机器 CR:
$ oc edit machine <control_plane_machine_name>
删除故障控制平面机器的lifecycleHooks
参数的内容,并保存更改。
etcd 运算符会将故障机器从集群中移除,然后可以安全地添加新的 etcd 成员。
对于使用 OpenShift Container Platform 4.13 或更早版本创建的 Red Hat OpenStack Platform (RHOSP) 上运行的集群,您可能必须在可以使用控制平面机器集之前执行升级后任务。
对于您升级的一些在 Red Hat OpenStack Platform (RHOSP) 上运行的集群,如果满足以下配置,则必须手动更新机器资源才能使用控制平面机器集:
升级的集群使用 OpenShift Container Platform 4.13 或更早版本创建。
集群基础设施由安装程序配置。
机器分布在多个可用区。
机器配置为使用未定义块存储可用区的根卷。
要了解此过程为何必要,请参见 解决方案 #7024383。
对于所有控制平面机器,请编辑与环境匹配的所有控制平面机器的提供程序规范。例如,要编辑机器master-0
,请输入以下命令:
$ oc edit machine/<cluster_id>-master-0 -n openshift-machine-api
其中
<cluster_id>
指定升级集群的 ID。
在提供程序规范中,将属性rootVolume.availabilityZone
的值设置为要使用的可用区的卷。
providerSpec:
value:
apiVersion: machine.openshift.io/v1alpha1
availabilityZone: az0
cloudName: openstack
cloudsSecret:
name: openstack-cloud-credentials
namespace: openshift-machine-api
flavor: m1.xlarge
image: rhcos-4.14
kind: OpenstackProviderSpec
metadata:
creationTimestamp: null
networks:
- filter: {}
subnets:
- filter:
name: refarch-lv7q9-nodes
tags: openshiftClusterID=refarch-lv7q9
rootVolume:
availabilityZone: nova (1)
diskSize: 30
sourceUUID: rhcos-4.12
volumeType: fast-0
securityGroups:
- filter: {}
name: refarch-lv7q9-master
serverGroupName: refarch-lv7q9-master
serverMetadata:
Name: refarch-lv7q9-master
openshiftClusterID: refarch-lv7q9
tags:
- openshiftClusterID=refarch-lv7q9
trunk: true
userDataSecret:
name: master-user-data
1 | 将区域名称设置为此值。 |
如果您在初始集群部署后编辑或重新创建了机器资源,则可能需要根据您的配置调整这些步骤。 在您的 RHOSP 集群中,找到机器根卷的可用区,并将其用作值。 |
运行以下命令来检索有关控制平面机器集资源的信息:
$ oc describe controlplanemachineset.machine.openshift.io/cluster --namespace openshift-machine-api
运行以下命令来编辑资源:
$ oc edit controlplanemachineset.machine.openshift.io/cluster --namespace openshift-machine-api
对于该资源,将spec.state
属性的值设置为Active
以激活集群的控制平面机器集。
您的控制平面已准备好由集群控制平面机器集运算符管理。
对于您升级的一些在 Red Hat OpenStack Platform (RHOSP) 上运行的集群,如果满足以下配置,则必须手动更新机器资源才能使用控制平面机器集:
升级的集群使用 OpenShift Container Platform 4.13 或更早版本创建。
集群基础设施由安装程序配置。
控制平面机器分布在多个计算可用区。
要了解此过程为何必要,请参见 解决方案 #7013893。
对于master-1
和master-2
控制平面机器,打开提供程序规范进行编辑。例如,要编辑第一台机器,请输入以下命令:
$ oc edit machine/<cluster_id>-master-1 -n openshift-machine-api
其中
<cluster_id>
指定升级集群的 ID。
对于master-1
和master-2
控制平面机器,请编辑其提供程序规范中serverGroupName
属性的值,使其与机器master-0
的值匹配。
providerSpec:
value:
apiVersion: machine.openshift.io/v1alpha1
availabilityZone: az0
cloudName: openstack
cloudsSecret:
name: openstack-cloud-credentials
namespace: openshift-machine-api
flavor: m1.xlarge
image: rhcos-4.17
kind: OpenstackProviderSpec
metadata:
creationTimestamp: null
networks:
- filter: {}
subnets:
- filter:
name: refarch-lv7q9-nodes
tags: openshiftClusterID=refarch-lv7q9
securityGroups:
- filter: {}
name: refarch-lv7q9-master
serverGroupName: refarch-lv7q9-master-az0 (1)
serverMetadata:
Name: refarch-lv7q9-master
openshiftClusterID: refarch-lv7q9
tags:
- openshiftClusterID=refarch-lv7q9
trunk: true
userDataSecret:
name: master-user-data
1 | 机器master-0 、master-1 和master-3 的值必须匹配。 |
如果您在初始集群部署后编辑或重新创建了机器资源,则可能需要根据您的配置调整这些步骤。 在您的 RHOSP 集群中,找到控制平面实例所在的服务器组,并将其用作值。 |
运行以下命令来检索有关控制平面机器集资源的信息:
$ oc describe controlplanemachineset.machine.openshift.io/cluster --namespace openshift-machine-api
运行以下命令来编辑资源:
$ oc edit controlplanemachineset.machine.openshift.io/cluster --namespace openshift-machine-api
对于该资源,将spec.state
属性的值设置为Active
以激活集群的控制平面机器集。
您的控制平面已准备好由集群控制平面机器集运算符管理。