管理节点配置

您可以使用本节中描述的任务来创建修改节点上的文件、systemd 单元和 SSH 公钥的 MachineConfig 对象,以及恢复发生配置漂移的节点。

MachineConfig 支持 Ignition 规范版本 3.4。所有 MachineConfig 对象必须符合此版本创建。

在某些情况下,节点上的配置可能与当前通过 MachineConfig 应用的配置不完全匹配。这种情况称为配置漂移。机器配置守护进程会定期验证节点的配置是否发生漂移。如果检测到漂移,节点将被标记为 Degraded 状态,并保持该状态,直到管理员恢复预期的配置。

以下示例演示如何使用 MachineConfig 对象管理节点配置。

目录

配置 Chrony 时间服务

要配置 Chrony 时间同步服务(chronyd)并指定 NTP 服务器及相关设置,可以通过 MachineConfig 对象更新目标节点上的 chrony.conf 文件。

  1. 首先,创建一个包含所需 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
  2. 然后,对文件内容进行 base64 编码:

    base64 -w0 chrony.conf
  3. 创建一个名为 99-worker-chronyMachineConfig 对象。在 .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。在此状态下,节点继续运行,但无法接收进一步的配置更新,直到问题解决。

有两种方法可以将节点从降级状态恢复:

  1. 手动恢复配置
    您可以手动调整节点上的文件和权限,使其与分配的 MachineConfig 中指定的完全匹配。系统将检测到修正并清除降级状态。

  2. 强制重新应用配置
    在受影响节点上创建一个空文件 /run/machine-config-daemon-force。机器配置守护进程将检测到此触发器,重新应用当前的 MachineConfig,删除触发文件,并重启节点。重启后,节点将从 Degraded 状态恢复为 Done