Untuk skenario bisnis yang sensitif terhadap waktu, sinkronisasi waktu yang tidak akurat pada kontainer dapat memengaruhi operasi bisnis. Sebagai contoh, ketidakkonsistenan waktu kontainer dalam sistem terdistribusi dapat menyebabkan inkonsistensi data. Jika timestamp log tidak akurat saat men-debug program berdasarkan log, log mungkin diurutkan secara tidak benar sehingga sulit mengidentifikasi penyebab kesalahan. Saat menerapkan aplikasi berbasis kontainer dalam skenario bisnis yang sensitif terhadap waktu, Anda dapat mengonfigurasi layanan Network Time Protocol (NTP) untuk pod berbasis Elastic Container Instance (ECI) guna memastikan sinkronisasi waktu yang akurat. Ini menyelesaikan masalah yang disebabkan oleh ketidakakuratan waktu dan memastikan keakuratan data serta kelancaran operasi bisnis.
Deskripsi konfigurasi
Saat membuat pod berbasis Elastic Container Instance, Anda dapat menambahkan anotasi k8s.aliyun.com/eci-ntp-server ke pod untuk menentukan alamat server NTP. Dengan cara ini, waktu kontainer dalam pod dapat disinkronkan dengan waktu layanan NTP, memastikan keakuratan waktu kontainer.
Anotasi harus ditambahkan ke metadata dalam file konfigurasi pod. Sebagai contoh, saat membuat Deployment, tambahkan anotasi di bagian spec.template.metadata.
Untuk menggunakan fitur Elastic Container Instance, Anda hanya dapat menambahkan anotasi saat membuat pod berbasis Elastic Container Instance. Jika anotasi ditambahkan atau dimodifikasi saat memperbarui pod, anotasi tersebut tidak akan berlaku.
Contoh konfigurasi
Buat aplikasi untuk mengonfigurasi layanan NTP.
kubectl create -f set-ntp.yamlBerikut adalah isi dari file set-ntp.yaml contoh:
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 # Menentukan alamat IP server NTP. spec: containers: - name: nginx image: registry.cn-shanghai.aliyuncs.com/eci_open/centos:7 ports: - containerPort: 80 command: ["/bin/sh","-c","sleep 3600" ]Masuk ke kontainer dan periksa apakah layanan NTP bekerja sesuai harapan.
Kueri informasi tentang pod.
kubectl get podKeluaran perintah berikut dikembalikan:
NAME READY STATUS RESTARTS AGE test-ntp-599d5ff9f5-9kb56 1/1 Running 0 3m59sAkses kontainer.
kubectl exec -it test-ntp-599d5ff9f5-9kb56 -- bashKueri sumber dari mana waktu kontainer disinkronkan.
chronyc sourcesCatatanJika chrony belum diinstal, jalankan perintah
yum -y install chronyuntuk menginstal chrony.Jika alamat IP server NTP dikembalikan, layanan NTP telah dikonfigurasi untuk pod. Kode berikut menunjukkan keluaran contoh.
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