$ oc get machine -n openshift-machine-api
机器经历具有多个定义阶段的生命周期。了解机器生命周期及其阶段可以帮助您验证过程是否完成或排除意外行为。在 OpenShift Container Platform 中,机器生命周期在所有受支持的云提供商中保持一致。
机器在其生命周期中移动时,会经过不同的阶段。每个阶段都是机器状态的基本表示。
预配中有一个请求来预配一台新机器。机器尚不存在,并且没有实例、提供商 ID 或地址。
已预配机器存在并具有提供商 ID 或地址。云提供商已为机器创建了一个实例。机器尚未成为节点,并且机器对象的status.nodeRef部分尚未填充。
运行中机器存在并具有提供商 ID 或地址。Ignition 已成功运行,并且集群机器审批者已批准证书签名请求 (CSR)。机器已成为节点,并且机器对象的status.nodeRef部分包含节点详细信息。
删除中有一个请求来删除机器。机器对象具有一个DeletionTimestamp字段,该字段指示删除请求的时间。
失败机器存在无法恢复的问题。例如,如果云提供商删除了机器的实例,则可能会发生这种情况。
生命周期从预配机器的请求开始,直到机器不再存在为止。
机器生命周期按以下顺序进行。此概述中不包括由于错误或生命周期挂钩造成的中断。
出于以下原因之一,需要预配一台新机器
集群管理员扩展机器集,因此需要更多机器。
自动缩放策略扩展机器集,因此需要更多机器。
由机器集管理的机器发生故障或被删除,并且机器集创建替换机器以维护所需的机器数量。
机器进入预配中阶段。
基础架构提供商为机器创建实例。
机器具有提供商 ID 或地址,并进入已预配阶段。
Ignition 配置文件正在处理。
kubelet 发出证书签名请求 (CSR)。
集群机器审批者批准 CSR。
机器成为节点并进入运行中阶段。
出于以下原因之一,计划删除现有机器
具有cluster-admin权限的用户使用oc delete machine命令。
机器获得machine.openshift.io/delete-machine注释。
管理机器的机器集将其标记为删除,以作为协调的一部分减少副本计数。
集群自动缩放器识别一个不必要的节点来满足集群的部署需求。
配置机器健康检查以替换不健康的机器。
机器进入删除中阶段,在此阶段它被标记为删除,但仍存在于 API 中。
机器控制器从基础架构提供商中删除实例。
机器控制器删除Node对象。
您可以使用 OpenShift CLI (oc) 或 Web 控制台找到机器的阶段。您可以使用此信息来验证过程是否完成或排除意外行为。
您可以使用 OpenShift CLI (oc) 查找机器的阶段。
您已使用具有cluster-admin权限的帐户访问OpenShift Container Platform集群。
您已安装oc CLI。
运行以下命令列出集群中的机器
$ oc get machine -n openshift-machine-api
NAME PHASE TYPE REGION ZONE AGE
mycluster-5kbsp-master-0 Running m6i.xlarge us-west-1 us-west-1a 4h55m
mycluster-5kbsp-master-1 Running m6i.xlarge us-west-1 us-west-1b 4h55m
mycluster-5kbsp-master-2 Running m6i.xlarge us-west-1 us-west-1a 4h55m
mycluster-5kbsp-worker-us-west-1a-fmx8t Running m6i.xlarge us-west-1 us-west-1a 4h51m
mycluster-5kbsp-worker-us-west-1a-m889l Running m6i.xlarge us-west-1 us-west-1a 4h51m
mycluster-5kbsp-worker-us-west-1b-c8qzm Running m6i.xlarge us-west-1 us-west-1b 4h51m
输出的PHASE列包含每台机器的阶段。
您可以使用OpenShift Container Platform Web控制台查找机器的阶段。
您已使用具有cluster-admin权限的帐户访问OpenShift Container Platform集群。
以具有cluster-admin角色的用户身份登录Web控制台。
导航到**计算** → **机器**。
在**机器**页面上,选择要查找其阶段的机器的名称。
在**机器详细信息**页面上,选择**YAML**选项卡。
在YAML块中,查找status.phase字段的值。
apiVersion: machine.openshift.io/v1beta1
kind: Machine
metadata:
name: mycluster-5kbsp-worker-us-west-1a-fmx8t
# ...
status:
phase: Running (1)
| 1 | 在此示例中,阶段为Running。 |