8.4. Linux ブリッジネットワークへの仮想マシンの割り当て
デフォルトでは、OpenShift Virtualization は単一の内部 Pod ネットワークとともにインストールされます。
次の手順を実行すると、Linux ブリッジネットワークを作成し、そのネットワークに仮想マシンを接続できます。
- Linux ブリッジノードネットワーク設定ポリシー (NNCP) を作成します。
- Web コンソール または コマンドライン を使用して、Linux ブリッジネットワークアタッチメント定義 (NAD) を作成します。
- Web コンソール または コマンドライン を使用して、NAD を認識するように仮想マシンを設定します。
8.4.1. Linux ブリッジ NNCP の作成
Linux ブリッジネットワークの NodeNetworkConfigurationPolicy
(NNCP) マニフェストを作成できます。
前提条件
- Kubernetes NMState Operator がインストールされている。
手順
NodeNetworkConfigurationPolicy
マニフェストを作成します。この例には、独自の情報で置き換える必要のあるサンプルの値が含まれます。apiVersion: nmstate.io/v1 kind: NodeNetworkConfigurationPolicy metadata: name: br1-eth1-policy 1 spec: desiredState: interfaces: - name: br1 2 description: Linux bridge with eth1 as a port 3 type: linux-bridge 4 state: up 5 ipv4: enabled: false 6 bridge: options: stp: enabled: false 7 port: - name: eth1 8
8.4.2. Linux ブリッジ NAD の作成
OpenShift Container Platform Web コンソールまたはコマンドラインを使用して、Linux ブリッジネットワーク接続定義 (NAD) を作成できます。
8.4.2.1. Web コンソールを使用した Linux ブリッジ NAD の作成
OpenShift Container Platform Web コンソールを使用して、ネットワーク接続定義 (NAD) を作成して、Pod および仮想マシンに layer-2 ネットワークを提供できます。
Linux ブリッジネットワーク接続定義は、仮想マシンを VLAN に接続するための最も効率的な方法です。
仮想マシンのネットワークアタッチメント定義での IP アドレス管理 (IPAM) の設定はサポートされていません。
手順
-
Web コンソールで、Networking
NetworkAttachmentDefinitions をクリックします。 Create Network Attachment Definition をクリックします。
注記ネットワーク接続定義は Pod または仮想マシンと同じ namespace にある必要があります。
- 一意の Name およびオプションの Description を入力します。
- Network Type リストから CNV Linux bridge を選択します。
- Bridge Name フィールドにブリッジの名前を入力します。
- オプション: リソースに VLAN ID が設定されている場合、VLAN Tag Number フィールドに ID 番号を入力します。
- オプション: MAC Spoof Check を選択して、MAC スプーフフィルタリングを有効にします。この機能により、Pod を終了するための MAC アドレスを 1 つだけ許可することで、MAC スプーフィング攻撃に対してセキュリティーを確保します。
- Create をクリックします。
8.4.2.2. コマンドラインを使用した Linux ブリッジ NAD の作成
コマンドラインを使用してネットワークアタッチメント定義 (NAD) を作成し、Pod および仮想マシンに layer-2 ネットワークを提供できます。
NAD と仮想マシンは同じ namespace に存在する必要があります。
仮想マシンのネットワークアタッチメント定義での IP アドレス管理 (IPAM) の設定はサポートされていません。
前提条件
-
MAC スプーフィングチェックを有効にするには、ノードが nftables をサポートして、
nft
バイナリーがデプロイされている必要があります。
手順
次の例のように、仮想マシンを
NetworkAttachmentDefinition
設定に追加します。apiVersion: "k8s.cni.cncf.io/v1" kind: NetworkAttachmentDefinition metadata: name: bridge-network 1 annotations: k8s.v1.cni.cncf.io/resourceName: bridge.network.kubevirt.io/bridge-interface 2 spec: config: | { "cniVersion": "0.3.1", "name": "bridge-network", 3 "type": "bridge", 4 "bridge": "bridge-interface", 5 "macspoofchk": false, 6 "vlan": 100, 7 "preserveDefaultVlan": false 8 }
- 1
NetworkAttachmentDefinition
オブジェクトの名前。- 2
- オプション: ノード選択のアノテーションのキーと値のペア。
bridge-interface
は一部のノードに設定されるブリッジの名前に一致する必要があります。このアノテーションをネットワーク接続定義に追加する場合、仮想マシンインスタンスはbridge-interface
ブリッジが接続されているノードでのみ実行されます。 - 3
- 設定の名前。設定名をネットワーク接続定義の
name
値に一致させることが推奨されます。 - 4
- このネットワーク接続定義のネットワークを提供する Container Network Interface (CNI) プラグインの実際の名前。異なる CNI を使用するのでない限り、このフィールドは変更しないでください。
- 5
- ノードに設定される Linux ブリッジの名前。
- 6
- オプション: MAC スプーフィングチェックを有効にするフラグ。
true
に設定すると、Pod またはゲストインターフェイスの MAC アドレスを変更できません。この属性により、Pod から出ることができる MAC アドレスは 1 つだけになり、MAC スプーフィング攻撃に対するセキュリティーが確保されます。 - 7
- オプション: VLAN タグ。ノードのネットワーク設定ポリシーでは、追加の VLAN 設定は必要ありません。
- 8
- オプション: 仮想マシンがデフォルト VLAN 経由でブリッジに接続するかどうかを示します。デフォルト値は
true
です。
注記Linux ブリッジネットワーク接続定義は、仮想マシンを VLAN に接続するための最も効率的な方法です。
ネットワーク接続定義を作成します。
$ oc create -f network-attachment-definition.yaml 1
- 1
- ここで、
network-attachment-definition.yaml
はネットワーク接続定義マニフェストのファイル名です。
検証
次のコマンドを実行して、ネットワーク接続定義が作成されたことを確認します。
$ oc get network-attachment-definition bridge-network
8.4.3. 仮想マシンネットワークインターフェイスの設定
OpenShift Container Platform Web コンソールまたはコマンドラインを使用して、仮想マシンネットワークインターフェイスを設定できます。
8.4.3.1. Web コンソールを使用した仮想マシンネットワークインターフェイスの設定
OpenShift Container Platform Web コンソールを使用して、仮想マシンのネットワークインターフェイスを設定できます。
前提条件
- ネットワークのネットワーク接続定義を作成しました。
手順
-
Virtualization
VirtualMachines に移動します。 - 仮想マシンをクリックして、VirtualMachine details ページを表示します。
- Configuration タブで、Network interfaces タブをクリックします。
- Add network interface をクリックします。
- インターフェイス名を入力し、Network リストからネットワーク接続定義を選択します。
- Save をクリックします。
- 仮想マシンを再起動して変更を適用します。
ネットワークフィールド
Name | 説明 |
---|---|
Name | ネットワークインターフェイスコントローラーの名前。 |
モデル | ネットワークインターフェイスコントローラーのモデルを示します。サポートされる値は e1000e および virtio です。 |
Network | 利用可能なネットワーク接続定義のリスト。 |
型 | 利用可能なバインディングメソッドの一覧。ネットワークインターフェイスに適したバインド方法を選択します。
|
MAC Address | ネットワークインターフェイスコントローラーの MAC アドレス。MAC アドレスが指定されていない場合、これは自動的に割り当てられます。 |
8.4.3.2. コマンドラインを使用した仮想マシンネットワークインターフェイスの設定
コマンドラインを使用して、ブリッジネットワークの仮想マシンネットワークインターフェイスを設定できます。
前提条件
- 設定を編集する前に仮想マシンをシャットダウンします。実行中の仮想マシンを編集する場合は、変更を有効にするために仮想マシンを再起動する必要があります。
手順
次の例のように、ブリッジインターフェイスとネットワークアタッチメント定義を仮想マシン設定に追加します。
apiVersion: kubevirt.io/v1 kind: VirtualMachine metadata: name: example-vm spec: template: spec: domain: devices: interfaces: - masquerade: {} name: default - bridge: {} name: bridge-net 1 # ... networks: - name: default pod: {} - name: bridge-net 2 multus: networkName: a-bridge-network 3
設定を適用します。
$ oc apply -f example-vm.yaml
- オプション: 実行中の仮想マシンを編集している場合は、変更を有効にするためにこれを再起動する必要があります。