Terway は Alibaba Cloud が開発したオープンソースの Container Network Interface (CNI) プラグインです。Terway は Virtual Private Cloud (VPC) と連携し、標準の Kubernetes ネットワークポリシーを使用してコンテナ間の通信を制御できます。
事前準備
Terway ネットワークプラグインを使用する前に、このトピックを読んで Terway の動作モードを理解することを推奨します。
このトピックを読む前に、コンテナネットワークプラグインで使用される用語を理解し、コンテナネットワークプラグインを選択することを推奨します。詳細については、「ネットワークの概要」および「Terway と Flannel の比較」をご参照ください。
クラスターを作成する前に、クラスターの CIDR ブロックを計画する必要があります。詳細については、「ACK マネージドクラスターのネットワーク計画」をご参照ください。
課金
Terway は無料です。ただし、Terway が使用する Pod は各ノードにデプロイされます。これらの Pod は少量のノードリソースを消費します。Container Service for Kubernetes (ACK) で使用される Alibaba Cloud サービス の課金の詳細については、「クラウドリソース料金」をご参照ください。
ノード上の Pod の最大数の計算方法
Terway モードでは、ノード上の Pod の最大数は、Elastic Compute Service (ECS) インスタンスが提供する Elastic Network Interface (ENI) の数によって決まります。Terway にはノード上の Pod の下限があります。ノードがクラスターに参加できるようにするには、ノード上の Pod の最大数が少なくとも下限値と同じである必要があります。詳細は次の表をご参照ください。
Terway モード | ノード上の Pod の最大数 | 例 | 静的 IP アドレス、個別の vSwitch、および個別のセキュリティグループをサポートするノード上の Pod の最大数 |
共有 ENI モード | (EniQuantity - 1) × EniPrivateIpAddressQuantity。ここで、EniQuantity は ECS インスタンスタイプが提供する ENI の数、EniPrivateIpAddressQuantity は ENI が提供するプライベート IP アドレスの数です。 説明 ノードをクラスターに追加できるようにするには、ノード上の Pod の上限が 11 より大きい必要があります。 | この例では、汎用インスタンスタイプ ecs.g7.4xlarge を使用します。このインスタンスタイプは 8 つの ENI を提供し、各 ENI は 30 のプライベート IP アドレスを提供します。ノード上の Pod の最大数は (8 - 1) × 30 = 210 です。 重要 ノード上で ENI を使用できる Pod の最大数は、インスタンスタイプによって決まる固定値です。 | 0 |
共有 ENI + Trunk ENI | Trunk ENI モードの各ノードのクォータ: EniTotalQuantity - EniQuantity。ここで、EniTotalQuantity は ECS インスタンスタイプがサポートするネットワークインターフェースの最大数です。 | ||
排他的 ENI |
説明 ノードをクラスターに追加できるようにするには、ノード上の Pod の上限が 6 より大きい必要があります。 | この例では、汎用インスタンスタイプ ecs.g7.4xlarge を使用します。このインスタンスタイプは 8 つの ENI をサポートします。ノードがサポートする Pod の最大数は (8 - 1) = 7 です。 | ECS インスタンスタイプごとの ENI 容量 (EniQuantity) - 1 説明 Lingjun インスタンスはサポートされていません。 |
Terway v1.11.0 以降のバージョンでは、排他的 ENI モードまたは共有 ENI モードで実行されるノードプールを作成でき、これらの 2 種類のノードプールは同じクラスター内に共存できます。詳細については、「Terway」をご参照ください。
ノードネットワークでサポートされる Pod の最大数の表示
方法 1: ACK コンソールでノードプールを作成する際、[インスタンスタイプ] セクションの [Terway モード (サポートされる Pod 数)] 列でインスタンスタイプがサポートする Pod の最大数を確認できます。
方法 2:次の手順を実行して、ECS インスタンスタイプがサポートする Pod の最大数を手動で計算します。
関連ドキュメントを読んで、インスタンスタイプが提供する ENI の数を取得します。詳細については、「インスタンスファミリーの概要」をご参照ください。
OpenAPI Explorer で情報を照会します。
InstanceTypesパラメーターにノードのインスタンスタイプを指定し、[呼び出し開始] をクリックします。EniQuantityパラメーターの戻り値は、インスタンスタイプが提供する ENI の数を示します。EniPrivateIpAddressQuantityパラメーターは、各 ENI が提供するプライベート IP アドレスの数を示します。EniTotalQuantityパラメーターは、インスタンスタイプでサポートされているネットワークインターフェースの最大数を示します。
クラスター作成時の Terway のインストール
Terway は、クラスター作成時にのみネットワークプラグインとして選択できます。クラスター作成後にプラグインを変更することはできません。
ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、[Kubernetes クラスターの作成] をクリックします。
Terway の主要なネットワークパラメーターを設定します。その他のクラスターパラメーターの詳細については、「ACK マネージドクラスターの作成」をご参照ください。
パラメーター
説明
IPv6 デュアルスタック
IPv4 と IPv6 をサポートするデュアルスタック クラスターを作成するには、[有効化] を選択します。
この機能は Kubernetes 1.22 以降でのみ利用可能です。Terway プラグインのみをサポートし、eRDMA 機能とは併用できません。
クラスターは IPv4 と IPv6 の両方のプロトコルをサポートします。ただし、ワーカーノードとコントロールプレーン間の通信は引き続き IPv4 アドレスを使用します。次のことを確認してください:
クラスター VPC が IPv6 デュアルスタックをサポートしていること。
共有 ENI モードで Terway を使用する場合、ノードのインスタンスタイプが IPv6 をサポートしていること。サポートされる IPv4 と IPv6 アドレスの数は同じである必要があります。
VPC
クラスターが使用する VPC。
ネットワークプラグイン
[Terway] を選択します。
DataPath V2
このチェックボックスを選択すると、DataPath V2 アクセラレーションモードが使用されます。DataPath V2 アクセラレーションモードを選択すると、Terway は共有 ENI モードとは異なるトラフィック転送リンクを採用し、より高速なネットワーク通信を実現します。DataPath V2 の機能の詳細については、「ネットワークアクセラレーション」をご参照ください。
説明DataPath V2 を使用する、Kubernetes バージョン 1.34 以降で作成された新しいクラスターでは、
kube-proxyは Terway ノードで実行されなくなります。このモードは
portmapを組み込みでサポートしているため、portmapプラグインを設定する必要はありません。詳細については、「カスタム CNI チェーンを設定する」をご参照ください。
DataPath V2 には、次の OS とカーネルの要件があります:
Linux カーネル:バージョン 5.10 以降。
OS:次のいずれか:
Alibaba Cloud Linux 3 (全バージョン)
ContainerOS
Ubuntu
有効にすると、Terway ポリシーを持つコンテナは、各ワーカーノードで追加の 0.5 コアと 512 MB のリソースを消費することが予想され、この消費量はクラスターの規模が大きくなるにつれて増加します。Terway のデフォルト設定では、コンテナの CPU 制限は 1 コアに設定されており、メモリに関する制限は指定されていません。
DataPath V2 モードでは、コンテナネットワークの接続追跡 (conntrack) データは eBPF マップに保存されます。Linux のネイティブ conntrack メカニズムと同様に、eBPF conntrack は最近最も使用されていない (LRU) エビクションを実装しています。マップの容量に達すると、最も古い接続が自動的にエビクションされ、新しい接続が保存されます。接続制限を超えないように、ワークロードの規模に基づいてパラメーターを設定してください。詳細については、「Terway での conntrack 設定の最適化」をご参照ください。
NetworkPolicies のサポート
このチェックボックスを選択すると、Kubernetes ネイティブの
NetworkPoliciesがサポートされます。説明Terway V1.9.2 以降では、新しいクラスターの NetworkPolicies は extended Berkeley Packet Filter (eBPF) を使用して実装されます。さらに、データプレーンで DataPath V2 が有効になります。
コンソールを使用して
NetworkPoliciesを管理する機能はパブリックプレビュー中です。この機能を使用する場合は、クォータセンターコンソールにログインして申請してください。
ENI Trunking のサポート
このチェックボックスを選択すると、Trunk ENI 機能が有効になります。各 Pod に静的 IP アドレス、個別の vSwitch、および個別のセキュリティグループを指定できます。
説明ACK マネージドクラスターでは、申請を提出することなく ENI Trunking のサポートオプションを選択できます。ACK 専用クラスターで Trunk ENI 機能を有効にしたい場合は、クォータセンターコンソールにログインして申請を提出してください。
デフォルトでは、Kubernetes 1.31 以降のバージョンを実行する新しく作成された ACK マネージドクラスターで Trunk ENI 機能が有効になっています。
vSwitch
クラスター内のノードが使用する vSwitch の CIDR ブロック。高可用性を確保するために、異なるゾーンに少なくとも 3 つの vSwitch を選択することを推奨します。
ポッド VSwitch
Pod が使用する vSwitch の CIDR ブロック。この CIDR ブロックは、ノードの vSwitch CIDR ブロックと重複してもかまいません。
Service CIDR
Service CIDR ブロックは、ノードまたは Pod の CIDR ブロックと重複してはいけません。
IPv6 Service CIDR ブロック
[IPv6 Dual-stack] を有効にすると、IPv6 サービス CIDR を設定できます。
Terway モードの概要
Terway の動作方法の詳細については、次のセクションをご参照ください。
共有 ENI モードと排他的 ENI モード
Pod に IP アドレスを割り当てる際、Terway は共有 ENI モードまたは排他的 ENI モードのいずれかで動作します。
Terway v1.11.0 以降のバージョンでは、クラスター内のノードプールに対して共有 ENI モードまたは排他的 ENI モードのいずれかを選択でき、この選択はクラスター作成時には利用できなくなりました。
ノード上のプライマリ ENI はノード OS に割り当てられます。残りの ENI は Terway が Pod ネットワークを設定するために使用します。したがって、ENI を手動で設定しないでください。ENI を手動で管理する方法の詳細については、「ENI のフィルターの設定」をご参照ください。
項目 | 共有 ENI モード | 排他的 ENI モード | |
Pod IP アドレス管理 | ENI 割り当てモード | 複数の Pod が同じ ENI を共有します。 | 各 Pod には個別の ENI が割り当てられます。 |
Pod デプロイ密度 | Pod のデプロイ密度は高いです。単一ノードに数百の Pod をデプロイできます。 | Pod のデプロイ密度は低いです。通常のノードには一桁の Pod をデプロイできます。 | |
ネットワークアーキテクチャ | |||
データリンク | Pod が他の Pod にアクセスしたり、Service バックエンドとしてアクセスされたりする場合、トラフィックはノードのネットワークプロトコルスタックを通過します。 | Pod が Service にアクセスする場合、トラフィックは依然としてノード OS のプロトコルスタックを通過します。しかし、Pod が他の Pod にアクセスしたり、Service バックエンドとしてアクセスされたりする場合、アタッチされた ENI が直接使用され、ノードのネットワークプロトコルスタックをバイパスして高いパフォーマンスを実現します。 | |
利用シーン | 一般的な Kubernetes シナリオ。 | このモードのネットワークパフォーマンスは従来の仮想マシンに匹敵し、高いネットワークスループットや低遅延を必要とするアプリケーションなど、高いネットワークパフォーマンスが要求されるシナリオに適しています。 | |
ネットワークアクセラレーション | DataPath V2 ネットワークアクセラレーションがサポートされています。詳細については、「ネットワークアクセラレーション」をご参照ください。 | ネットワークアクセラレーションはサポートされていません。Pod の排他的 ENI リソースは優れたネットワークパフォーマンスを提供します。 | |
NetworkPolicies のサポート | Kubernetes ネイティブの |
| |
ノードレベルのネットワーク設定 | サポートされています。「ノードレベルのネットワーク設定」をご参照ください。 | サポートされています。「ノードレベルのネットワーク設定」をご参照ください。 | |
アクセス制御 | Trunk ENI 機能により、各 Pod に静的 IP アドレス、個別の vSwitch、および個別のセキュリティグループを指定できます。詳細については、「Pod に静的 IP アドレス、個別の vSwitch、および個別のセキュリティグループを設定する」および「NetworkPolicy のサポート」をご参照ください。 | 各 Pod に独自のセキュリティグループと 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 以降がインストールされたクラスター。 |
ネットワークアーキテクチャ | |
高速化されたデータリンク |
|
パフォーマンスの最適化 |
|
使用方法 | ネットワークプラグインTerwayDataPath V2クラスターを作成し、 を に設定し、 を選択します。 |
使用上の注意 |
|
既存のクラスターでは、IPVLAN + eBPF アクセラレーションモードが選択されています。IPVLAN + eBPF の機能の詳細については、次の説明をご参照ください。
アクセス制御
Terway の共有 ENI モードは、NetworkPolicy 機能と ENI Trunking サポートオプションをサポートしています。これにより、クラスター内のネットワークトラフィックの管理が容易になります。Terway の排他的な ENI モードも、特定のトラフィックコントロール機能をサポートしています。
NetworkPolicy のサポート
Terway の排他的な ENI モードで実行されるノードプールは、
NetworkPolicy機能をサポートしていません。Terway の共有 ENI モードで実行されるノードプールは、Kubernetes ネイティブの
NetworkPolicy機能をサポートします。 ネットワークポリシーでは、ユーザー定義のルールを使用して Pod 間のネットワークトラフィックを制御できます。ネットワークプラグインTerwayNetworkPolicy のサポート
NetworkPolicyクラスターを作成し、 を に設定し、 を選択します。これにより、クラスターは `NetworkPolicy` 機能をサポートします。詳細については、「ACK クラスターでのネットワークポリシーの使用」をご参照ください。説明コンソールを使用して
NetworkPoliciesを管理する機能は、パブリックプレビュー中です。この機能をご利用になるには、クォータセンターコンソールにログインし、申請を提出してください。
Pod に静的 IP アドレス、個別の vSwitch、および個別のセキュリティグループを設定する
Terway の排他的 ENI モードで実行されるノードプールでは、各 Pod に静的 IP アドレス、個別の vSwitch、および個別のセキュリティグループを指定できます。これにより、ユーザートラフィックの管理と分離、ネットワークポリシーの設定、および IP アドレスのきめ細かな管理が可能になります。
Trunk ENI 機能は、Terway の共有 ENI モードで実行されるノードプールのオプションです。Trunk ENI 機能により、各 Pod に静的 IP アドレス、個別の vSwitch、および個別のセキュリティグループを指定できます。
クラスターを作成し、ネットワークプラグイン を [Terway] に設定し、[ENI トランキングのサポート] を選択します。 詳細については、「Pod 用の固定 IP アドレス、独立した vSwitch、およびセキュリティグループを設定する」をご参照ください。
説明ACK マネージドクラスターでは、申請を提出することなく ENI Trunking のサポートオプションを選択できます。ACK 専用クラスターで Trunk ENI 機能を有効にしたい場合は、クォータセンターコンソールにログインして申請を提出してください。
デフォルトでは、Kubernetes 1.31 以降のバージョンを実行する新しく作成された ACK マネージドクラスターで Trunk ENI 機能が有効になっています。
Trunk ENI 機能が有効になると、terway-eniip および terway-controlplane コンポーネントがインストールされます。
よくある質問
Terway が排他的 ENI モードか共有 ENI モードかを確認する方法
Terway v1.11.0 以降では、Terway はデフォルトで共有 ENI モードを使用します。「ノードプールの排他的 ENI ネットワークモードの設定」により、排他的 ENI モードを有効にできます。
Terway v1.11.0 より前のバージョンでは、クラスター作成時に排他的または共有 ENI モードのいずれかを選択できます。クラスター作成後、次のようにモードを識別できます:
terway-eni排他的 ENI モード:kube-system 名前空間の Terway DaemonSet の名前は `terway-eni` です。terway-eniip共有 ENI モード:kube-system 名前空間の Terway DaemonSet の名前は `terway-eniip` です。
既存の ACK クラスターで CNI プラグインを変更できますか?
ネットワークプラグイン (Terway または Flannel) は、クラスター作成時にのみ選択できます。クラスター作成後にネットワークプラグインを変更することはできません。別のネットワークプラグインを使用するには、新しいクラスターを作成する必要があります。詳細については、「ACK マネージドクラスターの作成」をご参照ください。