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

Container Service for Kubernetes:Terwayを使用する

最終更新日:Dec 17, 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

トランク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. On theクラスターページをクリックします。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の機能の詳細については、「ネットワークアクセラレーション」をご参照ください。

    説明

    この機能を有効にすると、Terwayポリシーを使用したコンテナーでは、各ワーカーノードで追加の0.5コアと512 MBのリソースが消費されることが予想されます。 Terwayのデフォルト設定では、コンテナーのCPU制限は1コアに設定されており、メモリに制限は指定されていません。

    NetworkPolicyのサポート

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

    説明
    • Terway V1.9.2以降では、拡張バークレーパケットフィルタ (eBPF) を使用して、新しいクラスタのネットワークポリシーが実装されています。 さらに、データパスV2は、データプレーンで有効にされる。

    • コンソールを使用して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および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コンポーネントがインストールされます。