6.4. 关于 Machine Config Operator
OpenShift Container Platform 4.13 集成了操作系统和集群管理。由于集群管理自己的更新,包括集群节点上 Red Hat Enterprise Linux CoreOS (RHCOS) 的更新,因此 OpenShift Container Platform 提供了可靠的生命周期管理体验,能够简化节点升级的编配。
OpenShift Container Platform 使用三个守护进程集和控制器来简化节点管理。这些守护进程集通过使用标准的 Kubernetes 式构造来编配操作系统更新和主机配置更改。它们包括:
-
machine-config-controller
,协调从 control plane 进行的机器升级。它监控所有集群节点并编配其配置更新。 -
machine-config-daemon
守护进程集在集群中的每个节点上运行,并根据 MachineConfigController 的指示将机器更新为机器配置定义的配置。 当节点检测到更改时,它会排空其 pod,应用更新并重启。这些更改以 Ignition 配置文件的形式出现,这些文件应用指定的机器配置并控制 kubelet 配置。更新本身在容器中交付。此过程是成功管理 OpenShift Container Platform 和 RHCOS 更新的关键。 -
machine-config-server
守护进程集,在加入集群时为 control plane 节点提供 Ignition 配置文件。
机器配置是 Ignition 配置的子集。machine-config-daemon
读取机器配置,以查看是否需要进行 OSTree 更新,或者是否必须应用一系列 systemd kubelet 文件更改、配置更改,或者对操作系统或 OpenShift Container Platform 配置的其他更改。
执行节点管理操作时,您可以创建或修改 KubeletConfig
自定义资源(CR)。
当对机器配置进行修改时,Machine Config Operator(MCO) 会自动重启所有对应的节点,以使更改生效。
要防止节点在机器配置更改后自动重启,在更改之前,必须通过在相应的机器配置池中将 spec.paused
字段设置为 true
来暂停自动引导过程。暂停后,机器配置更改不会生效,除非将 spec.paused
字段设置为 false
,且节点已重启至新配置。
以下修改不会触发节点重新引导:
当 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
文件的更改时,如添加或编辑ImageDigestMirrorSet
、ImageTagMirrorSet
或ImageContentSourcePolicy
对象,它会排空对应的节点,应用更改并取消记录节点。对于以下更改,节点排空不会发生:-
增加了一个 registry,带有为每个镜像(mirror)设置了
pull-from-mirror = "digest-only"
参数。 -
增加了一个镜像(mirror),带有在一个 registry 中设置的
pull-from-mirror = "digest-only"
参数。 -
在
unqualified-search-registries
列表中添加项目。
-
增加了一个 registry,带有为每个镜像(mirror)设置了
在某些情况下,节点上的配置与当前应用的机器配置指定不完全匹配。这个状态被称为 配置偏移。Machine Config Daemon(MCD)定期检查节点是否有配置偏移。如果 MCD 检测到配置偏移,MCO 会将节点标记为 降级(degraded)
,直到管理员更正节点配置。降级的节点在线且可操作,但无法更新。
其他资源
- 有关检测配置偏移的更多信息,请参阅了解配置偏移检测。
- 如需有关在 Machine Config Operator 更改机器配置后防止 control plane 机器重启的信息,请参阅禁用 Machine Config Operator 自动重新引导。