すべてのプロダクト
Search
ドキュメントセンター

Elastic Container Instance:NTPサービスの設定

最終更新日:Dec 28, 2024

時間依存性の高いビジネスシナリオでは、コンテナの時刻同期が不正確だと、ビジネスの正常な動作に影響を与える可能性があります。たとえば、分散システム内のコンテナの時刻が一致していないと、データに不整合が生じる可能性があります。ログに基づいてプログラムをデバッグする際にログのタイムスタンプが不正確な場合、ログが正しくソートされず、エラー原因を正しく特定できない可能性があります。時間依存性の高いビジネスシナリオでコンテナ化アプリケーションをデプロイする場合は、Elastic Container InstanceベースのPodのNetwork Time Protocol (NTP) サービスを設定して、Pod内のコンテナの時刻同期を正確にすることができます。これにより、不正確な時刻によって発生する問題が解決され、データの正確性とビジネスの正常な動作が保証されます。

設定の説明

Elastic Container InstanceベースのPodを作成する際に、Podにk8s.aliyun.com/eci-ntp-serverアノテーションを追加して、NTPサーバーのアドレスを指定できます。これにより、Pod内のコンテナの時刻をNTPサービスの時刻と同期させることができます。これにより、Pod内のコンテナの時刻の正確性を確保できます。

重要
  • アノテーションは、Podの設定ファイル内のメタデータに追加する必要があります。たとえば、Deploymentを作成する場合は、spec.template.metadataセクションにアノテーションを追加する必要があります。

  • Elastic Container Instanceの機能を使用するには、Elastic Container InstanceベースのPodを作成するときにのみアノテーションを追加できます。Podの更新時にアノテーションを追加または変更しても、これらのアノテーションは有効になりません。

設定例

  1. 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" ]
  2. コンテナにログインし、NTPサービスが想定どおりに動作するかどうかを確認します。

    1. Podに関する情報をクエリします。

      kubectl get pod

      次のコマンド出力が返されます。

      NAME                        READY   STATUS    RESTARTS   AGE
      test-ntp-599d5ff9f5-9kb56   1/1     Running   0          3m59s
    2. コンテナにアクセスします。

      kubectl exec -it test-ntp-599d5ff9f5-9kb56 -- bash
    3. コンテナの時刻が同期されているソースをクエリします。

      chronyc sources
      説明

      chronyがインストールされていない場合は、yum -y install chronyコマンドを実行してchronyをインストールできます。

      NTPサーバーのIPアドレスが返された場合、Podに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