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: RunningVNC を使用して仮想マシンインスタンスを表示します。
$ 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