1.5. 检查机器配置池状态
要查看 Machine Config Operator(MCO)、其子组件及其管理的资源的状态,请使用以下 oc
命令:
流程
要查看集群中为每个机器配置池 (MCP) 中可用 MCO 管理的节点数量,请运行以下命令:
$ oc get machineconfigpool
输出示例
NAME CONFIG UPDATED UPDATING DEGRADED MACHINECOUNT READYMACHINECOUNT UPDATEDMACHINECOUNT DEGRADEDMACHINECOUNT AGE master rendered-master-06c9c4… True False False 3 3 3 0 4h42m worker rendered-worker-f4b64… False True False 3 2 2 0 4h42m
其中:
- UPDATED
-
True
状态表示 MCO 已将当前机器配置应用到该 MCP 中的节点。当前机器配置在oc get mcp
输出中的STATUS
字段中指定。False
状态表示 MCP 中的节点正在更新。 - UPDATING
-
True
状态表示 MCO 正在按照MachineConfigPool
自定义资源中的规定应用到该 MCP 中的至少一个节点。所需的机器配置是新编辑的机器配置。要进行更新的节点可能不适用于调度。False
状态表示 MCP 中的所有节点都已更新。 - DEGRADED
-
True
状态表示 MCO 被禁止将当前或所需的机器配置应用到该 MCP 中的至少一个节点,或者配置失败。降级的节点可能不适用于调度。False
状态表示 MCP 中的所有节点都就绪。 - MACHINECOUNT
- 表示该 MCP 中的机器总数。
- READYMACHINECOUNT
- 指明 MCP 中准备进行调度的机器总数。
- UPDATEDMACHINECOUNT
- 指明 MCP 中有当前机器配置的机器总数。
- DEGRADEDMACHINECOUNT
- 指明 MCP 中标记为 degraded 或 unreconcilable 的机器总数。
在前面的输出中,有三个 control plane (master) 节点和三个 worker 节点。control plane MCP 和关联的节点更新至当前机器配置。worker MCP 中的节点会更新为所需的机器配置。worker MCP 中的两个节点被更新,一个仍在更新,如
UPDATEDMACHINECOUNT
为2
。没有问题,如DEGRADEDMACHINECOUNT
为0
,DEGRADED
为False
。虽然 MCP 中的节点正在更新,但
CONFIG
下列出的机器配置是当前的机器配置,该配置会从这个配置进行更新。更新完成后,列出的机器配置是所需的机器配置,它被更新为 MCP。注意如果节点被封锁,则该节点不包含在
READYMACHINECOUNT
中,但包含在MACHINECOUNT
中。另外,MCP 状态被设置为UPDATING
。因为节点具有当前的机器配置,所以它被计算在UPDATEDMACHINECOUNT
总计:输出示例
NAME CONFIG UPDATED UPDATING DEGRADED MACHINECOUNT READYMACHINECOUNT UPDATEDMACHINECOUNT DEGRADEDMACHINECOUNT AGE master rendered-master-06c9c4… True False False 3 3 3 0 4h42m worker rendered-worker-c1b41a… False True False 3 2 3 0 4h42m
要通过检查
MachineConfigPool
自定义资源来检查 MCP 中的节点状态,请运行以下命令:$ oc describe mcp worker
输出示例
... Degraded Machine Count: 0 Machine Count: 3 Observed Generation: 2 Ready Machine Count: 3 Unavailable Machine Count: 0 Updated Machine Count: 3 Events: <none>
注意如果节点被封锁,则节点不包含在
Ready Machine Count
中。它包含在Unavailable Machine Count
中:输出示例
... Degraded Machine Count: 0 Machine Count: 3 Observed Generation: 2 Ready Machine Count: 2 Unavailable Machine Count: 1 Updated Machine Count: 3
要查看每个现有的
MachineConfig
对象,请运行以下命令:$ oc get machineconfigs
输出示例
NAME GENERATEDBYCONTROLLER IGNITIONVERSION AGE 00-master 2c9371fbb673b97a6fe8b1c52... 3.2.0 5h18m 00-worker 2c9371fbb673b97a6fe8b1c52... 3.2.0 5h18m 01-master-container-runtime 2c9371fbb673b97a6fe8b1c52... 3.2.0 5h18m 01-master-kubelet 2c9371fbb673b97a6fe8b1c52… 3.2.0 5h18m ... rendered-master-dde... 2c9371fbb673b97a6fe8b1c52... 3.2.0 5h18m rendered-worker-fde... 2c9371fbb673b97a6fe8b1c52... 3.2.0 5h18m
请注意,列为
rendered
的MachineConfig
对象并不意味着要更改或删除。要查看特定机器配置的内容(本例中为
01-master-kubelet
),请运行以下命令:$ oc describe machineconfigs 01-master-kubelet
命令的输出显示此
MachineConfig
对象同时包含配置文件(cloud.conf
和kubelet.conf
) 和 systemd 服务(Kubernetes Kubelet):输出示例
Name: 01-master-kubelet ... Spec: Config: Ignition: Version: 3.2.0 Storage: Files: Contents: Source: data:, Mode: 420 Overwrite: true Path: /etc/kubernetes/cloud.conf Contents: Source: data:,kind%3A%20KubeletConfiguration%0AapiVersion%3A%20kubelet.config.k8s.io%2Fv1beta1%0Aauthentication%3A%0A%20%20x509%3A%0A%20%20%20%20clientCAFile%3A%20%2Fetc%2Fkubernetes%2Fkubelet-ca.crt%0A%20%20anonymous... Mode: 420 Overwrite: true Path: /etc/kubernetes/kubelet.conf Systemd: Units: Contents: [Unit] Description=Kubernetes Kubelet Wants=rpc-statd.service network-online.target crio.service After=network-online.target crio.service ExecStart=/usr/bin/hyperkube \ kubelet \ --config=/etc/kubernetes/kubelet.conf \ ...
如果应用的机器配置出现问题,您可以随时退出这一更改。例如,如果您运行 oc create -f ./myconfig.yaml
以应用机器配置,您可以运行以下命令来删除该机器配置:
$ oc delete -f ./myconfig.yaml
如果这是唯一的问题,则受影响池中的节点应返回非降级状态。这会导致呈现的配置回滚到其之前更改的状态。
如果在集群中添加自己的机器配置,您可以使用上例中显示的命令检查其状态以及应用到它们的池的相关状态。