7.6.6. 禁用 Machine Config Operator 自动重新引导
当 Machine Config Operator(MCO)进行配置更改时,Red Hat Enterprise Linux CoreOS(RHCOS)必须重启才能使更改生效。无论配置更改是自动还是手动的,RHCOS 节点都会自动重启,除非它已被暂停。
以下修改不会触发节点重新引导:
当 MCO 检测到以下任何更改时,它会在不排空或重启节点的情况下应用更新:
-
在机器配置的
spec.config.passwd.users.sshAuthorizedKeys
参数中更改 SSH 密钥。 -
在
openshift-config
命名空间中更改全局 pull secret 或 pull secret。 -
Kubernetes API Server Operator 自动轮转
/etc/kubernetes/kubelet-ca.crt
证书颁发机构(CA)。
-
在机器配置的
-
当 MCO 检测到对
/etc/containers/registries.conf
文件的更改时,如添加或编辑ImageContentSourcePolicy
对象,它会排空相应的节点,应用更改并取消记录节点。
为了避免不必要的中断,您可以修改机器配置池(MCP)以防止在 Operator 更改机器配置后自动重启。
暂停 MCP 可防止 MCO 在关联的节点上应用任何配置更改。暂停 MCP 还可以防止任何自动轮转的证书被推送到关联的节点,包括自动轮转 kube-apiserver-to-kubelet-signer
CA 证书。如果在 kube-apiserver-to-kubelet-signer
CA 证书过期且 MCO 尝试自动续订证书时,MCP 会暂停,但不会在暂停的 MCP 中跨节点应用新证书。这会导致多个 oc
命令失败,包括但不限于 oc debug
、oc logs
、oc exec
和 oc attach
。在暂停 MCP 时应该非常小心,需要仔细考虑 kube-apiserver-to-kubelet-signer
CA 证书过期的问题,且仅在短时间内暂停。
新 CA 证书会在自安装日期起的 292 天生成,并在自该日期起的 365 天后删除。要确定下一个自动 CA 证书轮转,请参阅 Red Hat OpenShift 4 中的了解 CA 证书自动续订。
7.6.6.1. 使用控制台禁用 Machine Config Operator 自动重新引导
为了避免对 Machine Config Operator(MCO)所做的更改造成不必要的中断,您可以使用 OpenShift Container Platform Web 控制台修改机器配置池(MCP),以防止 MCO 在那个池中对节点进行任何更改。这会防止任何通常属于 MCO 更新过程一部分的重启。
暂停 MCP 可防止 MCO 在关联的节点上应用任何配置更改。暂停 MCP 还可以防止任何自动轮转的证书被推送到关联的节点,包括自动轮转 kube-apiserver-to-kubelet-signer
CA 证书。如果在 kube-apiserver-to-kubelet-signer
CA 证书过期且 MCO 尝试自动续订证书时,MCP 会暂停,但不会在暂停的 MCP 中跨节点应用新证书。这会导致多个 oc
命令失败,包括但不限于 oc debug
、oc logs
、oc exec
和 oc attach
。在暂停 MCP 时应该非常小心,需要仔细考虑 kube-apiserver-to-kubelet-signer
CA 证书过期的问题,且仅在短时间内暂停。
新 CA 证书会在自安装日期起的 292 天生成,并在自该日期起的 365 天后删除。要确定下一个自动 CA 证书轮转,请参阅 Red Hat OpenShift 4 中的了解 CA 证书自动续订。
先决条件
-
您可以使用具有
cluster-admin
角色的用户访问集群。
流程
要暂停或取消暂停自动 MCO 更新重新引导:
暂停自动引导过程:
-
以具有
cluster-admin
角色的用户身份登录到 OpenShift Container Platform web 控制台。 -
点 Compute
MachineConfigPools。 - 在 MachineConfigPools 页面中,点击 master 或 worker,具体取决于您要暂停重新引导的节点。
- 在 master 或 worker 页面中,点 YAML。
在 YAML 中,将
spec.paused
字段更新为true
。MachineConfigPool 对象示例
apiVersion: machineconfiguration.openshift.io/v1 kind: MachineConfigPool ... spec: ... paused: true 1
- 1
- 将
spec.paused
字段更新为true
以暂停重新引导。
要验证 MCP 是否已暂停,请返回到 MachineConfigPools 页面。
在 MachineConfigPools 页面中,您修改的 MCP 报告了 Paused 列中为 True。
如果 MCP 在暂停时有待处理的变化,Updated 列为 False,Updating 为 False。当 Updated 为 True 且 Updating 为 False 时,代表没有待处理的更改。
重要如果有尚未进行的更改( Updated 和 Updating 字段都是 False),建议您尽快调度一个维护窗口用于重启。使用以下步骤取消暂停自动引导过程,以应用上一次重启后排队的更改。
-
以具有
取消暂停自动引导过程:
-
以具有
cluster-admin
角色的用户身份登录到 OpenShift Container Platform web 控制台。 -
点 Compute
MachineConfigPools。 - 在 MachineConfigPools 页面中,点击 master 或 worker,具体取决于您要暂停重新引导的节点。
- 在 master 或 worker 页面中,点 YAML。
在 YAML 中,将
spec.paused
字段更新为false
。MachineConfigPool 对象示例
apiVersion: machineconfiguration.openshift.io/v1 kind: MachineConfigPool ... spec: ... paused: false 1
- 1
- 将
spec.paused
字段更新为false
以允许重启。
注意通过取消暂停 MCP,MCO 应用所有暂停的更改,根据需要重启 Red Hat Enterprise Linux CoreOS(RHCOS)。
要验证 MCP 是否已暂停,请返回到 MachineConfigPools 页面。
在 MachineConfigPools 页面中,您修改的 MCP 报告 Paused 列为 False。
如果 MCP 正在应用任何待处理的更改,Updated 列为 False,Updating 列为 True。当 Updated 为 True 且 Updating 为 False 时,不会再进行任何更改。
-
以具有