仮想ネットワーク
Cockpit は、仮想化されたワークロードのためのネットワーク接続を構成および管理するツールを提供します。主に、ホストレベルの「標準ネットワーク」とクラスターレベルの「分散ネットワーク」の2つのネットワークモデルをサポートしています。
1. ホスト仮想ネットワーク(標準ネットワーク)
ホスト仮想ネットワークは、個々のハイパーバイザーホストのスコープで定義されます。ホストレベルの仮想ブリッジ(仮想スイッチ)を構成し、VM が外部ネットワークや他のローカルワークロードと通信する方法を制御します。
構成パラメータ
- 名前: 仮想ネットワークを識別するための名前。
- タイプ/ドライバー: 標準の libvirt ネットワーク。
- モード:
- NAT (Network Address Translation): VM がホストの物理 IP アドレスを共有します。外部から内部への受信トラフィックはデフォルトでブロックされますが、内部から外部への送信トラフィックはホストを経由してルーティングされます。
- ルーティング (Routed): アドレス変換を伴わず、送信トラフィックを物理ネットワークへ直接ルーティングします。上位(アップストリーム)ネットワーク側でのルーティング設定が必要です。
- ホスト専用 (Isolated / Host-Only): VM は、同一の仮想スイッチに接続されている他の VM およびハイパーバイザーホストとの間でのみ通信可能です。外部ネットワークへのアクセスは許可されません。
- IP アドレス & ネットマスク: 仮想スイッチのプライベートサブネットゲートウェイを定義します(例:
192.168.222.1、ネットマスク255.255.255.0)。 - DHCP 構成: ゲスト VM に動的に割り当てる IP アドレスのプールを定義します(例: 開始 IP
192.168.222.10から終了 IP192.168.222.50まで)。 - 自動起動: ハイパーバイザーホストの起動時に、仮想ネットワークを自動的に有効化するかどうかを設定します。
操作アクション
- 起動: 仮想ネットワークブリッジを有効化し、パケット転送を開始します。
- 停止: 仮想スイッチをシャットダウンし、接続されているすべての VM のネットワークインターフェースを切断します。
- 編集: 自動起動ステータスや構成パラメータを変更します。
- 削除: ホストからネットワーク構成を完全に削除します(事前に停止させておく必要があります)。
ランタイム監視
- DHCP リース: ホストに対してアクティブな IP 割り当て状況を照会し、MAC アドレス、ホスト名、IP アドレス、およびリースの有効期限を表示します。
- アクティブポート: 稼働中の VM にマッピングされている、アクティブな仮想インターフェースの接続ポートリストを表示します。
2. 分散ネットワーク
分散ネットワークは、クラスター全体のスコープで定義されます。クラスター内のすべてのハイパーバイザーホストでネットワーク構成の一貫性を保証し、仮想マシンがネットワーク切断を発生させることなくコンピュートライブマイグレーションを実行できるようにします。
主な特徴
- Open vSwitch (OVS) の統合: OVS バックエンド(標準の Linux ブリッジをフォールバックとして使用)を利用し、ハイパーバイザー間で高性能なソフトウェア定義スイッチを管理します。
- ホストインターフェースのマッピング: 論理的な分散ネットワークを、各ハイパーバイザー上の具体的な物理ネットワークインターフェース(物理 NIC または物理ブリッジ)に変換してバインドします。
- 同期ライフサイクル: 分散ネットワークが作成または更新されると、Cockpit はクラスター内のすべてのメンバーホストにネットワーク構成を配信します。その後、各ホストでの同期ステータスを監視します:
synced: ホストが仮想スイッチの作成とバインドに成功した状態。active: 分散ネットワークがすべてのホストに正常に展開され、稼働している状態。partial: 一部のホストには正常に適用されたものの、一部のホストで失敗しているため、管理者の介入が必要な状態。error: クラスター全体への展開適用に失敗した状態。
3. ネットワーク削除ガード(Network Deletion Guard)
不慮のパケットロスや VM のネットワーク切断・孤立を防止するため、Cockpit は分散ネットワークに対して削除保護ポリシーを実装しています。
- 使用状況の検査: 分散ネットワークの削除命令を実行する前に、Cockpit はクラスター構成を照会し、そのネットワークを使用するように構成されている VM が存在しないか検証します。
- API ガード (HTTP 409): 対象の分散ネットワークにマッピングされている VM が1台でも存在する場合、DELETE リクエスト(DELETE
/api/v1/distributed-networks/:id)はブロックされます。API はHTTP 409 Conflictステータスコードと以下のエラー詳細を返します:json{ "code": "NETWORK_IN_USE", "error": "Cannot delete distributed network: in use by virtual machines [vm-name]" } - 解決策: 分散ネットワークを削除するには、管理者はまず該当のネットワークを使用しているすべての VM の設定を編集し(NIC を切断するか、別のスイッチにマッピングし直す)、あるいは VM 自体を完全に削除する必要があります。