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

Container Service for Kubernetes:カスタム CNI チェーンの設定

最終更新日:May 20, 2026

コンテナネットワークインターフェイス (CNI) は、Kubernetes におけるネットワークインターフェイスを設定するための仕様です。CNI チェーンは、複数の CNI プラグインを使用して、より柔軟にネットワークを設定できるモードです。Container Service for Kubernetes (ACK) クラスターでは、CNI チェーンによって複数の CNI プラグインをリンクできます。各 CNI プラグインは、IP アドレスの割り当てやルーティングなどのネットワークタスクを処理します。ACK がコンテナを作成する際、CNI チェーンは最初のプラグインを呼び出し、その出力を次のプラグインに渡します。この処理は、チェーン内のすべてのプラグインがタスクを完了するまで続きます。

前提条件

  • Terway ネットワークプラグインを使用する ACK マネージドクラスター があること。

  • Terway のバージョンが v1.5.6 以降であり、クラスターが専用 ENI ネットワークモードではないこと。

警告

ACK は、複数の CNI プラグインが連携して動作することを保証しません。カスタム CNI チェーンの設定は 高リスク操作 です。作業を進める前に、各 CNI プラグインの機能を十分に理解し、 業務中断 につながる可能性のある設定エラーを避けるよう注意してください。

カスタム CNI チェーンの設定

CNI チェーンを使用するには、使用する CNI プラグインを Terway の設定ファイルに追加する必要があります。

  1. 次のコマンドを実行して、eni-config ConfigMap を編集します。

    kubectl edit cm -nkube-system eni-config

    パラメータ

    説明

    10-terway.conf

    Terway CNI の設定です。この設定は変更しないでください。

    重要

    元の設定ファイルは変更しないでください。

    10-terway.conflist

    カスタム CNI チェーンの設定です。

    plugins 内の最初の CNI 設定は、10-terway.conf で定義されている設定である必要があります。

    重要

    このトピックの設定は一例です。設定エラーにつながる可能性があるため、この設定を直接使用しないでください。

    設定ブロックの内容が JSON 形式であることを確認してください。

    設定ファイル:

    kind: ConfigMap
    apiVersion: v1
    metadata:
      name: eni-config
      namespace: kube-system
    data:
      10-terway.conflist: |
          {
            "plugins": [
              {
                "cniVersion": "0.4.0",
                "name": "terway",
                "type": "terway",
                "capabilities": {"bandwidth": true}
              },
              {
                "type": "portmap",
                "capabilities": {"portMappings": true},
                "externalSetMarkChain":"KUBE-MARK-MASQ"
              }
            ]
          }
      10-terway.conf: |
        {
          "cniVersion": "0.4.0",
          "name": "terway",
          "type": "terway",
          "capabilities": {"bandwidth": true}
        }
  2. kubectl rollout restart -n kube-system daemonset.apps/terway-eniip コマンドを実行して、Terway Pod を再構築します。

    設定が正しい場合、ノード上の etc/cni/net.d/10-terway.conflist 設定ファイルでカスタムプラグイン設定を確認できます。

ユースケース

portmap の設定

portmap プラグインは、Pod の内部ポートをホストのポートにマッピングするプラグインです。これにより、Pod は特定のサービスを外部に公開できます。

説明

パブリックネットワークアクセスが必要な場合は、セキュリティグループのインバウンドルールで、対応するポートのトラフィックが許可されていることを確認してください。

このルールは Kubernetes ネットワークポリシーと互換性がない場合があります。本番環境にデプロイする前に、設定を十分にテストすることを推奨します。

設定例

  • ノードのプライベート IP アドレスとポートを使用したアクセス:

    kind: ConfigMap
    apiVersion: v1
    metadata:
      name: eni-config
      namespace: kube-system
    data:
      10-terway.conflist: |
          {
            "plugins": [
              {
                "cniVersion": "0.4.0",
                "name": "terway",
                "type": "terway",
                "capabilities": {"bandwidth": true} 
              },
              {
                "type": "portmap",
                "capabilities": {"portMappings": true},
                "externalSetMarkChain":"KUBE-MARK-MASQ"
              }
            ]
          }
    
      10-terway.conf: |
        {
          "cniVersion": "0.4.0",
          "name": "terway",
          "type": "terway",
          "capabilities": {"bandwidth": true}
        }
  • パブリック IP アドレスとポートを使用したアクセス:

    パブリックネットワークアクセスには、次の設定が必要です:

    パラメータ

    非 Datapath V2

    Datapath V2

    masqAll

    不要

    必須

    symmetric_routing

    必須

    必須

    • masqAll: portmap プラグインのパラメータです。portmap v1.7.1 以降が必要です。

    • symmetric_routing: Terway プラグインのパラメータです。Terway v1.15.0 以降が必要です。

    • kube-proxy の代替が有効になっている Datapath V2 クラスターでは、portmap プラグインは不要です。

    kind: ConfigMap
    apiVersion: v1
    metadata:
      name: eni-config
      namespace: kube-system
    data:
      10-terway.conflist: |
          {
            "name": "terway-chain",
            "plugins": [
              {
                "cniVersion": "0.4.0",
                "name": "terway",
                "type": "terway",
                "symmetric_routing": true,
                "capabilities": {"bandwidth": true} 
              },
              {
                "type": "portmap",
                "capabilities": {"portMappings": true},
                "masqAll": true
              }
            ]
          }
    
      10-terway.conf: |
        {
          "cniVersion": "0.4.0",
          "name": "terway",
          "type": "terway",
          "capabilities": {"bandwidth": true}
        }

コンテナの IPv6 リンクローカルアドレスの無効化

コンテナでは、クラスターで IPv6 デュアルスタック機能が有効になっていない場合でも、コンテナのネットワークインターフェイスは作成時に fe80::/64 サブネット内の IPv6 リンクローカルアドレスを自動的に割り当てられます。これはオペレーティングシステムカーネルのデフォルトの動作であり、通常は無害で、通常の運用を妨げることはありません。

ただし、アプリケーションがネットワークアドレスを処理する際にエラーが発生すると、アプリケーションが IPv6 リンクローカルアドレスを Pod IP アドレスとして認識できない場合があります。その結果、アプリケーションは IPv6 リンクローカルアドレスを使用して通信を試みます。リンクローカルアドレスは同じリンク上のデバイス間の通信にのみ使用され、ネットワーク間の通信には使用できません。そうしないと、アプリケーションで例外が発生する可能性があります。上記のシナリオでアプリケーションコードに不具合がある場合は、まずアプリケーションベンダーに報告し、解決策を求めてください。

それでもコンテナで IPv6 リンクローカルアドレスを無効にする必要がある場合は、tuning プラグインを設定することで無効にできます。

設定例

kind: ConfigMap
apiVersion: v1
metadata:
  name: eni-config
  namespace: kube-system
data:
  10-terway.conflist: |
      {
        "plugins": [
          {
            "cniVersion": "0.4.0",
            "name": "terway",
            "type": "terway",
            "capabilities": {"bandwidth": true}
          },
          {
            "type": "tuning",
            "sysctl": {
              "net.ipv6.conf.all.disable_ipv6": "1",
              "net.ipv6.conf.default.disable_ipv6": "1",
              "net.ipv6.conf.lo.disable_ipv6": "1"
            }
          }
        ]
      }
  10-terway.conf: |
    {
      "cniVersion": "0.4.0",
      "name": "terway",
      "type": "terway",
      "capabilities": {"bandwidth": true}
    }