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

Container Service for Kubernetes:Pod への IPv6 インターネット帯域幅の割り当て

最終更新日:Mar 27, 2025

デフォルトでは、IPv6 アドレスは内部ネットワーク経由の通信にのみ使用できます。インターネット経由の通信に IPv6 アドレスを使用するには、IPv6 ゲートウェイを作成し、IPv6 アドレスを使用する Pod に IPv6 インターネット帯域幅を割り当てる必要があります。このトピックでは、Container Service for Kubernetes (ACK) クラスターで IPv6 アドレスを使用する Pod のインターネット帯域幅と egress-only ルールを構成する方法について説明します。

前提条件

  • ACK マネージドクラスターまたは ACK 専用クラスターが作成されていること。詳細については、「ACK マネージドクラスターを作成する」または「ACK 専用クラスターを作成する (提供終了)」をご参照ください。クラスターは次の要件を満たしている必要があります。

    • IPv4/IPv6 デュアルスタックが有効になっていること。IPv6 ゲートウェイの詳細については、「IPv6 ゲートウェイとは」をご参照ください。

    • クラスターに Terway ネットワークプラグインが使用されていること。

  • クラスターの仮想プライベートクラウド (VPC) に IPv6 ゲートウェイが作成されており、ipv6gw コントローラーが使用されていること。IPv6 ゲートウェイの作成方法の詳細については、「IPv6 ゲートウェイの作成と管理」をご参照ください。

重要

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

制限事項

  • このトピックでは、ack-extend-network-controller コンポーネントを使用して IPv6 ゲートウェイを有効にし、k8s.aliyun.com/ipv6-bandwidth などのアノテーションを使用して IPv6 パブリック帯域幅を構成する方法について説明します。この方法は、標準 ECS ノードと Pod のみをサポートしています。Elastic Container Instance または Alibaba Cloud Container Compute Service (ACS) インスタンスを構成するには、「Elastic Container Instance ベースの Pod に IPv6 アドレスを割り当てる」または「Pod に IPv6 アドレスを割り当てる」をご参照ください。

  • IPv6 ゲートウェイでサポートされる帯域幅と egress-only ルールの数は、ゲートウェイの仕様によって異なります。詳細については、「制限」をご参照ください。

ack-extend-network-controller の構成を変更して IPv6 ゲートウェイを有効にする

ack-extend-network-controller は、Alibaba Cloud サービスの API を呼び出してクラウドリソースを作成します。最初に、必要な Resource Access Management (RAM) 権限を ack-extend-network-controller に付与し、次に ACK コンソールのマーケットプレイスページから ack-extend-network-controller をインストールする必要があります。その後、Pod にアノテーションを追加して IPv6 ゲートウェイを作成し、Pod に関連付けることができます。

手順 1:IPv6 に必要な RAM 権限を付与する

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

  2. [クラスター] ページで、管理するクラスターを見つけ、その名前をクリックします。左側のウィンドウで、[クラスター情報] をクリックします。

  3. [クラスター情報] ページで、[基本情報] タブをクリックし、[ワーカー RAM ロール] の横にあるハイパーリンクをクリックします。

  4. カスタムポリシーを作成し、次の内容をポリシーに追加します。詳細については、「[製品の変更] ACK マネージドクラスターのワーカー RAM ロールの権限が取り消されました」トピックの「手順 1:カスタムポリシーを作成する」セクションをご参照ください。

    {
          "Effect": "Allow",
          "Action": [
            "vpc:DescribeIpv6Addresses",
            "vpc:CreateIpv6EgressOnlyRule",
            "vpc:DeleteIpv6EgressOnlyRule",
            "vpc:DescribeIpv6EgressOnlyRules",
            "vpc:AllocateIpv6InternetBandwidth",
            "vpc:DeleteIpv6InternetBandwidth"
          ],
          "Resource": [
            "*"
          ],
          "Condition": {}
        }
  5. カスタムポリシーをクラスターのワーカー RAM ロールにアタッチします。詳細については、「[製品の変更] ACK マネージドクラスターのワーカー RAM ロールの権限が取り消されました」トピックの「カスタムポリシーをワーカー RAM ロールにアタッチする」セクションをご参照ください。

手順 2:ack-extend-network-controller の ipv6gw コントローラーを有効にする

ack-extend-network-controller をインストールし、ipv6gw コントローラーを有効にします。マーケットプレイスから ack-extend-network-controller をインストールする方法の詳細については、「App Marketplace」をご参照ください。

ipv6gw コントローラーに次のパラメーターを指定します。

clusterID: "c11ba338192xxxxxxx"          # 実際の値を指定します。
regionID: "cn-hangzhou"                  # 実際の値を指定します。
vpcID: "vpc-bp1rkq0zxxxxxx"              # 実際の値を指定します。
enableControllers:
  - ipv6gw                               # IPv6 ゲートウェイを有効にします。
networkController:
  ipv6GatewayController:
    maxConcurrentReconciles: 10          # コントローラーの最大同時調整数。

credential:                               # AccessKey ペアを指定します。ACK マネージドクラスターと ACK 専用クラスターには、RamRole モードを使用することをお勧めします。
  accessKey: ""
  accessSecret: ""

Pod にインターネット IPv6 帯域幅を割り当て、egress-only ルールを構成するポッドにインターネット IPv6 帯域幅を割り当て、送信専用のルールを構成する

Pod に次のアノテーションを追加して、インターネット IPv6 帯域幅を割り当て、課金方法を指定し、egress-only ルールを構成します。

Pod アノテーション

k8s.aliyun.com/ipv6-bandwidth

IPv6 ゲートウェイのインターネット帯域幅。単位:Mbit/s。有効な値:1 ~ 5000。

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

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

IPv6 ゲートウェイのインターネット帯域幅の課金方法。有効な値:

  • PayByTraffic: トラフィック課金

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

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

k8s.aliyun.com/ipv6-egress-only

egress-only ルールを作成します。

ACK コンソールの使用

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

  2. [クラスター] ページで、管理するクラスターを見つけ、その名前をクリックします。左側のウィンドウで、[ワークロード] > [デプロイメント] を選択します。

  3. [デプロイメント] ページの右上で、[YAML から作成] をクリックします。次に、次の YAML コンテンツを [テンプレート] パラメーターにコピーし、[作成] をクリックします。

    この例では、Pod に割り当てられるインターネット IPv6 帯域幅は 10 Mbit/s で、egress-only ルールが作成されます。

    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 Mbit/s に設定します。
            k8s.aliyun.com/ipv6-egress-only: "" # egress-only ルールを作成します。
        spec:
          containers:
          - name: example
            image: nginx
  4. [デプロイメント] ページで、example という名前のデプロイメントを見つけ、その名前をクリックして基本情報ページに移動します。[example] デプロイメントの基本情報ページで、Pod の名前を表示できます。

  5. 次のコマンドを実行して、Pod と同じ名前を使用する podipv6gws.alibabacloud.com リソースをクエリします。割り当てられた帯域幅と egress-only ルールを表示できます。

    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 に割り当てられるインターネット IPv6 帯域幅は 10 Mbit/s で、egress-only ルールが作成されます。

    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 Mbit/s に設定します。
            k8s.aliyun.com/ipv6-egress-only: "" # egress-only ルールを作成します。
        spec:
          containers:
          - name: example
            image: nginx
  2. 次のコマンドを実行して、リソースオブジェクトを作成します。

    kubectl apply -f example.yaml

    予期される出力:

    deployment.apps/example created
  3. 次のコマンドを実行して、Pod の名前をクエリします。

    kubectl get podipv6gws -n <サンプルデプロイメントの名前空間>
  4. 次のコマンドを実行して、Pod と同じ名前を使用する podipv6gws.alibabacloud.com リソースをクエリします。割り当てられた帯域幅と egress-only ルールを表示できます。

    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

FAQ

ACK クラスタに ack-extend-network-controller をデプロイするにはどうすればよいですかServerless Kubernetes クラスター に ack-extend-network-controller をデプロイするにはどうすればよいですか?

Serverless Kubernetes クラスター にこのコンポーネントをデプロイしないことをお勧めします。コンポーネントをデプロイする必要がある場合は、最初に RAM ユーザーの AccessKey ペアを生成する必要があります。詳細については、「RAM ユーザーの作成」および「カスタムポリシーの作成」をご参照ください。次に、マーケットプレイスページでコンポーネントをデプロイするときに、対応するパラメーターを構成します。

参照資料

Pod が外部ネットワークにアクセスできるようにする方法の詳細については、「Pod が外部ネットワークにアクセスできるように構成する」をご参照ください。