このトピックでは、Elastic Container Instance ポッドの Network Time Protocol (NTP) サービスを設定する方法について説明します。NTP サービスは、コンテナと NTP サーバー間の時刻を同期します。
構成の説明
Elastic Container Instance ベースのポッドを作成するときは、k8s.aliyun.com/eci-ntp-server
アノテーションを追加して、NTP サーバーのアドレスを指定できます。このようにして、ポッド内のコンテナの時刻は NTP サーバーの時刻と同期されます。
アノテーションは、ポッドの設定ファイルのメタデータに追加する必要があります。たとえば、Deployment を作成するときは、spec.template.metadata セクションにアノテーションを追加する必要があります。
Elastic Container Instance の機能を使用するには、Elastic Container Instance ベースのポッドを作成するときにのみアノテーションを追加できます。ポッドを更新するときにアノテーションを追加または変更しても、これらのアノテーションは有効になりません。
構成例
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 サービスが想定どおりに動作するかどうかを確認します。
ポッドに関する情報をクエリします。
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
コマンドを実行して chrony をインストールできます。NTP サーバーの IP アドレスが返された場合、NTP サービスは想定どおりに動作しています。コマンド出力の例:
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