13.6. control plane 机器集故障排除
使用本节中的信息从您可能会遇到的问题了解和恢复。
13.6.1. 检查 control plane 机器设置自定义资源状态
您可以验证 ControlPlaneMachineSet
自定义资源 (CR) 是否存在以及其状态。
流程
运行以下命令确定 CR 的状态:
$ oc get controlplanemachineset.machine.openshift.io cluster \ --namespace openshift-machine-api
-
Active
的结果表示ControlPlaneMachineSet
CR 存在并被激活。不需要管理员操作。 -
Inactive
表示ControlPlaneMachineSet
CR 存在但没有激活。 -
NotFound
表示没有现有的ControlPlaneMachineSet
CR。
-
后续步骤
要使用 control plane 机器集,您必须确保集群有正确设置的 ControlPlaneMachineSet
CR。
- 如果您的集群有一个现有的 CR,您必须验证 CR 中的配置是否正确。
- 如果集群没有现有的 CR,则必须为集群创建一个带有正确配置的 CR。
13.6.2. 添加缺少的 Azure 内部负载均衡器
Azure 的 ControlPlaneMachineSet
和 control plane Machine
自定义资源(CR) 都需要 internalLoadBalancer
参数。如果集群上没有预配置此参数,则必须将其添加到两个 CR 中。
有关此参数位于 Azure 供应商规格中的更多信息,请参阅 Azure 供应商规格示例。control plane Machine
CR 中的放置类似。
流程
运行以下命令列出集群中的 control plane 机器:
$ oc get machines \ -l machine.openshift.io/cluster-api-machine-role==master \ -n openshift-machine-api
对于每个 control plane 机器,运行以下命令编辑 CR:
$ oc edit machine <control_plane_machine_name>
-
添加
internalLoadBalancer
参数,使其包含您的集群的正确详情,并保存您的更改。 运行以下命令来编辑 control plane 机器集 CR:
$ oc edit controlplanemachineset.machine.openshift.io cluster \ -n openshift-machine-api
-
添加
internalLoadBalancer
参数,使其包含您的集群的正确详情,并保存您的更改。
后续步骤
-
对于使用默认
RollingUpdate
更新策略的集群,Operator 会自动将更改传播到 control plane 配置。 -
对于配置为使用
OnDelete
更新策略的集群,您必须手动替换 control plane 机器。
其他资源
13.6.3. 恢复降级的 etcd Operator
在某些情况下可能会导致 etcd Operator 降级。
例如,在执行补救时,机器健康检查可能会删除托管 etcd 的 control plane 机器。如果此时无法访问 etcd 成员,etcd Operator 会降级。
当 etcd Operator 降级时,需要人工干预才能强制 Operator 删除失败的成员并恢复集群状态。
流程
运行以下命令列出集群中的 control plane 机器:
$ oc get machines \ -l machine.openshift.io/cluster-api-machine-role==master \ -n openshift-machine-api \ -o wide
以下任何条件都可能表示 control plane 机器失败:
-
STATE
值为stopped
。 -
PHASE
值是Failed
。 -
PHASE
值为Deleting
超过十分钟。
重要在继续操作前,请确保集群有两个健康的 control plane 机器。对多个 control plane 机器执行操作可能会丢失 etcd 仲裁,并可能导致数据丢失。
如果您丢失了大多数 control plane 主机,并导致 etcd 仲裁丢失,那么您必须遵循灾难恢复流程 "Restoring to a previous cluster state" 而不是此过程。
-
运行以下命令,编辑失败的 control plane 机器的机器 CR:
$ oc edit machine <control_plane_machine_name>
从失败的 control plane 机器中删除
lifecycleHooks
参数的内容并保存您的更改。etcd Operator 从集群中移除失败的机器,然后可以安全地添加新的 etcd 成员。
其他资源