对于一些时间敏感的业务场景,容器时间同步不准确会影响业务正常运行。例如在分布式系统中各个容器节点时间不一致会导致数据不一致,或者参考日志调试程序时,日志时间戳不准确会导致日志顺序混乱和调试过程中的错误判断等。对于这类时间敏感的业务场景,在部署容器应用时,您可以为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均不会生效。
配置示例
创建配置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" ]
登录到容器,验证NTP服务是否设置成功。
获取Pod信息。
kubectl get pod
预期返回:
NAME READY STATUS RESTARTS AGE test-ntp-599d5ff9f5-9kb56 1/1 Running 0 3m59s
进入容器。
kubectl exec -it test-ntp-599d5ff9f5-9kb56 -- bash
查询容器的时间来源。
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