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

Container Service for Kubernetes:Pod の IPv6 パブリック帯域幅の設定

最終更新日:Mar 07, 2026

デフォルトでは、IPv6 アドレスは内部アクセスのみをサポートします。Pod がパブリック IPv6 アドレスにアクセスできるようにするには、IPv6 ゲートウェイを使用して IPv6 パブリック帯域幅を設定する必要があります。このトピックでは、Pod の IPv6 アドレスに帯域幅プランを割り当て、エグレスルールを設定する方法について説明します。

前提条件

重要

一部の Elastic Compute Service (ECS) インスタンスのみが IPv6 をサポートしています。詳細については、「インスタンスファミリー」をご参照ください。

制限事項

  • このトピックでは、ack-extend-network-controller コンポーネントを使用して IPv6 ゲートウェイ機能を有効にする方法について説明します。このコンポーネントは、k8s.aliyun.com/ipv6-bandwidth などのアノテーションを使用して IPv6 パブリック帯域幅を設定します。この方法は、標準の ECS ノードと Pod のみをサポートします。ECI または ACS インスタンスはサポートしていません。ECI および ACS インスタンスの IPv6 パブリック帯域幅を設定するには、「ECI Pod への IPv6 アドレスの割り当て」および「ACS Pod への IPv6 アドレスの割り当て」をご参照ください。

  • 帯域幅と設定エントリの数は、IPv6 ゲートウェイの機能によって制限されます。制限事項の詳細については、「制限事項」をご参照ください。

ack-extend-network-controller での IPv6 ゲートウェイ機能の有効化

ack-extend-network-controller コンポーネントは、Alibaba Cloud OpenAPI を使用してリソースを作成します。Resource Access Management (RAM) で必要な権限を設定する必要があります。次に、Alibaba Cloud Marketplace から ack-extend-network-controller コンポーネントをインストールする必要があります。最後に、アノテーションを使用して IPv6 ゲートウェイを作成し、特定の Pod に関連付けることができます。

ステップ 1:IPv6 の RAM 権限の設定

  1. Container Service for Kubernetes (ACK) コンソールにログインします。左側のナビゲーションウィンドウで、クラスターリスト をクリックします。

  2. クラスターリスト ページで、対象クラスターの名前をクリックします。左側のナビゲーションウィンドウで、クラスター情報 をクリックします。

  3. クラスター情報 ページで、基本情報 タブに移動します。Worker RAM ロール の横にあるリンクをクリックします。

  4. 次の内容を含むカスタムポリシーを作成します。詳細については、「ステップ 1:カスタムポリシーの作成」をご参照ください。

    {
          "Effect": "Allow",
          "Action": [
            "vpc:DescribeIpv6Addresses",
            "vpc:CreateIpv6EgressOnlyRule",
            "vpc:DeleteIpv6EgressOnlyRule",
            "vpc:DescribeIpv6EgressOnlyRules",
            "vpc:AllocateIpv6InternetBandwidth",
            "vpc:DeleteIpv6InternetBandwidth"
          ],
          "Resource": [
            "*"
          ],
          "Condition": {}
        }
  5. クラスターのワーカー RAM ロールにカスタムポリシーを付与します。詳細については、「ステップ 2:クラスターのワーカー RAM ロールへの権限付与」をご参照ください。

ステップ 2:ack-extend-network-controller コンポーネントの ipv6gw コントローラーの有効化

ACK Marketplace から ack-extend-network-controller コンポーネントをインストールし、ipv6gw コントローラーを有効にします。詳細については、「Marketplace」をご参照ください。

ipv6gw コントローラーの設定パラメーターは次のとおりです。

clusterID: "c11ba338192xxxxxxx"          # 実際のクラスター ID に置き換えます。
regionID: "cn-hangzhou"                  # 実際のリージョン ID に置き換えます。
vpcID: "vpc-bp1rkq0zxxxxxx"              # 実際の VPC ID に置き換えます。
enableControllers:
  - ipv6gw                               # IPv6 ゲートウェイコントローラーを有効にします。
networkController:
  ipv6GatewayController:
    maxConcurrentReconciles: 10          # 最大同時リコンサイル数を設定します。

credential:                               # AccessKey ペアを使用します。ACK マネージドクラスターおよび ACK 専用クラスターでは、代わりに RAM ロールを使用することを推奨します。
  accessKey: ""
  accessSecret: ""

Pod の IPv6 ネットワークの帯域幅とエグレスルールの設定

次の Pod アノテーションを使用して、IPv6 ネットワークの帯域幅、課金方法、エグレスルールを設定します:

Pod アノテーション

k8s.aliyun.com/ipv6-bandwidth

IPv6 ゲートウェイのパブリック帯域幅 (単位:Mbps)。有効な値:1~5000。

詳細については、「AllocateIpv6InternetBandwidth」をご参照ください。

k8s.aliyun.com/ipv6-internet-charge-type

IPv6 パブリック帯域幅の課金方法。有効な値:

  • PayByTraffic:トラフィック課金。

  • PayByBandwidth (デフォルト):帯域幅課金。

詳細については、「AllocateIpv6InternetBandwidth」をご参照ください。

k8s.aliyun.com/ipv6-egress-only

エグレスオンリールールを作成します。

コンソールでの操作手順

  1. ACK コンソールにログインします。左側のナビゲーションウィンドウで、クラスターリスト をクリックします。

  2. クラスターリスト ページで、対象クラスターの名前をクリックします。左側のナビゲーションウィンドウで、ワークロード > デプロイメント をクリックします。

  3. デプロイメント ページの右上隅にある YAML のリソースの作成 をクリックします。次の YAML の例を テンプレート エディターに貼り付け、作成 をクリックします。

    この例では、Pod に 10 Mbps の IPv6 帯域幅を設定し、エグレスオンリールールを作成します。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: example
      labels:
        app: example
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: example
      template:
        metadata:
          labels:
            app: example
          annotations:
            k8s.aliyun.com/ipv6-bandwidth: "10" # IPv6 ゲートウェイのパブリック帯域幅を 10 Mbps に設定します。
            k8s.aliyun.com/ipv6-egress-only: "" # エグレスオンリールールを作成します。
        spec:
          containers:
          - name: example
            image: nginx
  4. デプロイメント ページで、example という名前のデプロイメントをクリックします。example の概要ページで、作成された Pod の名前を見つけます。

  5. 次のコマンドを実行して、Pod と同じ名前の podipv6gws.alibabacloud.com リソースをクエリします。出力で、割り当てられた帯域幅プランとエグレスオンリールールのステータスを確認できます。

    kubectl get podipv6gws.alibabacloud.com  -oyaml example-674b897446-q****

    想定される出力:

    apiVersion: alibabacloud.com/v1beta1
    kind: PodIPv6GW
    metadata:
      creationTimestamp: "2024-02-07T06:00:48Z"
      finalizers:
      - ipv6gw-controller.alibabacloud.com/finalizer
      generation: 1
      name: example-674b897446-q****
      namespace: default
      ownerReferences:
      - apiVersion: v1
        kind: Pod
        name: example-674b897446-q****
        uid: bdf86c45-7**5-4**4-b**3-9b****
      resourceVersion: "11488"
      uid: 78747d60-9**8-4**e-b**8-f7f7c****
    spec:
      bandwidth: 10
      egressOnlyRule: true
      ipv6Address: 2408:4006:1115:xxxx:xxxx:xxxx:xxxx:xxxx
     status:
        ipv6AddressID: ipv6-xxx
        ipv6EgressOnlyRuleID: ipv6py-xxx
        ipv6GatewayID: ipv6gw-xxx
        ipv6InternetBandwidthID: ipv6bw-xxx

kubectl での操作手順

  1. 次の内容を含む example.yaml という名前のファイルを作成します。

    この例では、Pod に 10 Mbps の IPv6 帯域幅を設定し、エグレスオンリールールを作成します。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: example
      labels:
        app: example
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: example
      template:
        metadata:
          labels:
            app: example
          annotations:
            k8s.aliyun.com/ipv6-bandwidth: "10" # IPv6 ゲートウェイのパブリック帯域幅を 10 Mbps に設定します。
            k8s.aliyun.com/ipv6-egress-only: "" # エグレスオンリールールを作成します。
        spec:
          containers:
          - name: example
            image: nginx
  2. 次のコマンドを実行してリソースを作成します。

    kubectl apply -f example.yaml

    想定される出力:

    deployment.apps/example created
  3. 次のコマンドを実行して、作成された Pod の名前を表示します。

    kubectl get podipv6gws -n <namespace where example is deployed>
  4. 次のコマンドを実行して、Pod と同じ名前の podipv6gws.alibabacloud.com リソースをクエリします。出力で、割り当てられた帯域幅プランとエグレスオンリールールのステータスを確認できます。

    kubectl get podipv6gws.alibabacloud.com  -oyaml example-674b897446-q****

    想定される出力:

    apiVersion: alibabacloud.com/v1beta1
    kind: PodIPv6GW
    metadata:
      creationTimestamp: "2024-02-07T06:00:48Z"
      finalizers:
      - ipv6gw-controller.alibabacloud.com/finalizer
      generation: 1
      name: example-674b897446-q****
      namespace: default
      ownerReferences:
      - apiVersion: v1
        kind: Pod
        name: example-674b897446-q****
        uid: bdf86c45-7**5-4**4-b**3-9b****
      resourceVersion: "11488"
      uid: 78747d60-9**8-4**e-b**8-f7f7c****
    spec:
      bandwidth: 10
      egressOnlyRule: true
      ipv6Address: 2408:4006:1115:xxxx:xxxx:xxxx:xxxx:xxxx
     status:
        ipv6AddressID: ipv6-xxx
        ipv6EgressOnlyRuleID: ipv6py-xxx
        ipv6GatewayID: ipv6gw-xxx
        ipv6InternetBandwidthID: ipv6bw-xxx

よくある質問

ACK サーバーレスクラスターに ack-extend-network-controller コンポーネントをデプロイするにはどうすればよいですか?

ACK サーバーレスクラスターにこのコンポーネントをデプロイすることは推奨しません。コンポーネントをデプロイする必要がある場合は、まず RAM ユーザーの AccessKey ペアを生成する必要があります。詳細については、「RAM ユーザーの作成」および「カスタムポリシーの作成」をご参照ください。その後、Marketplace からコンポーネントをデプロイする際に、対応するフィールドに AccessKey ペアを指定します。

参考資料

Pod から外部ネットワークにアクセスする方法の詳細については、「Pod から外部ネットワークへのアクセスに関する注意事項」をご参照ください。