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

Elastic Container Instance:ECI Pod での固定 IP アドレスの使用設定

最終更新日:Jun 22, 2026

一部のアプリケーションでは、Pod が一貫した IP アドレスを維持する必要があります。このトピックでは、Elastic Container Instance (ECI) Pod で固定 IP アドレスを使用するように設定する方法について説明します。

仕組み

デフォルトでは、ECI Pod を作成すると、システムは eci-profile で指定された vSwitch の CIDR ブロックからランダムな IP アドレスを Pod に割り当てます。障害によって Pod がリリースされると、システムはその IP アドレスを解放し、置き換え後の Pod に新しい IP アドレスを割り当てます。サービスが IP アドレスによって直接公開される場合など、特定のシナリオでは、業務継続性を確保するために Pod に固定 IP アドレスが必要になることがあります。

これらのシナリオに対応するため、ECI は固定 IP アドレス機能を提供します。この機能を有効にして ECI Pod を作成すると、システムは設定された vSwitch から 2 つの IP アドレス (クラスター内からは見えない動的 IP アドレスと、固定 IP アドレス) を割り当てます。Pod がリリースされた後、システムはその固定 IP アドレスを特定の期間 (デフォルトでは 48 時間) 保持します。この保持期間内に、リリースされた Pod と同じクラスター ID、名前空間、Pod 名を持ち、かつ固定 IP アドレス機能が有効になっている新しい Pod が作成された場合、システムは保持されていた IP アドレスを新しい Pod に割り当てます。これにより、Pod の IP アドレスの一貫性が確保されます。

説明

このシナリオでは、StatefulSet を使用してアプリケーションをデプロイできます。StatefulSet 内の Pod がリリースされると、システムは同じ名前空間と Pod 名を持つ新しい Pod を自動的に作成します。

設定

Pod のメタデータにアノテーションを追加して、固定 IP アドレス機能を有効にし、固定 IP アドレスの保持期間を設定します。次の表に、アノテーションについて説明します。

アノテーション

説明

k8s.aliyun.com/eci-fixed-ip

"true"

固定 IP アドレス機能を有効にするには、"true" に設定します。

k8s.aliyun.com/eci-fixed-ip-retain-hour

"24"

Pod がリリースされた後、固定 IP アドレスを保持する時間数。

省略した場合、デフォルトは 48 時間です。

操作手順

  1. Service と StatefulSet を作成します。

    kubectl apply -f fixedIp.yaml

    次の fixedIp.yaml ファイルは、Service と StatefulSet を定義します。StatefulSet には、固定 IP アドレス機能を有効にするアノテーションを持つ ECI Pod が含まれています。

    apiVersion: v1
    kind: Service
    metadata:
      name: nginx
      labels:
        app: nginx
    spec:
      ports:
      - port: 80
        name: web
      clusterIP: None
      selector:
        app: nginx
    ---
    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: web
    spec:
      selector:
        matchLabels:
          app: nginx
      serviceName: "nginx"
      minReadySeconds: 10
      template:
        metadata:
          annotations:
            k8s.aliyun.com/eci-fixed-ip: "true"  # 固定 IP アドレス機能を有効にします。
          labels:
            app: nginx
            alibabacloud.com/eci: "true"
        spec:
          containers:
          - name: nginx
            image: registry-vpc.cn-beijing.aliyuncs.com/eci_open/nginx:1.14.2
            ports:
            - containerPort: 80
              name: web
  2. 次のコマンドを実行して、Pod のステータスの変化を監視します。

    kubectl get pod -o wide -w

    出力から、StatefulSet が web-0 という名前の Pod を作成し、その IP アドレスが 172.16.0.129 であることがわかります。

    d:~$ kubectl get pod -o wide -w
    NAME    READY   STATUS              RESTARTS   AGE   IP              NODE                         NOMINATED NODE   READINESS GATES
    web-0   0/1     Pending             0                9s    <none>          <none>                       <none>           <none>
    web-0   0/1     Pending             0               20s    <none>          <none>                       <none>           <none>
    web-0   0/1     Pending             0               20s    <none>          virtual-kubelet-cn-beijing-h   <none>           <none>
    web-0   0/1     Pending             0               20s    <none>          virtual-kubelet-cn-beijing-h   <none>           <none>
    web-0   0/1     ContainerCreating   0               69s    172.16.0.129   virtual-kubelet-cn-beijing-h   <none>           <none>
    web-0   1/1     Running             0               76s    172.16.0.129   virtual-kubelet-cn-beijing-h   <none>           <none>
  3. 新しいターミナルを開いてクラスターに接続し、次のコマンドを実行して StatefulSet 内の Pod を削除します。

    kubectl delete pod web-0
  4. 最初のターミナルに戻り、Pod のステータスの変化を引き続き監視します。

    出力から、元の Pod が削除された後、StatefulSet が元の IP アドレスを再利用する新しい Pod を自動的に作成することがわかります。

    説明

    前の Pod が完全に削除されるまで IP アドレスが占有されたままになるため、新しい Pod の作成が遅れる場合があります。

    1:~$ kubectl get pod -o wide -w
    NAME    READY   STATUS              RESTARTS   AGE     IP              NODE                          NOMINATED NODE   READINESS GATES
    web-0   0/1     Pending             0          9s      <none>          <none>                        <none>           <none>
    web-0   0/1     Pending             0          20s     <none>          <none>                        <none>           <none>
    web-0   0/1     Pending             0          20s     <none>          virtual-kubelet-cn-beijing-h   <none>           <none>
    web-0   0/1     Pending             0          20s     <none>          virtual-kubelet-cn-beijing-h   <none>           <none>
    web-0   0/1     ContainerCreating   0          69s     172.16.0.129    virtual-kubelet-cn-beijing-h   <none>           <none>
    web-0   1/1     Running             0          76s     172.16.0.129    virtual-kubelet-cn-beijing-h   <none>           <none>
    web-0   1/1     Terminating         0          2m37s   172.16.0.129    virtual-kubelet-cn-beijing-h   <none>           <none>
    web-0   0/1     Terminating         0          2m39s   172.16.0.129    virtual-kubelet-cn-beijing-h   <none>           <none>
    web-0   0/1     Terminating         0          2m55s   172.16.0.129    virtual-kubelet-cn-beijing-h   <none>           <none>
    web-0   0/1     Terminating         0          2m55s   172.16.0.129    virtual-kubelet-cn-beijing-h   <none>           <none>
    web-0   0/1     Pending             0          0s      <none>                                        <none>           <none>
    web-0   0/1     Pending             0          0s      <none>                                        <none>           <none>
    web-0   0/1     Pending             0          1s      <none>                                        <none>           <none>
    web-0   0/1     Pending             0          1s      <none>                                        <none>           <none>
    web-0   0/1     Pending             0          17s     <none>                                        <none>           <none>
    web-0   0/1     Pending             0          17s     <none>          virtual-kubelet-cn-beijing-h   <none>           <none>
    web-0   0/1     Pending             0          17s     <none>          virtual-kubelet-cn-beijing-h   <none>           <none>
    web-0   0/1     ContainerCreating   0          69s     172.16.0.129    virtual-kubelet-cn-beijing-h   <none>           <none>
    web-0   1/1     Running             0          76s     172.16.0.129    virtual-kubelet-cn-beijing-h   <none>           <none>