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

Elastic Container Instance:ECI Pod の IP アドレスを維持したままコンテナイメージを更新

最終更新日:Dec 19, 2025

仮想ノード上の Pod としてデプロイされたアプリケーションをイテレーションする際、バグ修正や新機能追加のためにコンテナイメージの更新が必要になることがあります。サービスの中断を避けるため、更新中も Pod の IP アドレスを維持する必要がある場合が多いです。このガイドでは、kubectl コマンドを使用して、Elastic Container Instance (ECI) Pod の IP アドレスを変更せずにコンテナイメージを更新する方法を説明します。

前提条件

新しいコンテナイメージを準備し、イメージリポジトリにプッシュ済みであること。

手順

この例では、Nginx Pod のコンテナイメージを、Pod の IP アドレスを維持したまま nginx:1.7.9 から nginx:1.9.6 に更新します。

説明

この例を実行するには、クラスターの Virtual Private Cloud (VPC) にインターネット NAT ゲートウェイと SNAT ルールが設定されていることを確認してください。これにより、インターネット経由でイメージをプルできます。

  1. ECI Pod を作成します。

    kubectl create -f nginx.yaml

    次の nginx.yaml ファイルは、nginx:1.7.9 コンテナイメージを使用します。

    apiVersion: v1
    kind: Pod
    metadata:
      name: nginx
      namespace: default
      labels:
        alibabacloud.com/eci: "true" 
    spec:
      containers:
      - image: nginx:1.7.9
        imagePullPolicy: Always
        name: nginx
  2. Pod 情報を照会します。

    1. Pod の IP アドレスを確認します。

      kubectl get pod/nginx -n default -o wide

      出力から、Pod の IP アドレスが 172.16.22.193 であることがわかります。

      NAME    READY   STATUS    RESTARTS   AGE    IP              NODE                           NOMINATED NODE   READINESS GATES
      nginx   1/1     Running   0          5m5s   172.16.22.193   virtual-kubelet-cn-beijing-e   <none>           <none>
    2. Pod のイメージタグを確認します。

      kubectl get pod/nginx -n default -o=custom-columns='IMAGE:spec.containers[*].image'

      出力から、Pod のコンテナイメージが nginx:1.7.9 であることがわかります。

      IMAGE
      nginx:1.7.9
  3. 次のいずれかの方法を選択してイメージを更新します。

    • kubectl patch

      kubectl patch コマンドを実行して、コンテナイメージのタグを直接更新します。

      kubectl patch pod nginx -p '{"spec":{"containers":[{"name": "nginx","image": "nginx:1.9.6"}]}}'
    • kubectl edit

      kubectl edit コマンドを実行して Pod マニフェストを編集し、コンテナイメージのタグを更新します。

      kubectl edit pod/nginx -o yaml 
    • kubectl apply

      nginx.yaml 設定ファイルを開き、コンテナイメージのタグを更新してから、kubectl apply コマンドを実行して変更を適用します。

      kubectl apply -f nginx.yaml 
  4. 更新された Pod 情報を検証します。

    1. Pod の IP アドレスを確認します。

      kubectl get pod/nginx -n default -o wide

      出力から、Pod の IP アドレス 172.16.22.193 が変更されていないことが確認できます。

      NAME    READY   STATUS    RESTARTS   AGE   IP              NODE                           NOMINATED NODE   READINESS GATES
      nginx   1/1     Running   1          19m   172.16.22.193   virtual-kubelet-cn-beijing-e   <none>           <none>
    2. Pod のイメージタグを確認します。

      kubectl get pod/nginx -n default -o=custom-columns='IMAGE:spec.containers[*].image'

      出力から、コンテナイメージが nginx:1.9.6 に更新されたことがわかります。

      IMAGE
      nginx:1.9.6