使用 MachineConfig 管理节点配置
您可以使用本节中描述的任务来创建 MachineConfig
对象,以修改节点上的文件、systemd 单元和 SSH 公钥,以及恢复发生配置漂移的节点。
MachineConfig
支持 Ignition 规范版本 3.4。所有 MachineConfig
对象必须符合该版本创建。
在某些情况下,节点上的配置可能与当前通过 MachineConfig
应用的配置不完全匹配。此情况称为配置漂移。机器配置守护进程会定期验证节点配置是否发生漂移。如果检测到漂移,节点将被标记为 Degraded
状态,并保持该状态,直到管理员恢复预期的配置。
以下示例演示如何使用 MachineConfig
对象管理节点配置。
目录
配置 Chrony 时间服务
要配置 Chrony 时间同步服务(chronyd
)并指定 NTP 服务器及相关设置,可以通过 MachineConfig
对象更新目标节点上的 chrony.conf
文件。
-
首先,创建一个包含所需 Chrony 配置的临时文件:
chrony.conf
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
makestep 1.0 3
rtcsync
logdir /var/log/chrony
-
然后,将文件内容进行 base64 编码:
-
创建名为 99-worker-chrony
的 MachineConfig
对象。在 .spec.config.storage.files[0].contents.source
字段中,以 data:text/plain;base64,<encoded-content>
格式插入 base64 编码字符串:
apiVersion: machineconfiguration.alauda.io/v1alpha1
kind: MachineConfig
metadata:
name: 99-worker-chrony
labels:
machineconfiguration.alauda.io/role: worker
spec:
config:
ignition:
version: 3.4.0
storage:
files:
- path: /etc/chrony.conf
mode: 0644
contents:
source: 'data:text/plain;base64,c2VydmVyIDAuY2VudG9zLnBvb2wubnRwLm9yZyBpYnVyc3QKc2VydmVyIDEuY2VudG9zLnBvb2wubnRwLm9yZyBpYnVyc3QKbWFrZXN0ZXAgMS4wIDMKcnRjc3luYwpsb2dkaXIgL3Zhci9sb2cvY2hyb255Cg=='
该配置创建了一个 MachineConfig
对象,将自定义的 chrony.conf
文件应用于与 worker
机器配置池关联的节点。文件将写入每个节点的 /etc/chrony.conf
,文件权限设置为 0644
。
禁用 Chrony 时间服务
要禁用具有特定角色的节点上的 Chrony 时间同步服务,可以创建一个覆盖 systemd 单元定义并禁用该服务的 MachineConfig
对象。
示例配置:
apiVersion: machineconfiguration.alauda.io/v1alpha1
kind: MachineConfig
metadata:
name: 99-worker-disable-chrony
labels:
machineconfiguration.alauda.io/role: worker
spec:
config:
ignition:
version: 3.4.0
systemd:
units:
- name: chronyd.service
enabled: false
contents: |
[Unit]
Description=NTP client/server
Documentation=man:chronyd(8) man:chrony.conf(5)
After=ntpdate.service sntp.service ntpd.service
Conflicts=ntpd.service systemd-timesyncd.service
ConditionCapability=CAP_SYS_TIME
[Service]
Type=forking
PIDFile=/run/chrony/chronyd.pid
EnvironmentFile=-/etc/sysconfig/chronyd
ExecStart=/usr/sbin/chronyd $OPTIONS
ExecStartPost=/usr/libexec/chrony-helper update-daemon
PrivateTmp=yes
ProtectHome=yes
ProtectSystem=full
[Install]
WantedBy=multi-user.target
该配置将自定义版本的 chronyd.service
单元文件推送到 worker
机器配置池中的节点。服务被显式禁用。配置应用并重启节点后,Chrony 服务将不再自动启动。
配置 boot
用户的 SSH 公钥
机器配置系统允许您为受管节点上的 boot
用户配置 SSH 公钥。不支持为其他用户账户配置。请注意,机器配置不会自动创建用户或组——您必须确保在应用配置前节点上已存在 boot
用户和组。
示例配置:
apiVersion: machineconfiguration.alauda.io/v1alpha1
kind: MachineConfig
metadata:
name: 99-worker-ssh
labels:
machineconfiguration.alauda.io/role: worker
spec:
config:
ignition:
version: 3.4.0
passwd:
users:
- user: boot
sshAuthorizedKeys:
- ssh-rsa <ssh-public-key>
此 MachineConfig
会在 worker
机器配置池中的节点上,将指定的 SSH 密钥安装到 /home/boot/.ssh/authorized_keys
文件中。
恢复配置漂移
如果节点的配置与其分配的 MachineConfig
不一致,节点将被标记为 Degraded
。在此状态下,节点继续运行,但无法接收进一步的配置更新,直到问题解决。
恢复节点脱离该降级状态有两种方法:
-
手动恢复配置
您可以手动调整节点上的文件和权限,使其与分配的 MachineConfig
中指定的完全匹配。系统将检测到修正并清除降级状态。
-
强制重新应用配置
在受影响节点上创建一个空文件 /run/machine-config-daemon-force
。机器配置守护进程将检测到该触发器,重新应用当前的 MachineConfig
,删除触发文件,并重启节点。重启后,节点状态将从 Degraded
转为 Done
。