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

Container Service for Kubernetes:Terwayを使用する

最終更新日:Oct 31, 2024

Terwayは、Alibaba Cloudによって開発されたオープンソースのContainer Network Interface (CNI) プラグインです。 TerwayはVirtual Private Cloud (VPC) と連携し、標準のKubernetesネットワークポリシーを使用して、コンテナー間の通信方法を規制できます。

あなたが始める前に

Terwayの動作モードをよりよく理解するために、Terwayネットワークプラグインを使用する前にこのトピックを読むことをお勧めします。

このトピックを読む前に、コンテナーネットワークプラグインで使用される用語を理解し、コンテナーネットワークプラグインを選択することをお勧めします。 詳細については、「ネットワークの概要」および「TerwayとFlannelの比較」をご参照ください。

クラスターを作成する前に、クラスターのCIDRブロックを計画する必要があります。 詳細については、「ACKクラスターのネットワークの計画」をご参照ください。

課金

Terwayは無料です。 ただし、Terwayで使用されるポッドは各ノードにデプロイされます。 これらのポッドは、少量のノードリソースを消費します。 ACKで使用されるAlibaba Cloudサービスの課金の詳細については、「Cloud service billing」をご参照ください。

ノードの最大ポッド数の計算方法

Terwayモードでは、ノード上のポッドの最大数は、elastic Compute Service (ECS) インスタンスによって提供されるElastic network Interface (ENI) の数によって異なります。 Terwayには、ノード上のポッドの下限があります。 ノード上のポッドの最大数は、ノードがクラスターに参加できる下限以上である必要があります。 下表に詳細を示します。

Terwayモード

ノードの最大ポッド数

ノード上の静的IPアドレス、個別のvSwitch、および個別のセキュリティグループをサポートするポッドの最大数

共有ENIモード

(EniQuantity - 1) × EniPrivateIpAddressQuantity。ここで、EniQuantityはECSインスタンスタイプによって提供されるENIの数であり、EniPrivateIpAddressQuantityはENIによって提供されるプライベートIPアドレスの数です。

説明

ノードがクラスターに参加できるように、ノード上のポッドの最大数は11より大きい必要があります。

この例では、汎用ecs.g7.4xlargeインスタンスタイプが使用されています。 このインスタンスタイプは8つのENIを提供し、各ENIは30のプライベートIPアドレスを提供します。 ノード上のポッドの最大数は (8 - 1) × 30 = 210です。

重要

ノードでENIを使用できるポッドの最大数は、インスタンスタイプによって決定される固定値です。 maxPodsパラメーターの値を変更すると、hostNetworkモードを使用するポッドの最大数のみが影響を受けます。

0

共有ENI + トランクENI

EniTotalQuantity -EniQuantity。ここで、EniTotalQuantityは、ECSインスタンスタイプでサポートされているネットワークインターフェイスの最大数、および

独占ENI

EniQuantity - 1

説明

クラスターに参加するには、ノード上のポッドの最大数が6より大きい必要があります。

この例では、汎用ecs.g7.4xlargeインスタンスタイプが使用されています。 このインスタンスタイプは8つのENIをサポートします。 ノードでサポートされるポッドの最大数は (8 - 1) = 7です。

EniQuantity - 1

重要

Terway v1.11.0以降のバージョンでは、排他的ENIモードまたは共有ENIモードで実行されるノードプールを作成できます。これら2種類のノードプールは同じクラスターに存在できます。 詳細については、「Terway」をご参照ください。

ノードネットワークでサポートされているポッドの最大数の表示

  • 方法1: ACKコンソールでノードプールを作成するときに、[インスタンスタイプ] セクションの [Terwayモード (サポートされているポッド)] 列に、インスタンスタイプでサポートされているポッドの最大数を表示できます。

  • 方法2: 次の手順を実行して、ECSインスタンスタイプでサポートされているポッドの最大数を手動で計算します。

    • 関連するドキュメントを読んで、インスタンスタイプによって提供されるENIの数を取得します。 詳細については、「インスタンスファミリーの概要」をご参照ください。

    • OpenAPI Explorerで情報を照会します。 InstanceTypesパラメーターでノードのインスタンスタイプを指定し、[呼び出しの開始] をクリックします。 EniQuantityパラメーターの戻り値は、インスタンスタイプによって提供されるENIの数を示します。 EniPrivateIpAddressQuantityパラメーターは、各ENIによって提供されるプライベートIPアドレスの数を示します。 EniTotalQuantityパラメーターは、インスタンスタイプでサポートされているネットワークインターフェイスの最大数を示します。

クラスター作成時にTerwayをインストール

Terwayをネットワークプラグインとして選択できるのは、クラスターを作成する場合のみです。 クラスターの作成後にプラグインを変更することはできません。

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

  2. 右上隅のクラスターページでKubernetesクラスターの作成をクリックします。

  3. Terwayの主要なネットワークパラメータを設定します。 その他のクラスターパラメーターの詳細については、「ACK管理クラスターの作成」をご参照ください。

    パラメーター

    説明

    IPv6 デュアルスタック

    IPv4とIPv6をサポートするデュアルスタッククラスターを作成するには、[有効] を選択します。

    IPv4/IPv6デュアルスタックを有効にすると、デュアルスタッククラスタが作成されます。 この機能はパブリックプレビュー中です。 この機能を使用するには、Quota Centerコンソールでアプリケーションを送信します。

    重要
    • Kubernetes 1.22を実行するクラスターのみがIPv4/IPv6デュアルスタックをサポートしています。

    • IPv4アドレスは、ワーカーノードと制御プレーンとの間の通信に使用される。

    • ネットワークプラグインとしてTerwayを選択する必要があります。

    • Terwayの共有ENIモードを使用する場合、ECSインスタンスタイプはIPv6アドレスをサポートしている必要があります。 指定されたタイプのECSインスタンスをクラスターに追加するには、ECSインスタンスタイプでサポートされるIPv4アドレスの数がIPv6アドレスの数と同じである必要があります。 ECSインスタンスタイプの詳細については、「インスタンスファミリーの概要」をご参照ください。

    • IPv4/IPv6デュアルスタックをサポートするVPCおよびECSインスタンスを使用する必要があります。

    • クラスターでElastic Remote Direct Memory Access (eRDMA) を使用する場合は、IPv4/IPv6デュアルスタックを無効にする必要があります。

    VPC

    クラスターで使用されているVPC。

    ネットワークプラグイン

    [Terway] を選択します。

    データパスV2

    このチェックボックスをオンにすると、DataPath V2アクセラレーションモードが使用されます。 DataPath V2高速化モードを選択すると、Terwayはより高速なネットワーク通信のために共有ENIモードとは異なるトラフィック転送リンクを採用します。 DataPath V2の機能の詳細については、「ネットワークアクセラレーション」をご参照ください。

    NetworkPolicyのサポート

    このチェックボックスをオンにすると、KubernetesネイティブのNetworkPoliciesがサポートされます。

    説明

    コンソールを使用してNetworkPoliciesを管理する機能は、パブリックプレビューにあります。 この機能を使用する場合は、クォータセンターコンソールにログインしてアプリケーションを送信します。

    ENIトランキングのサポート

    このチェックボックスをオンにすると、トランクENI機能が有効になります。 静的IPアドレス、個別のvSwitch、および各ポッドに個別のセキュリティグループを指定できます。

    説明
    • ACK管理クラスターのENIトランキングのサポートオプションを選択すると、アプリケーションを送信する必要はありません。 ACK専用クラスターでトランクENI機能を有効にする場合は、クォータセンターコンソールにログインしてアプリケーションを送信します。

    • デフォルトでは、Trunk ENI機能は、Kubernetes 1.31以降のバージョンを実行する新しく作成されたACK管理クラスターに対して有効になっています。

    vSwitch

    クラスター内のノードで使用されるvSwitchのCIDRブロック。 高可用性を確保するために、異なるゾーンで少なくとも3つのvSwitchを選択することを推奨します。

    ポッド VSwitch

    ポッドで使用されるvSwitchのCIDRブロック。 CIDRブロックは、ノードのvSwitch CIDRブロックと重複できます。

    サービスCIDR

    Service CIDRブロックは、ノードまたはポッドCIDRブロックと重複することはできません。

    IPv6サービスCIDR

    IPv4/IPv6デュアルスタックを有効にした後、IPアドレスを設定できます。

Terwayモードの概要

Terwayの仕組みの詳細については、次のセクションを参照してください。

共有ENIモードと排他的ENIモード

ポッドにIPアドレスを割り当てると、Terwayは共有ENIモードまたは排他的ENIモードのいずれかのモードで動作します。

重要
  • Terway v1.11.0以降のバージョンでは、クラスター内のノードプールに対して共有ENIモードまたは排他ENIモードを選択できます。この選択はクラスターの作成時には使用できなくなります。

  • ノード上のプライマリENIがノードOSに割り当てられます。 残りのENIは、ポッドネットワークを構成するためにTerwayによって使用されます。 したがって、ENIを手動で設定しないでください。 ENIを手動で管理する方法の詳細については、「ENIフィルターの設定」をご参照ください。

項目

共有ENIモード

排他的なENIモード

ポッドIPアドレス管理

ENI割り当てモード

複数のポッドが同じENIを共有します。

各ポッドには個別のENIが割り当てられます。

ポッドの展開密度

ポッド展開の密度は高いです。 1つのノードに数百のポッドをデプロイできます。

ポッド展開の密度は低いです。 1桁のポッドは、通常のノードにデプロイできます。

ネットワークアーキテクチャ

imageimage

データリンク

ポッドが他のポッドにアクセスする場合、またはサービスバックエンドとしてアクセスされる場合、トラフィックはノードのネットワークプロトコルスタックを通過します。

ポッドがサービスにアクセスしても、トラフィックはノードOSのプロトコルスタックを通過します。 ただし、ポッドが他のポッドにアクセスする場合、またはサービスバックエンドとしてアクセスされる場合、アタッチされたENIを直接使用してノードネットワークプロトコルスタックをバイパスし、パフォーマンスを向上させます。

使用シナリオ

一般的なKubernetesシナリオ。

このモードのネットワークパフォーマンスは、従来の仮想マシンのパフォーマンスに匹敵します。これは、高いネットワークスループットや低遅延を必要とするアプリケーションなど、高いネットワークパフォーマンスを必要とするシナリオに適しています。

ネットワークアクセラレーション

DataPath V2ネットワーク高速化がサポートされています。 詳細については、「ネットワークの高速化」をご参照ください。

ネットワーク高速化はサポートされていません。 ポッドの専用ENIリソースは、優れたネットワークパフォーマンスを提供します。

NetworkPolicyのサポート

KubernetesネイティブのNetworkPoliciesがサポートされ、アクセス制御機能を提供します。

NetworkPolicy機能はサポートされていません。

アクセス制御

トランクENI機能を使用すると、静的IPアドレス、個別のvSwitch、およびポッドごとに個別のセキュリティグループを指定できます。 詳細については、「静的IPアドレス、個別のvSwitch、および各ポッドの個別のセキュリティグループの設定」をご参照ください。

デフォルトでは、静的IPアドレス、個別のvSwitch、および個別のセキュリティグループをポッドに設定できます。

ネットワークアクセラレーション

Terwayの共有ENIモードを使用する場合は、ネットワークアクセラレーションモードを有効にできます。 アクセラレーションモードを有効にすると、Terwayは通常の共有ENIモードとは異なるトラフィック転送パスを使用してパフォーマンスを向上させます。 DataPath V2はTerwayでサポートされています。 DataPath V2の機能の詳細については、以下の説明を参照してください。

重要
  • DataPath V2は、以前のIPVLANおよび拡張されたBerkeleyパケットフィルタ (eBPF) アクセラレーションモードのアップグレードバージョンです。 Terway 1.8.0以降でインストールされているクラスターを作成する場合は、DataPath V2のみを選択できます。

  • DataPath V2およびIPVLAN + eBPFアクセラレーションモードは、共有ENIモードで実行されるノードプールにのみ適用されます。 排他的ENIモードで実行されるノードプールには適用されません。

DataPath V2機能

説明

適当なTerwayバージョン

Terway 1.8.0以降でインストールされているクラスター。

ネットワークアーキテクチャ

image

高速化されたデータリンク

  • ポッドがサービスにアクセスすると、eBPFを使用してサービスアドレスがサービスのバックエンドポッドのアドレスに解決されます。

  • ポッドが異なるノード上の別のポッドにアクセスする場合、eBPFを使用してノードのネットワークプロトコルスタックをバイパスします。

  • ポッドが同じノード上の別のポッドにアクセスすると、ポッドはノードプロトコルスタックをバイパスします。 トラフィックはノード内で転送されます。

パフォーマンスの最適化

  • ホスト上のポッドのネットワーク転送プロセスが簡素化されます。 このように、ポッドネットワークのパフォーマンスはホストネットワークのパフォーマンスとほぼ同じであり、レイテンシは従来のモードと比較して30% 削減されます。

  • サービスネットワークは、kubeプロキシモードの代わりにeBPFテクノロジーに基づいて実装されます。 トラフィックは、ホストiptablesまたはIP仮想サーバー (IPVS) をバイパスし、ネットワーク遅延を大幅に削減します。 大規模なクラスタでは、ネットワークパフォーマンスへの影響が軽減され、スケーラビリティが向上します。

  • ポッドのネットワークポリシー (NetworkPolicy) は、iptablesではなくeBPFテクノロジに基づいて実装されます。 このようにして、ホスト上で多数のiptablesルールが生成されなくなり、ネットワークパフォーマンスに対するネットワークポリシーの影響が軽減されます。

使用方法

クラスターを作成し、ネットワークプラグイン[Terway] に設定し、[DataPath V2] を選択します。

使用上の注意

  • Alibaba Cloud Linux OSイメージのみがサポートされています。

  • Sandboxed-Containerランタイムはサポートされていません。

  • ネットワークポリシー (NetworkPolicy) の実装ロジックは、元のTerwayの実装ロジックとは異なります。

    • CIDRセレクターは、ポッドセレクターよりも優先度が低くなります。 CIDRセレクターにポッドCIDRブロックが含まれている場合は、別のポッドセレクターを追加する必要があります。

    • CIDRセレクターのexceptキーワードは完全にはサポートされていません。 exceptキーワードは使用しないことを推奨します。

    • Egressタイプのネットワークポリシー (NetworkPolicy) を使用する場合、ホストネットワーク内のポッドまたはクラスター内のノードのIPアドレスにアクセスすることはできません。

  • ループバックの問題により、クラスター内からLoadBalancerサービスに関連付けられているインターネット向けSLBインスタンスにアクセスできない場合があります。 詳細については、「」をご参照ください。SLBインスタンスにアクセスできないのはなぜですか?

既存のクラスタでは、IPVLAN + eBPF加速モードが選択される。 IPVLAN + eBPFの機能の詳細については、以下の説明を参照されたい。

IPVLAN + eBPF

機能

説明

適当なTerwayバージョン

Terway 1.7.0以降でインストールされているクラスター。

ネットワークアーキテクチャ

image

高速化されたデータリンク

  • ポッドがサービスにアクセスすると、eBPFを使用して、サービスアドレスをポッドのネットワーク名前空間内のサービスのバックエンドポッドのアドレスに解決します。

  • ポッドが別のノード上の別のポッドにアクセスする場合、ノードのネットワークプロトコルスタックをバイパスするためにIPVLANが使用されます。

使用方法

クラスターを作成し、ネットワークプラグイン[Terway] に設定し、[Pod IPVLAN] を選択します。

アクセス制御

Terwayの共有ENIモードは、NetworkPolicy機能とENIトランキングのサポートオプションをサポートしています。 これにより、クラスター内のネットワークトラフィックの管理が容易になります。 Terwayの排他的ENIモードは、特定のトラフィック制御機能もサポートします。

NetworkPolicyのサポート

  • Terwayの排他的ENIモードで実行されるノードプールは、NetworkPolicy機能をサポートしていません。

  • Terwayの共有ENIモードで実行されるノードプールは、KubernetesネイティブのNetworkPolicy機能をサポートしています。 ネットワークポリシーを使用すると、ユーザー定義のルールを使用してポッド間のネットワークトラフィックを制御できます。

    クラスターを作成し、ネットワークプラグイン[Terway] に設定し、[ネットワークポリシーのサポート] を選択します。 これにより、クラスターはNetworkPolicy機能をサポートします。 詳細については、「ACKクラスターでのネットワークポリシーの使用」をご参照ください。

    説明

    コンソールを使用してNetworkPoliciesを管理する機能は、パブリックプレビューにあります。 この機能を使用する場合は、クォータセンターコンソールにログインしてアプリケーションを送信します。

静的IPアドレス、個別のvSwitch、およびポッドの個別のセキュリティグループを設定する

  • Terwayの排他的ENIモードで実行されるノードプールでは、静的IPアドレス、個別のvSwitch、およびポッドごとに個別のセキュリティグループを指定できます。 これにより、ユーザートラフィックの管理と分離、ネットワークポリシーの設定、およびIPアドレスの管理をきめ細かく行うことができます。

  • トランクENI機能は、Terwayの共有ENIモードで実行されるノードプールのオプションです。 トランクENI機能を使用すると、静的IPアドレス、個別のvSwitch、およびポッドごとに個別のセキュリティグループを指定できます。

    クラスターを作成し、ネットワークプラグイン[Terway] に設定し、[ENIトランキングのサポート] を選択します。 詳細については、「静的IPアドレス、個別のvSwitch、および各ポッドの個別のセキュリティグループの設定」をご参照ください。

    説明
    • ACK管理クラスターのENIトランキングのサポートオプションを選択すると、アプリケーションを送信する必要はありません。 ACK専用クラスターでトランクENI機能を有効にする場合は、クォータセンターコンソールにログインしてアプリケーションを送信します。

    • デフォルトでは、Trunk ENI機能は、Kubernetes 1.31以降のバージョンを実行する新しく作成されたACK管理クラスターに対して有効になっています。

    • トランクENI機能を有効にすると、terway-eniipコンポーネントとterway-controlplaneコンポーネントがインストールされます。