7.5.6.2. 使用 CLI 禁用 Machine Config Operator 自动重新引导

为了避免对 Machine Config Operator(MCO)所做的更改造成不必要的中断,您可以使用 OpenShift CLI(oc)来修改机器配置池(MCP),以防止 MCO 在那个池中对节点进行任何更改。这会防止任何通常属于 MCO 更新过程一部分的重启。

注意

暂停 MCP 可防止 MCO 在关联的节点上应用任何配置更改。暂停 MCP 还可以防止任何自动轮转的证书被推送到关联的节点,包括自动轮转 kube-apiserver-to-kubelet-signer CA 证书。如果在 kube-apiserver-to-kubelet-signer CA 证书过期且 MCO 尝试自动续订证书时,MCP 会暂停,但不会在暂停的 MCP 中跨节点应用新证书。这会导致多个 oc 命令失败,包括但不限于 oc debugoc logsoc execoc attach。在暂停 MCP 时应该非常小心,需要仔细考虑 kube-apiserver-to-kubelet-signer CA 证书过期的问题,且仅在短时间内暂停。

新 CA 证书会在自安装日期起的 292 天生成,并在自该日期起的 365 天后删除。要确定下一个自动 CA 证书轮转,请参阅 Red Hat OpenShift 4 中的了解 CA 证书自动续订

先决条件

  • 您可以使用具有 cluster-admin 角色的用户访问集群。
  • 已安装 OpenShift CLI(oc)。

流程

要暂停或取消暂停自动 MCO 更新重新引导:

  • 暂停自动引导过程:

    1. 更新 MachineConfigPool 自定义资源,将 spec.paused 字段设置为 true

      Control plane(master)节点

      $ oc patch --type=merge --patch='{"spec":{"paused":true}}' machineconfigpool/master

      Worker 节点

      $ oc patch --type=merge --patch='{"spec":{"paused":true}}' machineconfigpool/worker

    2. 验证 MCP 是否已暂停:

      Control plane(master)节点

      $ oc get machineconfigpool/master --template='{{.spec.paused}}'

      Worker 节点

      $ oc get machineconfigpool/worker --template='{{.spec.paused}}'

      输出示例

      true

      spec.paused 字段为 true,MCP 暂停。

    3. 确定 MCP 是否有待处理的更改:

      # oc get machineconfigpool

      输出示例

      NAME     CONFIG                                             UPDATED   UPDATING
      master   rendered-master-33cf0a1254318755d7b48002c597bf91   True      False
      worker   rendered-worker-e405a5bdb0db1295acea08bcca33fa60   False     False

      如果 UPDATED 列是 FalseUPDATINGFalse,则有待处理的更改。当 UPDATEDTrueUPDATINGFalse 时,没有待处理的更改。在上例中,worker 节点有待处理的变化。control plane 节点(也称为 master 节点)没有任何待处理的更改。

      重要

      如果有尚未进行的更改( UpdatedUpdating 字段都是 False),建议您尽快调度一个维护窗口用于重启。使用以下步骤取消暂停自动引导过程,以应用上一次重启后排队的更改。

  • 取消暂停自动引导过程:

    1. 更新 MachineConfigPool 自定义资源,将 spec.paused 字段设置为 false

      Control plane(master)节点

      $ oc patch --type=merge --patch='{"spec":{"paused":false}}' machineconfigpool/master

      Worker 节点

      $ oc patch --type=merge --patch='{"spec":{"paused":false}}' machineconfigpool/worker

      注意

      通过取消暂停 MCP,MCO 应用所有暂停的更改,根据需要重启 Red Hat Enterprise Linux CoreOS(RHCOS)。

    2. 验证 MCP 是否已取消暂停:

      Control plane(master)节点

      $ oc get machineconfigpool/master --template='{{.spec.paused}}'

      Worker 节点

      $ oc get machineconfigpool/worker --template='{{.spec.paused}}'

      输出示例

      false

      spec.paused 字段为 false,MCP 被取消暂停。

    3. 确定 MCP 是否有待处理的更改:

      $ oc get machineconfigpool

      输出示例

      NAME     CONFIG                                   UPDATED  UPDATING
      master   rendered-master-546383f80705bd5aeaba93   True     False
      worker   rendered-worker-b4c51bb33ccaae6fc4a6a5   False    True

      如果 MCP 正在应用任何待处理的更改,UPDATED 列为 FalseUPDATING 列为 True。当 UPDATEDTrueUPDATINGFalse 时,没有进一步的更改。在上例中,MCO 正在更新 worker 节点。