Terway は Alibaba Cloud が開発したオープンソースのコンテナネットワークインターフェース (CNI) プラグインです。Terway は Virtual Private Cloud (VPC) と統合され、標準的な Kubernetes ネットワークポリシーを使用してコンテナ間の通信を制御できます。
事前準備
Terway ネットワークプラグインを使用する前に、このトピックを読んで Terway の動作原理を理解してください。
このトピックを読む前に、コンテナネットワークプラグインの基本概念を理解し、適切なプラグインを選択できるように、ネットワークの概要およびTerway と Flannel の比較をご確認ください。
クラスターを作成する前に、CIDR ブロックを計画してください。詳細については、「ACK マネージドクラスターのネットワークプランニング」をご参照ください。
課金
Terway は無料でご利用いただけます。ただし、Terway Pod は各ノードにデプロイされ、少量のノードリソースを消費します。ACK で使用される Alibaba Cloud サービスの課金情報については、「クラウドリソース料金」をご参照ください。
重要な注意事項
Terway の設定ファイル eni-config には多くのシステムパラメーターが含まれています。サポートされていないフィールドを変更または削除しないでください。そうしないと、ネットワークが中断されたり、Pod の作成に失敗したりする可能性があります。変更可能な設定パラメーターの一覧については、「Terway 設定パラメーターのカスタマイズ」をご参照ください。
Terway コンポーネントは、Custom Resource Definitions (CRD) を使用してリソースステータスを追跡します。システムリソースを誤って変更すると、ネットワークが中断されたり、Pod の作成に失敗したりする可能性があります。
リソース名 | リソースタイプ | ユーザーが CRD を管理可能か | ユーザーが CR を管理可能か |
podnetworkings.network.alibabacloud.com | ユーザーリソース | いいえ | はい |
podenis.network.alibabacloud.com | システムリソース | いいえ | いいえ |
networkinterfaces.network.alibabacloud.com | システムリソース | いいえ | いいえ |
nodes.network.alibabacloud.com | システムリソース | いいえ | いいえ |
noderuntimes.network.alibabacloud.com | システムリソース | いいえ | いいえ |
*.cilium.io | システムリソース | いいえ | いいえ |
*.crd.projectcalico.org | システムリソース | いいえ | いいえ |
ノードあたりの最大 Pod 数の計算方法
Terway ネットワークプラグインを使用する場合、ノードあたりの最大 Pod 数は、Elastic Compute Service (ECS) インスタンスタイプがサポートする Elastic Network Interfaces (ENI) の数によって決まります。Terway はノードあたりの Pod 数に対して最小限の制限を設けており、この制限を満たすノードのみがクラスターに正常に参加できます。詳細については、次の表をご参照ください。
Terway モード | ノードあたりの最大 Pod 数 | 例 | 静的 IP アドレス、個別の vSwitch、個別のセキュリティグループをサポートするノードあたりの最大 Pod 数 |
共有 ENI モード | (ECS インスタンスタイプがサポートする ENI 数 - 1) × ENI がサポートするプライベート IP アドレス数 (EniQuantity - 1) × EniPrivateIpAddressQuantity 説明 ノードあたりの最大 Pod 数が 11 を超える場合にのみ、ノードをクラスターに参加させることができます。 | たとえば、汎用 ecs.g7.4xlarge インスタンスタイプは 8 個の ENI をサポートし、各 ENI は 30 個のプライベート IP アドレスをサポートします。ノードあたりの最大 Pod 数は (8 - 1) × 30 = 210 です。 重要 ノード上で ENI を使用できる最大 Pod 数は、インスタンスタイプによって決定される固定値です。 | 0 |
共有 ENI + Trunk ENI | シングルノード Trunk Pod クォータ: ECS インスタンスタイプがサポートするネットワークインターフェース総数 - ECS インスタンスタイプがサポートする ENI 数 EniTotalQuantity - EniQuantity | ||
排他的な ENI モード | ECS インスタンス: ECS インスタンスタイプがサポートする ENI 数 - 1 EniQuantity - 1 Lingjun インスタンス: LeniQuota - 1 説明 ノードあたりの最大 Pod 数が 6 を超える場合にのみ、ノードをクラスターに参加させることができます。 | たとえば、汎用 ecs.g7.4xlarge インスタンスタイプは 8 個の ENI をサポートします。ノードあたりの最大 Pod 数は (8 - 1) = 7 です。 | ECS インスタンスタイプがサポートする ENI 数 - 1 EniQuantity - 1 説明 Lingjun インスタンスはサポートされていません。 |
Terway v1.11.0 以降のバージョンでは、ノードプールを排他的な ENI モードまたは共有 ENI モードで実行するように設定できます。両方のタイプのノードプールを同じクラスター内に共存させることができます。詳細については、「Terway リリースノート」をご参照ください。
ノードがサポートする最大 Pod 数の確認方法
方法 1:ACK コンソールでノードプールを作成する際、インスタンスタイプ セクションの Terway 互換性 (サポートされる Pod 数) で、インスタンスタイプがサポートする最大 Pod 数を確認できます。
方法 2:必要なデータを取得して、手動で ECS インスタンスタイプがサポートする最大 Pod 数を計算します。
インスタンスファミリーの概要を確認して、インスタンスタイプがサポートする ENI 数を調べます。
OpenAPI Explorer を使用して情報を照会できます。
InstanceTypesパラメーターに既存ノードのインスタンスタイプを指定し、呼び出しを開始 をクリックします。応答において、EniQuantityはインスタンスタイプがサポートする最大 ENI 数を示します。EniPrivateIpAddressQuantityは各 ENI がサポートするプライベート IP アドレス数を示します。EniTotalQuantityはインスタンスタイプがサポートするネットワークインターフェース総数を示します。
クラスター作成時の Terway のインストール
Terway をネットワークプラグインとして選択できるのは、クラスター作成時のみです。クラスター作成後はプラグインを変更できません。
Container Service 管理コンソール にログインします。左側のナビゲーションウィンドウで、クラスターリスト をクリックします。
クラスターリスト ページで、Kubernetes クラスターの作成 をクリックします。
Terway の主要なネットワークパラメーターを設定します。その他のクラスターパラメーターの詳細については、「ACK マネージドクラスターの作成」をご参照ください。
設定項目
説明
IPv6 デュアルスタック
有効化 を選択すると、IPv4 と IPv6 の両方をサポートするデュアルスタッククラスターを作成できます。
VPC
クラスターで使用する VPC。
ネットワークプラグイン
Terway を選択します。
DataPath V2
このオプションを選択すると、DataPath V2 アクセラレーションが有効になります。DataPath V2 を有効化すると、Terway は標準的な共有 ENI モードとは異なるトラフィック転送パスを使用して、ネットワークパフォーマンスを向上させます。機能の詳細については、「ネットワークアクセラレーション」をご参照ください。
説明Kubernetes 1.34 以降を使用する新規クラスターで DataPath V2 を有効化した場合、kube-proxy は Terway ノード上で実行されなくなります。
このモードにはポートマップの組み込みサポートが含まれており、ポートマッププラグインを別途設定する必要はありません。「カスタム CNI チェーンの設定」をご参照ください。
DataPath V2 は以下のオペレーティングシステムイメージのみをサポートし、Linux カーネルバージョン 5.10 以上が必要です。
Alibaba Cloud Linux 3 (すべてのバージョン)
ContainerOS
Ubuntu
有効化すると、Terway ポリシーコンテナは各ワーカーノードで追加で 0.5 コアと 512 MB のリソースを消費します。このリソース消費量はクラスター規模の拡大に伴って増加します。デフォルトの Terway 構成では、ポリシーコンテナの CPU 制限は 1 コアで、メモリ制限はありません。
DataPath V2 モードでは、コンテナネットワークの接続追跡 (conntrack) データは eBPF マップに格納されます。Linux のネイティブ conntrack メカニズムと同様に、eBPF conntrack は Least Recently Used (LRU) エビクションを実装しています。マップ容量に達すると、最も古い接続が自動的に削除され、新しい接続が格納されます。ワークロード規模に基づいてパラメーターを設定し、接続制限を超えないようにしてください。詳細については、「Terway における conntrack 構成の最適化」をご参照ください。
NetworkPolicy のサポート
このオプションを選択すると、Kubernetes ネイティブの
NetworkPolicyが有効になります。説明Terway v1.9.2 以降では、新規クラスターの NetworkPolicy は拡張 Berkeley Packet Filter (eBPF) を使用して実装されています。データプレーンでは DataPath V2 も有効になります。
コンソールを使用して
NetworkPolicyを管理する機能はパブリックプレビュー中です。この機能を使用するには、クォータセンターコンソールで申請を提出する必要があります。
ENI トランキングのサポート
このオプションを選択すると、ENI トランキングが有効になります。各 Pod に静的 IP アドレス、個別の vSwitch、個別のセキュリティグループを割り当てることができます。
説明ACK マネージドクラスターでは、申請を提出せずに ENI トランキングを選択できます。ACK 専用クラスターで ENI トランキングを有効にするには、クォータセンターコンソールで申請を提出する必要があります。
Kubernetes 1.31 以降を使用する新規ACK マネージドクラスターでは、ENI トランキングがデフォルトで有効になります。
vSwitch
クラスターノードで使用する vSwitch の CIDR ブロック。クラスターの高可用性を確保するために、異なるゾーンにまたがる少なくとも 3 つの vSwitch を選択してください。
Pod vSwitch
Pod で使用する vSwitch の CIDR ブロック。このブロックはノードで使用する vSwitch CIDR ブロックと重複しても構いません。
サービス CIDR
サービスで使用する CIDR ブロック。このブロックはノードまたは Pod の CIDR ブロックと重複してはいけません。
IPv6 サービス CIDR
IPv6 デュアルスタックを有効化した後に設定します。
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 が 1 つの ENI を共有します。 | 各 Pod にノード上の専用 ENI が割り当てられます。 |
Pod 密度 | 単一ノードで数百の Pod をサポートできるため、高密度で Pod をデプロイできます。 | 低密度です。標準的なインスタンスタイプでは、1 桁の Pod 数しかサポートできません。 | |
ネットワークアーキテクチャ | |||
データリンク | Pod が別の Pod にアクセスする場合や、サービスのバックエンドとして機能する場合、トラフィックはノードのネットワークプロトコルスタックを通過します。 | Pod がサービスにアクセスする場合、トラフィックはノード OS のプロトコルスタックを通過します。しかし、Pod が別の Pod にアクセスする場合や、サービスのバックエンドとして機能する場合、アタッチされた ENI がノードのネットワークプロトコルスタックをバイパスするため、より高いパフォーマンスを実現します。 | |
ユースケース | 一般的な Kubernetes ユースケースに適しています。 | 従来の仮想マシンと同等のネットワークパフォーマンスを提供します。このモードは、高ネットワークスループットまたは低レイテンシを必要とするアプリケーションに適しています。 | |
ネットワークアクセラレーション | DataPath V2 ネットワークアクセラレーションをサポートしています。詳細については、「ネットワークアクセラレーション」をご参照ください。 | ネットワークアクセラレーションはサポートされていません。ただし、排他的な ENI リソースにより優れたネットワークパフォーマンスを提供します。 | |
NetworkPolicy のサポート | Kubernetes ネイティブの |
| |
ノードレベルのネットワーク構成 | サポートされています。「ノードレベルのネットワーク構成」をご参照ください。 | サポートされています。「ノードレベルのネットワーク構成」をご参照ください。 | |
アクセスの制御 | ENI トランキングを有効化すると、Pod に静的 IP アドレス、個別のセキュリティグループ、個別の vSwitch を割り当てることができます。詳細については、「Pod への静的 IP アドレス、個別の vSwitch、個別のセキュリティグループの設定」をご参照ください。 | Pod に静的 IP アドレス、個別のセキュリティグループ、個別の vSwitch を割り当てることができます。 | |
ネットワークアクセラレーション
Terway 共有 ENI モードを使用する場合、ネットワークアクセラレーションを有効化できます。ネットワークアクセラレーションを有効化すると、Terway は標準的な共有 ENI モードとは異なるトラフィック転送パスを使用して、より高いパフォーマンスを実現します。現在、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 以降で作成されたクラスター。 |
ネットワークアーキテクチャ | |
アクセラレーションされたデータリンク |
|
パフォーマンスの最適化 |
|
使用方法 | クラスター作成時に、ネットワークプラグイン を Terway に設定し、DataPath V2 を選択します。 |
使用上の注意 |
|
旧バージョンのクラスターでは、IPVLAN + eBPF アクセラレーションモードを選択していた可能性があります。詳細については、以下の説明をご参照ください。
アクセスの制御
Terway 共有 ENI モードは、NetworkPolicy および ENI トランキングを使用して、クラスター内のネットワークトラフィックを詳細に管理できます。Terway 排他的な ENI モードも一部のトラフィック制御機能をサポートしています。
NetworkPolicy のサポート
Terway 排他的な ENI モードで実行されるノードプールは、
NetworkPolicyをサポートしていません。Terway 共有 ENI モードで実行されるノードプールは、Kubernetes ネイティブの
NetworkPolicyをサポートしています。Pod 間のネットワークトラフィックを制御するルールを定義できます。クラスター作成時に、ネットワークプラグイン を Terway に設定し、NetworkPolicy のサポート を選択して
NetworkPolicyを有効化します。詳細については、「ACK クラスターでのネットワークポリシーの使用」をご参照ください。説明コンソールを使用して
NetworkPolicyを管理する機能はパブリックプレビュー中です。この機能を使用するには、クォータセンターコンソールで申請を提出する必要があります。
Pod への静的 IP アドレス、個別の vSwitch、個別のセキュリティグループの設定
Terway 排他的な ENI モードで実行されるノードプールは、各 Pod に静的 IP アドレス、個別の vSwitch、個別のセキュリティグループを割り当てることをサポートしています。これにより、詳細なトラフィック管理、トラフィック隔離、ネットワークポリシー構成、IP アドレス管理が可能になります。
ENI トランキングは、Terway 共有 ENI モードで実行されるノードプールのオプションです。ENI トランキングを有効化すると、各 Pod に静的 IP アドレス、個別の vSwitch、個別のセキュリティグループを割り当てることができます。
クラスター作成時に、ネットワークプラグイン を Terway に設定し、ENI トランキングのサポート を選択します。詳細については、「Pod への固定 IP アドレス、個別の vSwitch、個別のセキュリティグループの設定」をご参照ください。
説明ACK マネージドクラスターでは、申請を提出せずに ENI トランキングを選択できます。ACK 専用クラスターで ENI トランキングを有効にするには、クォータセンターコンソールで申請を提出する必要があります。
Kubernetes 1.31 以降を使用する新規ACK マネージドクラスターでは、ENI トランキングがデフォルトで有効になります。
ENI トランキングを有効化すると、terway-eniip および terway-controlplane コンポーネントがインストールされます。
スケール制限
Terway はクラウドプロダクトの OpenAPI を呼び出してノードのネットワークインターフェースおよび IP アドレスを管理します。OpenAPI の使用制限については、対応するクラウドプロダクトのドキュメントをご確認ください。
共有 ENI モード: 並列で割り当て可能な最大ノード数は 500 です。
排他的な ENI / Trunk ENI モード: 並列で割り当て可能な最大 Pod 数は 100 です。
これらのクォータは調整できません。
データプレーンの構成要件
Terway のネットワーク機能は、カーネルレベルの構成の正確な順序と整合性に大きく依存しています。優先度の変更、ルールのオーバーライド、プログラムのアンロードなど、外部コンポーネントによる IP Rule、IP Route、または eBPF フックの調整されていない変更は、Pod ネットワークの停止、ポリシーの失敗、トラフィックのハイジャックなどの重大な障害を引き起こす可能性があります。すべてのサードパーティ製コンポーネントの統合について、競合が発生しないよう厳密に検証する必要があります。
TC フィルタールール
インターフェース | 方向 | プログラム | 優先度 | 機能 |
ethx | toContainer | VLAN Untag | 20000 | VLAN タグの削除 |
ethx | toContainer | cil_from_netdev | 25000 | Cilium サービス / ネットワークポリシー |
veth | toContainer | cil_to_container | 25000 | Cilium サービス / ネットワークポリシー |
veth | fromContainer | cil_from_container | 25000 | Cilium サービス / ネットワークポリシー |
ethx | fromContainer | cil_to_netdev | 25000 | Cilium サービス / ネットワークポリシー |
ethx | fromContainer | VLAN Tag | 50001 | VLAN タグの追加 |
IP Rule ルール
方向 | 優先度 | ルーティングテーブル |
toContainer | 512 | 1000 + linkIndex (eni index) |
fromContainer | 512 | 1000 + linkIndex (eni index) |
よくある質問
Terway が排他的な ENI モードか共有 ENI モードかを判断する方法はありますか?
既存の ACK クラスターの CNI プラグインを変更できますか?
ネットワークプラグインはクラスター作成時に選択される基本コンポーネントです。プラグインを切り替えるには、目的の CNI プラグインを使用して新しいクラスターを作成し、ワークロードを移行する必要があります。