4.5. 为托管集群配置 NTP 服务器


您可以使用 Butane 为托管集群配置网络时间协议(NTP)服务器。

流程

  1. 创建一个 Butane 配置文件 99-worker-chrony.bu,其中包含 chrony.conf 文件的内容。有关 Butane 的更多信息,请参阅"使用 Butane 创建机器配置"。

    99-worker-chrony.bu 配置示例

    # ...
    variant: openshift
    version: 4.14.0
    metadata:
      name: 99-worker-chrony
      labels:
        machineconfiguration.openshift.io/role: worker
    storage:
      files:
      - path: /etc/chrony.conf
        mode: 0644  
    1
    
        overwrite: true
        contents:
          inline: |
            pool 0.rhel.pool.ntp.org iburst  
    2
    
            driftfile /var/lib/chrony/drift
            makestep 1.0 3
            rtcsync
            logdir /var/log/chrony
    # ...

    1
    为机器配置文件的 mode 字段指定数值模式。创建文件并应用更改后,mode 字段将转换为十进制值。
    2
    指定任何有效的、可访问的时间源,如由动态主机配置协议(DHCP)服务器提供的时间源。
    注意

    对于机器到机器的通信,用户数据报协议(UDP)端口上的 NTP 为 123。如果配置了外部 NTP 时间服务器,您必须打开 UDP 端口 123

  2. 使用 Butane 生成 MachineConfig 对象文件 99-worker-chrony.yaml,其中包含 Butane 发送到节点的配置。运行以下命令:

    $ butane 99-worker-chrony.bu -o 99-worker-chrony.yaml

    99-worker-chrony.yaml 配置示例

    # Generated by Butane; do not edit
    apiVersion: machineconfiguration.openshift.io/v1
    kind: MachineConfig
    metadata:
      labels:
        machineconfiguration.openshift.io/role: worker
      name: <machineconfig_name>
    spec:
      config:
        ignition:
          version: 3.2.0
        storage:
          files:
            - contents:
                source: data:...
              mode: 420
              overwrite: true
              path: /example/path

  3. 在管理集群的配置映射中添加 99-worker-chrony.yaml 文件的内容:

    配置映射示例

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: <configmap_name>
      namespace: <namespace>  
    1
    
    data:
      config: |
        apiVersion: machineconfiguration.openshift.io/v1
        kind: MachineConfig
        metadata:
          labels:
            machineconfiguration.openshift.io/role: worker
          name: <machineconfig_name>
        spec:
          config:
            ignition:
              version: 3.2.0
            storage:
              files:
              - contents:
                  source: data:...
                mode: 420
                overwrite: true
                path: /example/path
    # ...

    1
    <namespace> 替换为创建节点池的命名空间的名称,如 clusters
  4. 运行以下命令,将配置映射应用到节点池:

    $ oc edit nodepool <nodepool_name> --namespace <hosted_cluster_namespace>

    NodePool 配置示例

    apiVersion: hypershift.openshift.io/v1alpha1
    kind: NodePool
    metadata:
    # ...
      name: nodepool-1
      namespace: clusters
    # ...
    spec:
      config:
      - name: <configmap_name> 
    1
    
    # ...

    1
    <configmap_name> 替换为配置映射的名称。
  5. infra-env.yaml 文件中添加 NTP 服务器列表,该文件定义 InfraEnv 自定义资源(CR):

    infra-env.yaml 文件示例

    apiVersion: agent-install.openshift.io/v1beta1
    kind: InfraEnv
    # ...
    spec:
      additionalNTPSources:
      - <ntp_server> 
    1
    
      - <ntp_server1>
      - <ntp_server2>
    # ...

    1
    <ntp_server> 替换为 NTP 服务器的名称。有关创建主机清单和 InfraEnv CR 的详情,请参阅"创建主机清单"。
  6. 运行以下命令来应用 InfraEnv CR:

    $ oc apply -f infra-env.yaml

验证

  • 检查以下字段以了解主机清单的状态:

    • conditions :指示镜像是否已成功创建的标准 Kubernetes 条件。
    • isoDownloadURL :下载发现镜像的 URL。
    • createdTime :镜像最后一次创建的时间。如果您修改了 InfraEnv CR,请确保在下载新镜像前更新了时间戳。

      运行以下命令验证您的主机清单是否已创建:

      $ oc describe infraenv <infraenv_resource_name> -n <infraenv_namespace>
      注意

      如果您修改了 InfraEnv CR,请通过查看 createdTime 字段来确认 InfraEnv CR 已创建新的 Discovery Image。如果您已经引导的主机,请使用最新的发现镜像再次引导它们。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部