第8章 仮想マシン
8.1. 仮想マシンの作成
以下のいずれかの手順を使用して、仮想マシンを作成します。
- クイックスタートのガイド付きツアー
- ウィザードの実行
- 仮想マシンウィザードによる事前に設定された YAML ファイルの貼り付け
- CLI の使用
- 仮想マシンウィザードによる VMware 仮想マシンまたはテンプレートのインポート
openshift-*
namespace に仮想マシンを作成しないでください。代わりに、openshift
接頭辞なしの新規 namespace を作成するか、または既存 namespace を使用します。
Web コンソールから仮想マシンを作成する場合、ブートソースで設定される仮想マシンテンプレートを選択します。ブートソースを含む仮想マシンテンプレートには Available boot source というラベルが付けられるか、またはそれらはカスタマイズされたラベルテキストを表示します。選択可能なブートソースでテンプレートを使用すると、仮想マシンの作成プロセスをスピードアップできます。
ブートソースのないテンプレートには、Boot source required というラベルが付けられます。ブートソースを仮想マシンに追加する 手順を実行する場合、これらのテンプレートを使用できます。
8.1.1. クイックスタートの使用による仮想マシンの作成
Web コンソールは、仮想マシンを作成するためのガイド付きツアーを含むクイックスタートを提供します。Administrator パースペクティブの Help メニューを選択して Quick Starts カタログにアクセスし、Quick Starts カタログを表示できます。Quick Starts タイルをクリックし、ツアーを開始すると、システムによるプロセスのガイドが開始します。
Quick Starts のタスクは、Red Hat テンプレートの選択から開始します。次に、ブートソースを追加して、オペレーティングシステムイメージをインポートできます。最後に、カスタムテンプレートを保存し、これを使用して仮想マシンを作成できます。
前提条件
- オペレーティングシステムイメージの URL リンクをダウンロードできる Web サイトにアクセスすること。
手順
- Web コンソールで、Help メニューから Quick Starts を選択します。
- Quick Starts カタログのタイルをクリックします。例: Red Hat Linux Enterprise Linux 仮想マシンの作成
- ガイド付きツアーの手順に従い、オペレーティングシステムイメージのインポートと仮想マシンの作成タスクを実行します。Virtual Machines タブで、仮想マシンが表示されます。
8.1.2. 仮想マシンウィザードの実行による仮想マシンの作成
Web コンソールは、仮想マシンテンプレートの選択と仮想マシンの作成プロセスをガイドするウィザードを特長としています。Red Hat 仮想マシンテンプレートは、オペレーティングシステムイメージ、オペレーティングシステム、フレーバー (CPU およびメモリー)、およびワークロードタイプ (サーバー) のデフォルト設定で事前に設定されます。テンプレートがブートソースで設定される場合、それらのテンプレートにはカスタマイズされたラベルテキストテキストまたはデフォルトのラベルテキスト (Available boot source) のラベルが付けられます。その後、これらのテンプレートは仮想マシンの作成に使用する準備が整います。
事前に設定されたテンプレートの一覧からテンプレートを選択し、設定を確認し、 Create virtual machine from template ウィザードで仮想マシンを作成できます。仮想マシンのカスタマイズを選択した場合には、ウィザードが General、Networking、Storage、Advanced、および Review の手順をガイドします。ウィザードに表示されるすべての必須フィールドには * のマークが付けられます。
ネットワークインターフェイスコントローラー (NIC) およびストレージディスクを作成し、それらを仮想マシンに割り当てます。
手順
-
サイドメニューから Workloads
Virtualization をクリックします。 - Virtual Machines タブまたは Templates タブで、Create をクリックし、Virtual Machine with Wizard を選択します。
- ブートソースで設定したテンプレートを選択します。
- Next をクリックして Review and create ステップに移動します。
- 仮想マシンをすぐに起動する必要がない場合は、Start this virtual machine after creation チェックボックスをクリアします。
- Create virtual machine をクリックし、ウィザードを終了するか、またはウィザードを継続して使用し、仮想マシンをカスタマイズします。
Customize virtual machine をクリックして General ステップに移動します。
- オプション: Name フィールドを編集して、仮想マシンのカスタム名を指定します。
- オプション: Description フィールドに説明を追加します。
Next をクリックして Networking ステップに進みます。デフォルトで
nic0
NIC が割り当てられます。- オプション: Add Network Interface をクリックし、追加の NIC を作成します。
- オプション: すべての NIC の削除は、Options メニュー をクリックし、Delete を選択して実行できます。仮想マシンの作成において、NIC が割り当てられている必要はありません。NIC は仮想マシンの作成後に作成することができます。
Next をクリックして Storage ステップに進みます。
- オプション: Add Disk をクリックして追加のディスクを作成します。これらのディスクの削除は、Options メニュー をクリックし、Delete を選択して実行できます。
- オプション: Options メニュー をクリックし、ディスクを編集して変更内容を保存します。
Next をクリックして Advanced ステップに移動し、Cloud-init の詳細を確認して SSH アクセスを設定します。
注記cloud-init またはウィザードでカスタムスクリプトを使用して、SSH キーを静的に挿入します。これにより、仮想マシンを安全に、かつリモートで管理し、情報を管理し、転送することができます。この手順は、仮想マシンのセキュリティーを保護するために実行することを強く推奨します。
- Next をクリックして Review ステップに移動し、仮想マシンの設定を確認します。
- Create Virtual Machine をクリックします。
See virtual machine details をクリックして、この仮想マシンの Overview を表示します。
仮想マシンは Virtual Machines タブに一覧表示されます。
Web コンソールウィザードを実行する際は、仮想マシンウィザードのフィールドを参照します。
8.1.2.1. 仮想マシンウィザードのフィールド
名前 | パラメーター | 説明 |
---|---|---|
名前 |
この名前には、小文字 ( | |
説明 | オプションの説明フィールド。 | |
オペレーティングシステム | テンプレートで仮想マシン用に選択されるオペレーティングシステム。テンプレートから仮想マシンを作成する場合、このフィールドを編集することはできません。 | |
Boot Source | URL を使用したインポート (PVC の作成) | HTTP または HTTPS エンドポイントで利用できるイメージからコンテンツをインポートします。例: オペレーティングシステムイメージのある Web ページから URL リンクを取得します。 |
既存の PVC のクローン作成 (PVC の作成) | クラスターで利用可能な既存の永続ボリューム要求 (PVC) を選択し、これをクローンします。 | |
レジストリーを使用したインポート (PVC の作成) |
クラスターからアクセスできるレジストリーの起動可能なオペレーティングシステムコンテナーから仮想マシンをプロビジョニングします。例: | |
PXE (ネットワークブート: ネットワークインターフェイスの追加) | ネットワークのサーバーからオペレーティングシステムを起動します。PXE ブート可能なネットワーク接続定義が必要です。 | |
永続ボリューム要求 (PVC) のプロジェクト | PVC のクローン作成に使用するプロジェクト名。 | |
永続ボリューム要求 (PVC) の名前 | 既存の PVC のクローンを作成する場合にこの仮想マシンテンプレートに適用する必要のある PVC 名。 | |
これを CD-ROM ブートソースとしてマウントする | CD-ROM には、オペレーティングシステムをインストールするための追加のディスクが必要です。チェックボックスを選択して、ディスクを追加し、後でカスタマイズします。 | |
Flavor | Tiny、Small、Medium、Large、Custom | 仮想マシンテンプレートの CPU およびメモリーの容量を、そのテンプレートに関連付けられたオペレーティングシステムに応じて、仮想マシンに割り当てられる事前に定義された値で事前設定します。
デフォルトのテンプレートを選択する場合は、カスタム値を使用して、テンプレートの |
Workload Type 注記 誤った Workload Type を選択した場合は、パフォーマンスまたはリソースの使用状況の問題が発生することがあります (UI の速度低下など)。 | デスクトップ | デスクトップで使用するための仮想マシン設定。小規模な環境での使用に適しています。Web コンソールでの使用に推奨されます。 |
Server | パフォーマンスのバランスを図り、さまざまなサーバーのワークロードと互換性があります。 | |
High-Performance | 高パフォーマンスのワークロードに対して最適化された仮想マシン設定。 | |
作成後にこの仮想マシンを起動します。 | このチェックボックスはデフォルトで選択され、仮想マシンは作成後に実行を開始します。仮想マシンの作成時に起動する必要がない場合は、チェックボックスをクリアします。 |
8.1.2.2. ネットワークフィールド
名前 | 説明 |
---|---|
名前 | ネットワークインターフェイスコントローラーの名前。 |
モデル | ネットワークインターフェイスコントローラーのモデルを示します。サポートされる値は e1000e および virtio です。 |
ネットワーク | 利用可能なネットワーク接続定義の一覧。 |
Type |
利用可能なバインディングメソッドの一覧。デフォルトの Pod ネットワークについては、 |
MAC Address | ネットワークインターフェイスコントローラーの MAC アドレス。MAC アドレスが指定されていない場合、これは自動的に割り当てられます。 |
8.1.2.3. ストレージフィールド
名前 | 選択 | 説明 |
---|---|---|
Source | 空白 (PVC の作成) | 空のディスクを作成します。 |
URL を使用したインポート (PVC の作成) | URL (HTTP または HTTPS エンドポイント) を介してコンテンツをインポートします。 | |
既存 PVC の使用 | クラスターですでに利用可能な PVC を使用します。 | |
既存の PVC のクローン作成 (PVC の作成) | クラスターで利用可能な既存の PVC を選択し、このクローンを作成します。 | |
レジストリーを使用したインポート (PVC の作成) | コンテナーレジストリーを使用してコンテンツをインポートします。 | |
コンテナー (一時的) | クラスターからアクセスできるレジストリーにあるコンテナーからコンテンツをアップロードします。コンテナーディスクは、CD-ROM や一時的な仮想マシンなどの読み取り専用ファイルシステムにのみ使用する必要があります。 | |
名前 |
ディスクの名前。この名前には、小文字 ( | |
Size | ディスクのサイズ (GiB 単位)。 | |
Type | ディスクのタイプ。例: Disk または CD-ROM | |
Interface | ディスクデバイスのタイプ。サポートされるインターフェイスは、virtIO、SATA、および SCSI です。 | |
Storage Class | ディスクの作成に使用されるストレージクラス。 | |
Advanced | 永続ボリュームがフォーマットされたファイルシステムまたは raw ブロック状態を使用するかどうかを定義します。デフォルトは Filesystem です。 | |
Advanced | 永続ボリュームのアクセスモード。サポートされるアクセスモードは、Single User (RWO)、Shared Access (RWX)、および Read Only (ROX) です。 |
ストレージの詳細設定
以下のストレージの詳細設定は、Blank、Import via URLURL、および Clone existing PVC ディスクで利用できます。これらのパラメーターはオプションです。これらのパラメーターを指定しない場合、システムは kubevirt-storage-class-defaults
設定マップのデフォルト値を使用します。
名前 | パラメーター | 説明 |
---|---|---|
ボリュームモード | Filesystem | ファイルシステムベースのボリュームで仮想ディスクを保存します。 |
Block |
ブロックボリュームで仮想ディスクを直接保存します。基礎となるストレージがサポートしている場合は、 | |
アクセスモード | Single User (RWO) | ディスクは単一ノードで読み取り/書き込みとしてマウントできます。 |
Shared Access (RWX) | ディスクは数多くのノードで読み取り/書き込みとしてマウントできます。 注記 これは、ノード間の仮想マシンのライブマイグレーションなどの、一部の機能で必要になります。 | |
Read Only (ROX) | ディスクは数多くのノードで読み取り専用としてマウントできます。 |
8.1.2.4. Cloud-init フィールド
名前 | 説明 |
---|---|
Hostname | 仮想マシンの特定のホスト名を設定します。 |
認可された SSH キー | 仮想マシンの ~/.ssh/authorized_keys にコピーされるユーザーの公開鍵。 |
カスタムスクリプト | 他のオプションを、カスタム cloud-init スクリプトを貼り付けるフィールドに置き換えます。 |
ストレージクラスのデフォルトを設定するには、ストレージプロファイルを使用します。詳細については、ストレージプロファイルのカスタマイズを参照してください。
8.1.2.5. 仮想マシンウィザードの作成用の事前に設定された YAML ファイルの貼り付け
YAML 設定ファイルを作成し、解析して仮想マシンを作成します。YAML 編集画面を開くと、常に有効な example
仮想マシン設定がデフォルトで提供されます。
Create をクリックする際に YAML 設定が無効な場合、エラーメッセージでエラーが発生したパラメーターが示唆されます。エラーは一度に 1 つのみ表示されます。
編集中に YAML 画面から離れると、設定に対して加えた変更が取り消されます。
手順
-
サイドメニューから Workloads
Virtualization をクリックします。 - Virtual Machines タブをクリックします。
- Create をクリックし、Virtual Machine With YAML を選択します。
編集可能なウィンドウで仮想マシンの設定を作成するか、またはこれを貼り付けます。
-
または、YAML 画面にデフォルトで提供される
example
仮想マシンを使用します。
-
または、YAML 画面にデフォルトで提供される
- オプション: Download をクリックして YAML 設定ファイルをその現在の状態でダウンロードします。
- Create をクリックして仮想マシンを作成します。
仮想マシンは Virtual Machines タブに一覧表示されます。
8.1.3. CLI の使用による仮想マシンの作成
virtualMachine
マニフェストから仮想マシンを作成できます。
手順
仮想マシンの
VirtualMachine
マニフェストを編集します。たとえば、次のマニフェストは Red Hat Enterprise Linux (RHEL) 仮想マシンを設定します。例8.1 RHEL 仮想マシンのマニフェストの例
apiVersion: kubevirt.io/v1 kind: VirtualMachine metadata: labels: app: <vm_name> 1 name: <vm_name> spec: dataVolumeTemplates: - apiVersion: cdi.kubevirt.io/v1beta1 kind: DataVolume metadata: name: <vm_name> spec: sourceRef: kind: DataSource name: rhel9 namespace: openshift-virtualization-os-images storage: resources: requests: storage: 30Gi running: false template: metadata: labels: kubevirt.io/domain: <vm_name> spec: domain: cpu: cores: 1 sockets: 2 threads: 1 devices: disks: - disk: bus: virtio name: rootdisk - disk: bus: virtio name: cloudinitdisk interfaces: - masquerade: {} name: default rng: {} features: smm: enabled: true firmware: bootloader: efi: {} resources: requests: memory: 8Gi evictionStrategy: LiveMigrate networks: - name: default pod: {} volumes: - dataVolume: name: <vm_name> name: rootdisk - cloudInitNoCloud: userData: |- #cloud-config user: cloud-user password: '<password>' 2 chpasswd: { expire: False } name: cloudinitdisk
マニフェストファイルを使用して仮想マシンを作成します。
$ oc create -f <vm_manifest_file>.yaml
オプション: 仮想マシンを開始します。
$ virtctl start <vm_name>
8.1.4. 仮想マシンのストレージボリュームタイプ
ストレージボリュームタイプ | 説明 |
---|---|
ephemeral | ネットワークボリュームを読み取り専用のバッキングストアとして使用するローカルの copy-on-write (COW) イメージ。バッキングボリュームは PersistentVolumeClaim である必要があります。一時イメージは仮想マシンの起動時に作成され、すべての書き込みをローカルに保存します。一時イメージは、仮想マシンの停止、再起動または削除時に破棄されます。バッキングボリューム (PVC) はいずれの方法でも変更されません。 |
persistentVolumeClaim | 利用可能な PV を仮想マシンに割り当てます。PV の割り当てにより、仮想マシンデータのセッション間での永続化が可能になります。 CDI を使用して既存の仮想マシンディスクを PVC にインポートし、PVC を仮想マシンインスタンスに割り当てる方法は、既存の仮想マシンを OpenShift Container Platform にインポートするための推奨される方法です。ディスクを PVC 内で使用できるようにするためのいくつかの要件があります。 |
dataVolume |
データボリュームは、インポート、クローンまたはアップロード操作で仮想マシンディスクの準備プロセスを管理することによって
|
cloudInitNoCloud | 参照される cloud-init NoCloud データソースが含まれるディスクを割り当て、ユーザーデータおよびメタデータを仮想マシンに提供します。cloud-init インストールは仮想マシンディスク内で必要になります。 |
containerDisk | コンテナーイメージレジストリーに保存される、仮想マシンディスクなどのイメージを参照します。イメージはレジストリーからプルされ、仮想マシンの起動時にディスクとして仮想マシンに割り当てられます。
RAW および QCOW2 形式のみがコンテナーイメージレジストリーのサポートされるディスクタイプです。QCOW2 は、縮小されたイメージサイズの場合に推奨されます。 注記
|
emptyDisk | 仮想マシンインターフェイスのライフサイクルに関連付けられるスパースの QCOW2 ディスクを追加で作成します。データは仮想マシンのゲストによって実行される再起動後も存続しますが、仮想マシンが Web コンソールから停止または再起動する場合には破棄されます。空のディスクは、アプリケーションの依存関係および一時ディスクの一時ファイルシステムの制限を上回るデータを保存するために使用されます。 ディスク 容量 サイズも指定する必要があります。 |
8.1.5. 仮想マシンの RunStrategy について
仮想マシンの RunStrategy
は、一連の条件に応じて仮想マシンインスタンス (VMI) の動作を判別します。spec.runStrategy
設定は、spec.running
設定の代わりに仮想マシン設定プロセスに存在します。spec.runStrategy
設定を使用すると、true
または false
の応答のみを伴う spec.running
設定とは対照的に、VMI の作成および管理をより柔軟に行えます。ただし、2 つの設定は相互排他的です。spec.running
または spec.runStrategy
のいずれかを使用できます。両方を使用する場合は、エラーが発生します。
4 つ RunStrategy が定義されています。
Always
-
VMI は仮想マシンの作成時に常に表示されます。元の VMI が何らかの理由で停止する場合に、新規の VMI が作成されます。これは
spec.running: true
と同じ動作です。 RerunOnFailure
- 前のインスタンスがエラーが原因で失敗する場合は、VMI が再作成されます。インスタンスは、仮想マシンが正常に停止する場合 (シャットダウン時など) には再作成されません。
Manual
(手動)-
start
、stop
、およびrestart
virtctl クライアントコマンドは、 VMI の状態および存在を制御するために使用できます。 Halted
-
仮想マシンが作成される際に VMI は存在しません。これは
spec.running: false
と同じ動作です。
start
、stop
、および restart
の virtctl コマンドの各種の組み合わせは、どの RunStrategy
が使用されるかに影響を与えます。
以下の表は、仮想マシンの各種の状態からの移行について示しています。最初の列には、仮想マシンの初期の RunStrategy
が表示されます。それぞれの追加の列には、virtctl コマンドと、このコマンド実行後の新規 RunStrategy
が表示されます。
初期 RunStrategy | start | stop | restart |
---|---|---|---|
Always | - | Halted | Always |
RerunOnFailure | - | Halted | RerunOnFailure |
Manual | Manual | Manual | Manual |
Halted | Always | - | - |
インストーラーでプロビジョニングされるインフラストラクチャーを使用してインストールされた OpenShift Virtualization クラスターでは、ノードで MachineHealthCheck に失敗し、クラスターで利用できなくなると、RunStrategy が Always
または RerunOnFailure
の仮想マシンが新規ノードで再スケジュールされます。
apiVersion: kubevirt.io/v1
kind: VirtualMachine
spec:
RunStrategy: Always 1
template:
...
- 1
- VMI の現在の
RunStrategy
設定。
8.1.6. 関連情報
KubeVirt v0.41.0 API リファレンス の
VirtualMachineSpec
定義は、仮想マシン仕様のパラメーターおよび階層のより範囲の広いコンテキストを提供します。注記KubeVirt API リファレンスはアップストリームのプロジェクトリファレンスであり、OpenShift Virtualization でサポートされていないパラメーターが含まれる場合があります。
-
コンテナーディスクを準備 してから、これを
containerDisk
ボリュームとして仮想マシンに追加します。 - マシンヘルスチェックのデプロイおよび有効化についての詳細は、Deploying machine health checks を参照してください。
- インストーラーでプロビジョニングされるインフラストラクチャーについての詳細は、インストーラーでプロビジョニングされるインフラストラクチャーの概要 を参照してください。
- SR-IOV ネットワーク Operator についての詳細は、SR-IOV ネットワーク Operator の設定 を参照してください。