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

Container Service for Kubernetes:ACK クラスターでカスタム CNI プラグインを使用する

最終更新日:Nov 09, 2025

ACK がデフォルトで提供する Terway および Flannel Container Network Interface (CNI) プラグインは、ほとんどのコンテナーネットワーク要件を満たします。ただし、他の CNI プラグインの特定の機能を必要とするシナリオでは、ACK では Bring Your Own Container Network Interface (BYOCNI) モードを使用してクラスターにカスタム CNI プラグインをインストールできます。このトピックでは、CNI プラグインなしで ACK マネージドクラスター Pro を作成する方法と、カスタム CNI プラグインを手動でインストールする方法について説明します。

免責事項

Container Network Interface (CNI) は、クラスター内の東西および南北のトラフィックだけでなく、一部のコアコンポーネントの機能にも影響します。たとえば、Webhook は API Server に依存して Pod に直接アクセスします。

Alibaba Cloud は、ACK マネージドクラスター Pro でのカスタム CNI プラグインに起因するエラーに対して、サービスレベルアグリーメント (SLA) を提供しません。カスタム CNI プラグインに関連するネットワーク機能の管理、トラブルシューティング、およびエラーの解決は、お客様の責任となります。ACK は、カスタム CNI プラグインに対するテクニカルサポートを提供しません。

CNI 関連のサポートが必要な場合は、ACK が提供する CNI プラグインを使用するか、商用の CNI プラグインを使用してサードパーティから専門的なテクニカルサポートを受けてください。

注意事項

カスタム CNI プラグインがオーバーレイネットワークを使用する場合、ACK マネージドクラスター Pro の API Server はどの Webhook にもアクセスできません。これは、metrics-server など、Webhook を使用するすべてのコンポーネントに影響します。

ステップ 1: BYOCNI クラスターの作成

  1. CNI プラグインなしの ACK マネージドクラスター Pro (BYOCNI クラスター) は、CreateCluster API 操作を呼び出すか、Terraform を使用して ACK マネージドクラスターを作成することによってのみ作成できます。クラスターを作成するときに、kube-flannel-ds コンポーネントを無効にする必要があります。

    OpenAPI の使用

    Terraform の使用

    "addons": [
        {
            "name": "kube-flannel-ds",
            "disabled": true
        }
    ]
    addons {
      name     = "kube-flannel-ds"
      disabled = true
    }
  2. (オプション) VPC ルートモードを使用する場合は、cloud-controller-manager コンポーネントを設定する必要があります。詳細については、「cloud-controller-manager の構成」をご参照ください。

    OpenAPI の使用

    Terraform の使用

    "addons": [
        {
            "name": "cloud-controller-manager",
            "config": "{\"EnableCloudRoutes\":\"true\",\"BackendType\":\"NodePort\"}"
        }
    ]
    addons {
      name = "cloud-controller-manager"
      config = jsonencode({
        EnableCloudRoutes = "true"
        BackendType       = "NodePort"
      })
    }
  3. クラスターが作成された後、CNI プラグインがインストールされていないため、すべてのノードのステータスは NotReady になります。これは期待される動作です。CNI プラグインをインストールすると、ノードのステータスは自動的に Ready に変わります。

    image

ステップ 2: カスタム CNI プラグインのインストール

重要

以下の手順では、VPC ルートモードで Cilium をインストールする方法について説明しており、参考用です。使用する CNI プラグインによって操作が異なる場合があります。

この例の操作を実行する前に、kubectl を使用してクラスターに接続し、Helm コマンドラインインターフェイス (CLI) をインストールしていることを確認してください。詳細については、「クラスターの kubeconfig ファイルを取得し、kubectl を使用してクラスターに接続する」および「Helm のインストール」をご参照ください。

この例の Cilium イメージは中国国外のリポジトリに保存されています。イメージのプルに失敗する可能性があります。次のいずれかのソリューションを使用できます。
ソリューション 1: Container Registry (ACR) を使用して、中国国外のリポジトリからイメージをサブスクライブします。詳細については、「中国国外のリポジトリからイメージをサブスクライブする」をご参照ください。
ソリューション 2: Global Accelerator (GA) インスタンスを作成し、GA グローバルネットワークアクセラレーションサービスを使用して、中国国外のリポジトリからコンテナイメージを直接プルします。詳細については、「GA を使用して ACK クラスターでのコンテナイメージのクロスリージョンプルを高速化する」をご参照ください。
  1. 次のコマンドを実行して、Cilium の Helm リポジトリを追加します。

    helm repo add cilium https://helm.cilium.io/
  2. 次のコマンドを実行して Cilium をインストールします。クラスターのネットワークプランに基づいて、コマンドのパラメーターを変更します。

    helm install --set securityContext.privileged=true \
        --set routingMode=native \
        --set ipam.mode=kubernetes \
        --set ipMasqAgent.enable=true \
        --set ipMasqAgent.config.nonMasqueradeCIDRs='{172.16.0.0/12,10.0.0.0/8 }' \
        --set ipv4NativeRoutingCIDR=172.16.0.0/12 \
        cilium cilium/cilium --version 1.17.4 \
      --namespace kube-system

    パラメーターの説明:

    • ipv4NativeRoutingCIDR: 172.16.0.0/12 は、クラスターで使用される Pod CIDR ブロックです。

    • ipMasqAgent.config.nonMasqueradeCIDRs: 172.16.0.0/12 はクラスターで使用される Pod CIDR ブロックで、10.0.0.0/8 はクラスターで使用される VPC CIDR ブロックです。

    想定される出力:

    NAME: cilium
    LAST DEPLOYED: Fri Jul 18 16:34:50 2025
    NAMESPACE: kube-system
    STATUS: deployed
    REVISION: 1
    TEST SUITE: None
    NOTES:
    You have successfully installed Cilium with Hubble.
    
    Your release version is 1.17.4.
    
    For any further help, visit https://docs.cilium.io/en/v1.17/gettinghelp
  3. Cilium CNI プラグインがインストールされると、ノードのステータスは Ready に変わります。

    image

その他の構成

BYOCNI クラスターを作成するときに、追加のパラメーターを指定してクラスターの動作をカスタマイズし、CNI プラグインの要件をよりよく満たすことができます。

ノードへの PodCIDR ブロックの割り当て

一部の CNI プラグインは、ノードの PodCIDR プロパティに依存して Pod に IP アドレスを割り当てます。クラスターを作成するときに container_cidrnode_cidr_mask を指定して、クラスターの Pod CIDR ブロックと各ノードのサブネットマスクを設定できます。

container_cidrnode_cidr_mask を構成すると、PodCIDR ブロックがクラスター内の各ノードに割り当てられます。それ以外の場合、PodCIDR ブロックはノードに割り当てられません。これらのパラメーターの設定方法の詳細については、「CreateCluster」をご参照ください。

cloud-controller-manager の構成

ACK cloud-controller-manager は、BYOCNI クラスターにオプション機能を提供します。クラスターを作成するときに cloud-controller-manager アドオンのパラメーターを構成することで、これらの機能を有効または無効にできます。

パラメーター

デフォルト値

必須

説明

EnableCloudRoutes

false

いいえ

ノードで PodCIDR を有効にした後、VPC ルートテーブルを使用して Pod 間の通信を有効にする場合は、cloud-controller-manager の enableCloudRoutes 機能を有効にできます。cloud-controller-manager は、各ノードの PodCIDR ブロックのルートテーブルを自動的に追加します。PodCIDR ブロックから割り当てられた IP アドレスは、VPC 内で直接アクセスできます。

BackendType

NodePort

いいえ

cloud-controller-manager は、CLB/NLB インスタンスの作成や、CLB/NLB インスタンスのバックエンドサーバーグループへの Pod の追加など、LoadBalancer タイプのサービスの処理を担当します。デフォルトでは、cloud-controller-manager はクラスター内のノードの IP アドレスをロードバランシングサービスのバックエンドサーバーグループに追加します。ロードバランシングサービスはトラフィックをノードに転送し、その後、トラフィックはノード上のサービス転送構成に基づいて Pod に転送されます。BYOCNI プラグインが Pod に VPC IP アドレスを割り当てる場合、ノードを介した転送を必要とせずに、Pod の IP アドレスをロードバランシングサービスのバックエンドサーバーグループに直接追加できます。

有効な値:

  • NodePort: ノードの IP アドレスがロードバランシングサービスのバックエンドサーバーグループに追加されます。トラフィックはノードを介して Pod に転送されます。

  • Pod: Pod の IP アドレスがロードバランシングサービスのバックエンドサーバーグループに直接追加されます。Pod の IP アドレスは VPC IP アドレスである必要があります。

構成例:

OpenAPI の使用

Terraform の使用

"addons": [
    {
        "name": "cloud-controller-manager",
        "config": "{\"EnableCloudRoutes\":\"true\",\"BackendType\":\"NodePort\"}"
    }
]
addons {
  name = "cloud-controller-manager"
  config = jsonencode({
    EnableCloudRoutes = "true"
    BackendType       = "NodePort"
  })
}