搜索

6.4. 关于 Machine Config Operator

download PDF

OpenShift Container Platform 4.16 集成了操作系统和集群管理。由于集群管理自己的更新,包括集群节点上 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 文件的更改时,如添加或编辑 ImageDigestMirrorSetImageTagMirrorSetImageContentSourcePolicy 对象,它会排空对应的节点,应用更改并取消记录节点。对于以下更改,节点排空不会发生:

    • 增加了一个 registry,带有为每个镜像(mirror)设置了 pull-from-mirror = "digest-only" 参数。
    • 增加了一个镜像(mirror),带有在一个 registry 中设置的 pull-from-mirror = "digest-only" 参数。
    • unqualified-search-registries 列表中添加项目。

在某些情况下,节点上的配置与当前应用的机器配置指定不完全匹配。这个状态被称为 配置偏移。Machine Config Daemon(MCD)定期检查节点是否有配置偏移。如果 MCD 检测到配置偏移,MCO 会将节点标记为 降级(degraded),直到管理员更正节点配置。降级的节点在线且可操作,但无法更新。

其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.