Em aplicações sensíveis ao tempo, o desvio de relógio nos pods de contêineres pode desordenar os carimbos de data e hora dos logs. Isso torna a correlação de incidentes pouco confiável e gera inconsistências de dados em sistemas distribuídos. Para evitar esses problemas, adicione a anotação k8s.aliyun.com/eci-ntp-server ao pod do Elastic Container Instance (ECI) para direcionar os contêineres a um servidor NTP específico.
Pré-requisitos
Antes de começar, certifique-se de ter:
Permissão para criar Deployments e pods
O endereço IP de um servidor NTP acessível
Como funciona
Quando o ECI cria um pod, ele lê a anotação k8s.aliyun.com/eci-ntp-server e configura todos os contêineres do pod para sincronizar seus relógios com o servidor NTP especificado.
O ECI aplica as anotações apenas na criação do pod. Adicionar ou modificar anotações em um pod em execução não surte efeito.
Para Deployments, adicione a anotação em spec.template.metadata.annotations, e não em metadata.annotations de nível superior. O ECI lê as anotações do modelo do pod, e não do próprio objeto Deployment.
Configure o NTP para um pod
-
Crie um arquivo YAML chamado
set-ntp.yamlcom o seguinte conteúdo. Substitua100.100.XX.XXpelo endereço IP do seu servidor NTP.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 # IP address of the NTP server spec: containers: - name: nginx image: registry.cn-shanghai.aliyuncs.com/eci_open/centos:7 ports: - containerPort: 80 command: ["/bin/sh","-c","sleep 3600"] -
Aplique a configuração.
kubectl create -f set-ntp.yaml
Verifique a configuração de NTP
-
Obtenha o nome do pod.
kubectl get podSaída esperada:
NAME READY STATUS RESTARTS AGE test-ntp-599d5ff9f5-9kb56 1/1 Running 0 3m59s -
Abra um shell no contêiner.
kubectl exec -it test-ntp-599d5ff9f5-9kb56 -- bash -
Verifique a origem de sincronização de hora.
Se o chrony não estiver instalado, execute
yum -y install chronyprimeiro.chronyc sourcesUma linha que começa com
^*indica a origem selecionada atualmente. Confirme se o IP do seu servidor NTP aparece nessa linha.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