设置节点时区

集群中的所有节点都应使用统一的时区,以便平台日志、审计记录和监控时间线与 operator 的本地时间保持一致。在 Alauda OS 节点上,应通过 MachineConfig 对象设置时区,切勿登录节点逐个修改。

时区不能作为文件下发:/etc/localtime 是符号链接,而机器配置管理的是文件内容、systemd 单元和 SSH 公钥,而非符号链接。为此,每个节点都会运行一个 oneshot systemd 单元来执行 timedatectl set-timezone。

首先配置节点干扰策略

如果没有节点干扰策略,更改 systemd 单元会回退到默认操作——重启节点——因此应用下面的 MachineConfig 会导致池中的每个节点都经过清空和重启。请先配置策略并确认其已生效,然后再应用 MachineConfig。

  1. 将 set-timezone.service 添加到集群范围的 MachineConfiguration 单例 cluster 的 nodeDisruptionPolicy.units 列表中:

    apiVersion: machineconfiguration.alauda.io/v1alpha1
    kind: MachineConfiguration
    metadata:
      name: cluster
    spec:
      nodeDisruptionPolicy:
        units:
          - name: set-timezone.service
            actions:
              - type: DaemonReload
              - type: Restart
                restart:
                  serviceName: set-timezone.service
    WARNING

    cluster 是一个单例,其中可能已包含适用于其他单元或文件的策略,例如配置 Chrony 时间服务中的 /etc/chrony.conf 条目。 请追加到 units 列表,不要替换现有策略。 未列出的任何单元都会回退到默认的重启操作。

  2. 继续之前,请确认策略已激活:

    kubectl get machineconfiguration cluster \
      -o jsonpath='{.status.nodeDisruptionPolicyStatus}' | grep set-timezone

应用时区

每个角色创建一个 MachineConfig——这两个对象的区别仅在于 metadata.name 和角色标签。将 Asia/Shanghai 替换为统一采用的 tz 数据库名称;请勿直接使用示例值。

apiVersion: machineconfiguration.alauda.io/v1alpha1
kind: MachineConfig
metadata:
  name: 99-worker-timezone # name the control plane copy 99-master-timezone
  labels:
    machineconfiguration.alauda.io/role: worker # and label it master
spec:
  config:
    ignition:
      version: 3.4.0
    systemd:
      units:
        - name: set-timezone.service
          enabled: true
          contents: |
            [Unit]
            Description=Set node timezone
            After=multi-user.target

            [Service]
            Type=oneshot
            ExecStart=/usr/bin/timedatectl set-timezone Asia/Shanghai
            RemainAfterExit=yes

            [Install]
            WantedBy=multi-user.target

验证

kubectl get machineconfigpool

等待每个池报告 UPDATED=True 和 DEGRADED=False,并确认没有节点经历意外的排空或重启。然后抽查节点:

timedatectl                             # time zone and NTP state
systemctl status set-timezone.service   # ran once, exited successfully

平台日志、审计记录和监控时间线现在应与配置的时区一致。

  • 安装时的时区是主机先决条件 — 请参阅裸金属页面中的 主机时间同步要求。 本页面用于在运行中的集群上规范化或更改时区。
  • 时间同步是单独的事项,通过 配置 Chrony 时间服务进行配置。