2.12. 仮想マシンの複数ネットワークへの割り当て
Container-native Virtualization は、仮想マシンの複数ネットワークへの接続を可能にするレイヤー 2 ネットワーク機能を提供します。複数インターフェースへのアクセスによって異なる既存のワークロードを持つ仮想マシンをインポートできます。また、仮想マシンをネットワーク経由で起動できるように PXE ネットワークを設定することもできます。
最初に、ネットワーク管理者はタイプ cnv-bridge
の NetworkAttachmentDefinition を設定します。次に、ユーザーは Pod、仮想マシンインスタンス、および仮想マシンをブリッジネットワークに割り当てることができます。Container-native Virtualization Web コンソールから、ブリッジネットワークを参照する vNIC を作成できます。
2.12.1. Container-native Virtualization ネットワークの用語集
Container-native Virtualization は、カスタムリソースおよびプラグインを使用して高度なネットワーク機能を提供します。
以下の用語は、Container-native Virtualization ドキュメント全体で使用されています。
- Container Network Interface (CNI)
- コンテナーのネットワーク接続に重点を置く Cloud Native Computing Foundation プロジェクト。Container-native Virtualization は CNI プラグインを使用して基本的な Kubernetes ネットワーク機能を強化します。
- Multus
- 複数の CNI の存在を可能にし、Pod または仮想マシンが必要なインターフェースを使用できるようにする「メタ」 CNI プラグイン。
- カスタムリソース定義 (CRD、Customer Resource Definition)
- カスタムリソースの定義を可能にする Kubernetes API リソース、または CRD API リソースを使用して定義されるオブジェクト。
- NetworkAttachmentDefinition
- Pod、仮想マシン、および仮想マシンインスタンスを 1 つ以上のネットワークに割り当てることを可能にする Multus プロジェクトによって導入される CRD。
- PXE (Preboot eXecution Environment)
- 管理者がネットワーク経由でサーバーからクライアントマシンを起動できるようにするインターフェース。ネットワークのブートにより、オペレーティングシステムおよび他のソフトウェアをクライアントにリモートでロードできます。
2.12.2. リソースのブリッジベースのネットワークへの接続
ネットワーク管理者は、タイプ cnv-bridge
の NetworkAttachmentDefinition をレイヤー 2 ネットワークを Pod および仮想マシンに提供するように設定できます。
前提条件
- Container-native Virtualization 2.0 以降
- Linux ブリッジはすべてのノードで設定され、適切な Network Interface Card に割り当てられる必要があります。
-
VLAN を使用する場合、
vlan_filtering
はブリッジで有効にされる必要があります。 NIC はすべての関連する VLAN に対してタグ付けされる必要があります。
-
例:
bridge vlan add dev bond0 vid 1-4095 master
-
例:
手順
任意のローカルディレクトリーで NetworkAttachmentDefinition の新規ファイルを作成します。このファイルには、お使いの設定に合わせて変更された以下の内容が含まれる必要があります。
apiVersion: "k8s.cni.cncf.io/v1" kind: NetworkAttachmentDefinition metadata: name: a-bridge-network annotations: k8s.v1.cni.cncf.io/resourceName: bridge.network.kubevirt.io/br0 1 spec: config: '{ "cniVersion": "0.3.0", "name": "a-bridge-network", 2 "type": "cnv-bridge", 3 "bridge": "br0", 4 "isGateway": true, "ipam": {} }'
- 1
- このアノテーションを NetworkAttachmentDefinition に追加する場合、仮想マシンインスタンスは
br0
ブリッジが接続されているノードでのみ実行されます。 - 2
name
値は、次の手順で使用するアノテーションの一部を構成します。- 3
- この NetworkAttachmentDefinition のネットワークを提供する Container Network Interface (CNI) プラグインの実際の名前。異なる CNI を使用するのでない限り、このフィールドは変更しないでください。
- 4
- ブリッジの名前が
br0
でない場合、ブリッジの実際の名前に置き換える必要があります。
$ oc create -f <resource_spec.yaml>
ブリッジネットワークに接続する必要のある仮想マシンまたは仮想マシンインスタンスの設定を編集します。
apiVersion: v1 kind: VirtualMachine metadata: name: example-vm annotations: k8s.v1.cni.cncf.io/networks: a-bridge-network 1 spec: ...
- 1
- NetworkAttachmentDefinition の実際の
name
値に置き換える必要があります。
この例では、NetworkAttachmentDefinition および Pod が同じ namespace に置かれています。
異なる namespace を指定するには、以下の構文を使用します。
... annotations: k8s.v1.cni.cncf.io/networks: <namespace>/a-bridge-network ...
設定ファイルをリソースに適用します。
$ oc create -f <local/path/to/network-attachment-definition.yaml>
次のセクションで vNIC を定義する際に、NETWORK の値が直前のセクションで作成した NetworkAttachmentDefinition のブリッジネットワーク名であることを確認します。
2.12.3. 仮想マシンの NIC の作成
Web コンソールから追加の NIC を作成し、これを仮想マシンに割り当てます。
手順
-
Container-native Virtualization コンソールの適切なプロジェクトで、Workloads
Virtual Machines をクリックします。 - 仮想マシンテンプレートを選択します。
- Network Interfaces をクリックし、仮想マシンにすでに割り当てられている NIC を表示します。
- Create NIC をクリックして、新規スロットを一覧に作成します。
- 新規 NIC の NAME、NETWORK、MAC ADDRESS、および BINDING METHOD に入力します。
- ✓ ボタンをクリックして NIC を保存し、これを仮想マシンに割り当てます。
2.12.4. ネットワークフィールド
名前 | 説明 |
---|---|
Create NIC | 仮想マシンの新規 NIC を作成します。 |
NIC NAME | NIC の名前。 |
MAC ADDRESS | ネットワークインターフェースの MAC アドレス。MAC アドレスが指定されていない場合、セッションの一時アドレスが生成されます。 |
NETWORK CONFIGURATION | 利用可能な NetworkAttachmentDefinition オブジェクトの一覧。 |
BINDING METHOD |
利用可能なバインディングメソッドの一覧。デフォルトの Pod ネットワークについては、 |
PXE NIC |
PXE 対応ネットワークの一覧。 |
仮想マシンにオプションの QEMU ゲストエージェントをインストールし、ホストが追加のネットワークについての関連情報を表示できるようにします。