配置NTP服务

对于一些时间敏感的业务场景,容器时间同步不准确会影响业务正常运行。例如在分布式系统中各个容器节点时间不一致会导致数据不一致,或者参考日志调试程序时,日志时间戳不准确会导致日志顺序混乱和调试过程中的错误判断等。对于这类时间敏感的业务场景,在部署容器应用时,您可以为ECI Pod配置NTP服务来确保Pod内容器的时间同步准确,从而解决时间不准确导致的问题,保证数据准确性和业务正常运行。

配置说明

创建ECI Pod时,可以为Pod添加k8s.aliyun.com/eci-ntp-server的Annotation来指定NTP服务器的地址,使得Pod内的容器能与NTP服务进行时间同步,从而保证时间准确性。

重要
  • Annotation请添加在Pod的metadata下,例如:创建Deployment时,Annotation需添加在spec>template>metadata下。

  • 仅支持在创建ECI Pod时添加ECI相关Annotation来生效ECI功能,更新ECI Pod时添加或者修改ECI相关Annotation均不会生效。

配置示例

  1. 创建配置NTP服务的应用。

    kubectl create -f set-ntp.yaml

    set-ntp.yaml的内容示例如下:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: test-ntp
      labels:
        app: test
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          name: test-ntp
          labels:
            app: nginx
            alibabacloud.com/eci: "true" 
          annotations:
            k8s.aliyun.com/eci-ntp-server: 100.100.XX.XX  # 指定NTP服务器的IP地址
        spec:
          containers:
          - name: nginx
            image: registry.cn-shanghai.aliyuncs.com/eci_open/centos:7
            ports:
            - containerPort: 80
            command: ["/bin/sh","-c","sleep 3600" ]
  2. 登录到容器,验证NTP服务是否设置成功。

    1. 获取Pod信息。

      kubectl get pod

      预期返回:

      NAME                        READY   STATUS    RESTARTS   AGE
      test-ntp-599d5ff9f5-9kb56   1/1     Running   0          3m59s
    2. 进入容器。

      kubectl exec -it test-ntp-599d5ff9f5-9kb56 -- bash
    3. 查询容器的时间来源。

      chronyc sources
      说明

      如果没有安装chrony,可执行yum -y install chrony进行安装。

      如果返回了NTP服务器的IP地址,则表示配置成功。返回示例如下:

      210 Number of sources = 1
      MS Name/IP address         Stratum Poll Reach LastRx Last                            sample
      ===============================================================================
      ^* 100.100.XX.XX                    2           6     377     35       +40us[ +135us] +/-   14ms