Skip to content

필사 모드: KubeVirtネットワーク2:bridge、masquerade、passt、SR-IOVバインディング比較

日本語
0%
정확도 0%
💡 왼쪽 원문을 읽으면서 오른쪽에 따라 써보세요. Tab 키로 힌트를 받을 수 있습니다.
원문 렌더가 준비되기 전까지 텍스트 가이드로 표시합니다.

はじめに

KubeVirtネットワークを理解する際に最も重要な選択肢はバインディングだ。同じVMIでもどのバインディングを使うかによって、ゲストがネットワークを見る方式、サービス公開方式、パフォーマンス、ライブマイグレーション適合性が変わる。

`staging/src/kubevirt.io/api/core/v1/schema.go`を見ると主要なインターフェースバインディング種類が現れる。

- `Bridge`

- `Masquerade`

- `SRIOV`

- `PasstBinding`

- `Binding` plugin

つまりKubeVirtは一つの正解ネットワークモデルだけを強要しない。代わりに複数のワイヤリング方式を提供する。

バインディングは正確に何を意味するのか

公式デベロッパーガイドの`docs/network/network-binding-plugin.md`がよくまとめているように、バインディングは「ドメインVM NICをPod内でどのようにゲストに接続するか」を定義する層だ。

ここには以下が含まれる。

- ドメインvNIC構成

- Pod内部ネットワーク構成

- 必要ならDHCPなどのゲスト配信サービス

つまりバインディングは単純なAPIオプションではなく**ゲストNICワイヤリング戦略**だ。

1. masqueradeバインディング

最も無難でKubernetes親和的なデフォルト選択肢だ。

どう動作するか

- PodはCNIでprimary IPを受け取る

- ゲストは内部CIDRの別IPを受け取る

- KubeVirtがDHCPとNATを構成する

- 外部通信はPod IPを通じて出る

利点

- Podネットワークとの衝突が少ない

- サービス公開とポートフォワーディングモデルが馴染みやすい

- migrationと一般運用で扱いやすい

欠点

- ゲストがネットワークに直接公開される構造ではない

- NATオーバーヘッドとポート設計の考慮が必要

運用の便宜性と汎用性のため最初に思い浮かぶ選択肢だ。

2. bridgeバインディング

bridgeバインディングはゲストをネットワークにより直接接続しようとするモデルだ。

どう動作するか

- PodインターフェースとbridgeとTAPを繋いでゲストを直接接続する

- ゲストがPodネットワークのより直接的なエンドポイントのように動作する

- DHCPとbridgeワイヤリングが重要

利点

- ゲストがより直接的なネットワーク接続性を持てる

- NATを回避できるシナリオがある

欠点

- Pod側ネットワーク構造がより敏感に再配線される

- 運用者がPod IPとゲストの到達性をより気にする必要がある

bridgeは「コンテナのように安全なデフォルト」より「ゲストをより直接公開する」側に近い。

3. passtバインディング

`schema.go`は`PasstBinding`を別のcoreバインディングとして置く。`passt`はユーザーモードネットワーキングベースのアプローチとして理解するとよい。

利点

- 比較的簡潔な接続モデルを提供する

- 一部環境ではbridgeより構成負担が少ないことがある

欠点

- パフォーマンスと機能面で直接カーネルdatapathを使うモデルとのトレードオフがある

- feature gate、サポート範囲、運用互換性を確認する必要がある

`pkg/network/passt`とバインディングプラグインドキュメントを一緒に読むと、passtは「高性能L2直結」より**ユーザーモード親和的ネットワーキング**に近いことが分かる。

4. SR-IOVバインディング

SR-IOVは最もパフォーマンス指向の選択肢だ。代わりにKubernetesとホスト、NIC、IOMMU、VFIO構成がすべて揃わなければならない。

`docs/network/sriov.md`を見ると関連コンポーネントがかなり多い。

- SR-IOVデバイスプラグイン

- SR-IOV CNIプラグイン

- Multus

- 必要ならSR-IOV operator

- KubeVirtのlibvirtドメイン構成ロジック

どう動作するか

- デバイスプラグインがVFリソースをKubernetesリソースとして広告

- MultusとCNIがPod namespace側の準備を実行

- KubeVirtは割り当てられたPCI情報を基にドメインをVFIOパススルー形態で構成

利点

- 高パフォーマンス

- 直接デバイスパススルーに近いネットワーク経路

欠点

- ハードウェアとカーネル要件が高い

- migrationとhotplug制約が大きくなる

- 運用複雑度が高い

つまりSR-IOVは汎用デフォルトではなく、**パフォーマンスのために単純性と柔軟性を一部諦める選択肢**だ。

プラグインバインディングはなぜ必要か

KubeVirtは内蔵バインディングだけですべてのネットワークを賄おうとしない。`network-binding-plugin.md`は次の2方向を説明する。

- ゼロコードプラグイン

- サイドカーまたはCNIを含むプラグイン

核心はプラグインがドメインアタッチメントタイプ、サイドカー、カスタムCNIを組み合わせて新しいバインディングを拡張可能にすることだ。

この設計はKubeVirtがネットワークの実験と拡張をcoreコードにすべて入れようとしない意図を示す。

バインディング別にIPモデルはどう異なるか

これは運用者がよく混乱するポイントだ。

masquerade

- Pod IPとゲストIPが異なりうる

- ゲストIPはKubeVirt DHCPと内部CIDRベース

bridge

- ゲストがネットワークにより直接接続する

- Podネットワークを再配線する効果が大きい

passt

- ユーザーモードフォワーディングモデルに近い

SR-IOV

- VFパススルー性格が強い

- ゲストがより直接的なデバイスアクセスを持つ

つまり「IPを誰が与えるか」の答えもバインディング別に変わる。

migrationとの関係

バインディングは単純な接続性選択ではなくmigration戦略にも大きな影響を与える。

- masqueradeが最もmigration親和的だ

- bridgeは実装と環境によってより慎重にしなければならない

- SR-IOVはデバイスパススルー特性のため制約が大きい

- プラグインバインディングは文書化されたmigrationメソッドサポート有無を必ず確認しなければならない

`network-binding-plugin.md`もバインディングプラグインがmigrationをサポートするには別途のmigrationメソッド宣言が必要だと説明する。

よくある誤解

誤解1:bridgeは常にmasqueradeより優れている

違う。より直接的な接続性が利点になりうるが、運用の単純性とmigration親和性はmasqueradeの方が良い場合がある。

誤解2:SR-IOVは単に速いNICオプションに過ぎない

違う。デバイス広告、CNI、VFIO、IOMMU、libvirtドメイン構成まですべて絡んだ複合選択肢だ。

誤解3:プラグインバインディングはcoreバインディングの装飾だ

違う。KubeVirtがネットワーク拡張をモジュール式に扱うための重要な設計だ。

実務的な選択基準をまとめると

- 最も安全なデフォルトが必要なら`masquerade`

- ゲストの直接接続性が重要なら`bridge`

- 特定のユーザーモードネットワーキング特性が必要なら`passt`

- 最大パフォーマンスと直接デバイスアクセスが必要なら`SR-IOV`

結局バインディングはパフォーマンス問題であると同時に運用性とmigration可能性の問題だ。

まとめ

KubeVirtのネットワークバインディングはゲストNICをPod内でどのようにワイヤリングするかを決定する核心軸だ。`masquerade`は汎用性と運用便宜、`bridge`はより直接的な接続性、`passt`はユーザーモード性格、`SR-IOV`は高性能デバイスパススルーという明確な性格を持つ。したがってバインディング選択は単純なAPIオプションではなくネットワークモデルと運用戦略全体を決定するアーキテクチャ選択だ。

次の記事ではprimaryネットワークを超えて、MultusとsecondaryネットワークがKubeVirtにどのように接続されるか見ていく。

현재 단락 (1/86)

KubeVirtネットワークを理解する際に最も重要な選択肢はバインディングだ。同じVMIでもどのバインディングを使うかによって、ゲストがネットワークを見る方式、サービス公開方式、パフォーマンス、ライブ...

작성 글자: 0원문 글자: 3,509작성 단락: 0/86