このドキュメントでは、EIP アドレスをサーバーレス Kubernetes クラスター内のポッド、または専用 Kubernetes クラスター、マネージド Kubernetes クラスターの仮想ノードのポッドに関連付ける方法について説明します。

利点

EIP アドレスを対象となるポッドへ関連付けると、次の利点があります。
  • サーバーレスコンテナーを使用するアプリケーションを簡単にデプロイできます。
  • アプリケーションによって提供されるサービスに、より迅速にアクセスできます。
  • ポッドは、VPC NAT ゲートウェイなしでインターネットにアクセスできます。
  • 対象となるアプリケーションは、SLB インスタンスなしでインターネット経由でアクセスできます。

前提条件

  • サーバーレス Kubernetes クラスターが作成されているか、専用またはマネージド Kubernetes クラスターに仮想ノードが作成されている必要があります。 詳細は、「Serverless Kubernetes クラスターの作成」または「仮想ノードのデプロイ」をご参照ください。
  • 実行したいアプリケーションに対応するポートが、対象となる Kubernetes クラスターのセキュリティグループで有効になっている必要があります。
    Nginx アプリケーションを例として使用します。 したがって、80 番ポートを、対象となる Kubernetes クラスターのセキュリティグループで有効にする必要があります。

手順

EIP アドレスをポッドに関連付けるには、次の 2 つの方法のいずれかを使用します。
  • EIP アドレスを対象となるポッドに自動的に関連付けるようにシステムを設定する
    1. Container Service コンソール にログインします。
    2. Container Service - Kubernetes の左側のナビゲーションウィンドウで、 [アプリケーション] > [デプロイメント] を選択します。
    3. 対象となるクラスターおよび名前空間を選択し、サンプルテンプレートを選択するか、またはテンプレートをカスタマイズします。次に、[作成] をクリックします。
      アノテーション k8s.aliyun.com/eci-with-eiptrue に設定した YAML テンプレートをカスタマイズできます。 その結果、サーバーレス Kubernetes クラスターまたは仮想ノードは、自動的に EIP アドレスを作成し、対象となる ポッドに関連付けます。 YAML テンプレートの例を次に示します。
      apiVersion: v1
      kind: Pod
      metadata:
        name: nginx
        annotations:
          "k8s.aliyun.com/eci-with-eip": "true"
      spec:
        containers:
        - image: registry-vpc.cn-hangzhou.aliyuncs.com/jovi/nginx:alpine
          imagePullPolicy: Always
          name: nginx
          ports:
          - containerPort: 80
            name: http
            protocol: TCP
        restartPolicy: OnFailure
      • EIP アドレスの帯域幅を設定するには、アノテーション k8s.aliyun.com/eip-bandwidth を前のテンプレートに追加します。 このアノテーションのデフォルト値は 5 MB です。
      • このメソッドを使用して複数のポッドを含むデプロイを作成すると、デプロイの各ポッドが排他的な EIP アドレスに関連付けられます。 そのため、注意して操作を実行することを推奨します。
    4. Container Service-Kubernetes の左側のナビゲーションウィンドウで、[アプリケーション] > [ポッド] をクリックします。
    5. 目的のポッドの右側で、[詳細] > [編集] を選択します。
      YAML ファイルのアノテーション k8s.aliyun.com/allocated-eipAddress: 47.110.XX.XX に含まれるインターネット IP アドレスは、EIP アドレスです。
    6. お使いのブラウザで、http://IP address を入力し、Nginx アプリケーションにアクセスします。
      http://IP address の IP アドレスは、アノテーション k8s.aliyun.com/allocated-eipAddress: 47.110.XX.XX に含まれる IP アドレスです。
      このメソッドを使用して対象となるポッドに関連付けられた EIP アドレスが動的に生成されます。 具体的には、EIP アドレスとそれに関連付けられているポッドは、同じライフサイクルを共有します。 したがって、ポッドを削除すると、ポッドに関連付けられている EIP アドレスも削除されます。
  • EIP アドレスを対象となるポッドに手動で関連付ける
    1. VPC コンソールにログインして EIP アドレスを作成します。 詳細は、「EIP アドレスの作成」をご参照ください。
      対象となる Kubernetes クラスターが存在するリージョンに EIP アドレスを作成する必要があります。
    2. Container Service コンソール にログインします。
    3. Container Service-Kubernetes の左側のナビゲーションウィンドウで、[アプリケーション] > [デプロイメント] を選択します。
    4. 右上隅で、[テンプレートによる作成] をクリックします。
    5. 対象となるクラスターおよび名前空間を選択し、サンプルテンプレートを選択するか、またはテンプレートをカスタマイズします。その後、[デプロイ] をクリックします。
      以下の YAML テンプレートを使用して、ポッドを作成できます。
      <youreipInstanceId> を、手順 1 で取得した EIP ID に置き換える必要があります。
      apiVersion: v1
      kind: Pod
      metadata:
        name: nginx
        annotations:
          "k8s.aliyun.com/eci-eip-instanceid": "<youreipInstanceId>"
      spec:
        containers:
        - image: registry-vpc.cn-hangzhou.aliyuncs.com/jovi/nginx:alpine
          imagePullPolicy: Always
          name: nginx
          ports:
          - containerPort: 80
            name: http
            protocol: TCP
        restartPolicy: OnFailure
    6. Container Service-Kubernetes の左側のナビゲーションウィンドウで、[アプリケーション] > [ポッド] を選択してポッドのステータスを表示します。
    7. ブラウザで URL http://ip address を入力し、Nginx のウェルカムページにアクセスします。
      この URL については、手順 1 で取得した IP アドレス を入力する必要があります。