1.5.2. MAC アドレスを指定した PXE ブート
PXE ブートまたはネットワークブートは Container-native Virtualization でサポートされています。ネットワークブートにより、ローカルに割り当てられたストレージデバイスなしにコンピューターを起動し、オペレーティングシステムまたは他のプログラムを起動し、ロードすることができます。たとえば、これにより、新規ホストのデプロイ時に PXE サーバーから必要な OS イメージを選択できます。
「リファレンス」セクションには、PXE ブートの設定ファイルテンプレートがあります。
前提条件
- OpenShift Container Platform 3.11 以降を実行するクラスター
- PXE ブートを許可する設定済みのインターフェース
手順
クラスターに PXE ネットワークを設定します。
PXE ネットワーク
pxe-net-conf
の NetworkAttachmentDefinition を作成します。apiVersion: "k8s.cni.cncf.io/v1" kind: NetworkAttachmentDefinition metadata: name: pxe-net-conf spec: config: '{ "cniVersion": "0.3.1", "type": "ovs", "bridge": "br1" }'
注記この例では、VMI はトランクポート経由で Open vSwitch ブリッジ
<br1>
に割り当てられます。Open vSwitch ブリッジ
<br1>
を作成し、これをインターフェース<eth1>
に接続します。 これは、PXE ブートを許可するネットワークに接続されます。$ ovs-vsctl add-br br1 $ ovs-vsctl add-port br1 eth1 $ ovs-vsctl show 8d004495-ea9a-44e1-b00c-3b65648dae5f Bridge br1 Port br1 Interface br1 type: internal Port "eth1" Interface "eth1" ovs_version: "2.8.1"
注記このブリッジはすべてのノードで設定される必要があります。これがノードのサブセットでのみ利用可能な場合は、VMI の nodeSelector 制約が有効であることを確認してください。
仮想マシンインスタンス設定ファイルを、インターフェースおよびネットワークの詳細を含めるように編集します。
PXE サーバーで必要な場合には、ネットワークおよび MAC アドレスを指定します。MAC アドレスが指定されていない場合、値は自動的に割り当てられます。ただし、この時点で自動的に割り当てられる MAC アドレスは永続しないことに注意してください。
bootOrder
が1
に設定されており、インターフェースが最初に起動することを確認します。この例では、インターフェースは<pxe-net>
というネットワークに接続されています。interfaces: - masquerade: {} name: default - bridge: {} name: pxe-net macAddress: de:00:00:00:00:de bootOrder: 1
注記複数のインターフェースおよびディスクのブートの順序はグローバル順序になります。
OS プロビジョニングの後に起動が適切に実行されるよう、ブートデバイス番号をディスクに割り当てます。
ディスク
bootOrder
の値を2
に設定します。devices: disks: - disk: bus: virtio name: containerdisk bootOrder: 2
ネットワークが直前に作成された NetworkAttachmentDefinition に接続されるように指定します。このシナリオでは、
<pxe-net>
は<pxe-net-conf>
という NetworkAttachmentDefinition に接続されます。networks: - name: default pod: {} - name: pxe-net multus: networkName: pxe-net-conf
仮想マシンインスタンスを作成します。
$ oc create -f vmi-pxe-boot.yaml virtualmachineinstance.kubevirt.io "vmi-pxe-boot" created
仮想マシンインスタンスの実行を待機します。
$ oc get vmi vmi-pxe-boot -o yaml | grep -i phase phase: Running
VNC を使用して仮想マシンインスタンスを表示します。
$ virtctl vnc vmi-pxe-boot
- ブート画面で、PXE ブートが正常に実行されていることを確認します。
VMI にログインします。
$ virtctl console vmi-pxe-boot
仮想マシンのインターフェースおよび MAC アドレスを確認し、ブリッジに接続されたインターフェースに指定された MAC アドレスがあることを確認します。この場合、PXE ブートには IP アドレスなしに
eth1
を使用しています。他のインターフェースeth0
は OpenShift Container Platform から IP アドレスを取得しています。$ ip addr ... 3. eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000 link/ether de:00:00:00:00:de brd ff:ff:ff:ff:ff:ff