管理节点配置
您可以使用本节中描述的任务来创建修改节点上的文件、systemd 单元和 SSH 公钥的 MachineConfig 对象,以及恢复发生配置漂移的节点。
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 会将指定的 SSH 密钥安装到 worker 机器配置池节点的 /home/boot/.ssh/authorized_keys 文件中。
恢复配置漂移
如果节点的配置与其分配的 MachineConfig 不一致,节点将被标记为 Degraded。在此状态下,节点继续运行,但无法接收进一步的配置更新,直到问题解决。
有两种方法可以将节点从降级状态恢复:
-
手动恢复配置
您可以手动调整节点上的文件和权限,使其与分配的 MachineConfig 中指定的完全匹配。系统将检测到修正并清除降级状态。
-
强制重新应用配置
在受影响节点上创建一个空文件 /run/machine-config-daemon-force。机器配置守护进程将检测到此触发器,重新应用当前的 MachineConfig,删除触发文件,并重启节点。重启后,节点将从 Degraded 状态恢复为 Done。