對於一些時間敏感的業務情境,容器時間同步不準確會影響業務正常運行。例如在分布式系統中各個容器節點時間不一致會導致資料不一致,或者參考日誌偵錯工具時,日誌時間戳記不準確會導致日誌順序混亂和調試過程中的錯誤判斷等。對於這類時間敏感的業務情境,在部署容器應用時,您可以為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