第 1 章 机器配置概述
有时您需要更改 OpenShift Container Platform 节点上运行的操作系统。这包括更改网络时间服务的设置、添加内核参数或者以特定的方式配置日志。
除了一些特殊功能外,通过创建称为 Machine Config Operator 管理的 MachineConfig
对象,可以对 OpenShift Container Platform 节点上的操作系统进行大多数更改。例如,您可以使用 Machine Config Operator (MCO) 和机器配置来管理对 systemd、CRI-O 和 kubelet、内核、Network Manager 和其他系统功能的更新。
本节中的任务介绍了如何使用 Machine Config Operator 的功能在 OpenShift Container Platform 节点上配置操作系统功能。
NetworkManager 以 key file 的格式将新网络配置保存到 /etc/NetworkManager/system-connections/
在以前的版本中,NetworkManager 将新的网络配置以 ifcfg
格式保存到 /etc/sysconfig/network-scripts/
。从 RHEL 9.0 开始,RHEL 将新网络配置存储在 /etc/NetworkManager/system-connections/
中,采用 key 文件格式。以旧格式存储在 /etc/sysconfig/network-scripts/
中的连接配置仍可以正常工作。对现有配置集的修改会继续更新旧的文件。
1.1. 关于 Machine Config Operator
OpenShift Container Platform 4.17 集成了操作系统和集群管理。由于集群管理自己的更新,包括集群节点上 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)
,直到管理员更正节点配置。降级的节点在线且可操作,但无法更新。