This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.Container-native Virtualization
Container-native Virtualization のインストール、使用方法、およびリリースノート
概要
第1章 Container-native Virtualization について リンクのコピーリンクがクリップボードにコピーされました!
Container-native Virtualization の機能およびサポート範囲について確認します。
1.1. Container-native Virtualization の機能 リンクのコピーリンクがクリップボードにコピーされました!
Container-native Virtualization は OpenShift Container Platform のアドオンであり、仮想マシンのワークロードを実行し、このワークロードをコンテナーのワークロードと共に管理することを可能にします。
Container-native Virtualization は、Kubernetes カスタムリソースを使って新規オブジェクトを OpenShift Container Platform クラスターに追加し、仮想化タスクを有効にします。これらのタスクには、以下が含まれます。
- Linux および Windows 仮想マシンの作成と管理
- 各種コンソールおよび CLI ツールの使用による仮想マシンへの接続
- 既存の仮想マシンのインポートおよびクローン作成
- ネットワークインターフェイスコントローラーおよび仮想マシンに割り当てられたストレージディスクの管理
- 仮想マシンのノード間でのライブマイグレーション
機能強化された Web コンソールは、これらの仮想化されたリソースを OpenShift Container Platform クラスターコンテナーおよびインフラストラクチャーと共に管理するためのグラフィカルポータルを提供します。
Container-native Virtualization は OVN-Kubernetes または OpenShiftSDN ネットワークプロバイダーのいずれかを使って使用できます。
1.2. Container-native Virtualization のサポート リンクのコピーリンクがクリップボードにコピーされました!
Container-native Virtualization はテクノロジープレビュー機能です。テクノロジープレビュー機能は Red Hat の実稼働環境でのサービスレベルアグリーメント (SLA) ではサポートされていないため、Red Hat では実稼働環境での使用を推奨していません。Red Hat は実稼働環境でこれらを使用することを推奨していません。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲についての詳細は、https://access.redhat.com/ja/support/offerings/techpreview/ を参照してください。
第2章 Container-native Virtualization リリースノート リンクのコピーリンクがクリップボードにコピーされました!
2.1. Container-native Virtualization リリースノート リンクのコピーリンクがクリップボードにコピーされました!
2.1.1. Container-native Virtualization 2.3 について リンクのコピーリンクがクリップボードにコピーされました!
2.1.1.1. Container-native Virtualization の機能 リンクのコピーリンクがクリップボードにコピーされました!
Container-native Virtualization は OpenShift Container Platform のアドオンであり、仮想マシンのワークロードを実行し、このワークロードをコンテナーのワークロードと共に管理することを可能にします。
Container-native Virtualization は、Kubernetes カスタムリソースを使って新規オブジェクトを OpenShift Container Platform クラスターに追加し、仮想化タスクを有効にします。これらのタスクには、以下が含まれます。
- Linux および Windows 仮想マシンの作成と管理
- 各種コンソールおよび CLI ツールの使用による仮想マシンへの接続
- 既存の仮想マシンのインポートおよびクローン作成
- ネットワークインターフェイスコントローラーおよび仮想マシンに割り当てられたストレージディスクの管理
- 仮想マシンのノード間でのライブマイグレーション
機能強化された Web コンソールは、これらの仮想化されたリソースを OpenShift Container Platform クラスターコンテナーおよびインフラストラクチャーと共に管理するためのグラフィカルポータルを提供します。
Container-native Virtualization は OVN-Kubernetes または OpenShiftSDN ネットワークプロバイダーのいずれかを使って使用できます。
2.1.1.2. Container-native Virtualization のサポート リンクのコピーリンクがクリップボードにコピーされました!
Container-native Virtualization はテクノロジープレビュー機能です。テクノロジープレビュー機能は Red Hat の実稼働環境でのサービスレベルアグリーメント (SLA) ではサポートされていないため、Red Hat では実稼働環境での使用を推奨していません。Red Hat は実稼働環境でこれらを使用することを推奨していません。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲についての詳細は、https://access.redhat.com/ja/support/offerings/techpreview/ を参照してください。
2.1.2. 新機能および変更された機能 リンクのコピーリンクがクリップボードにコピーされました!
Container-native Virtualization は、Windows Server のワークロードを実行する Microsoft の Windows Server Virtualization Validation Program (SVVP) で認定されています。
- SVVP の認定は、Intel および AMD の CPU に適用されます。
- SVVP 認定 Red Hat Enterprise Linux CoreOS 8 ワーカーの名前は、Red Hat OpenShift Container Platform 4 on RHEL CoreOS 8 です。
- Microsoft Windows 10 と互換性がある新しいテンプレートを利用できます。
2.1.2.1. ネットワーク リンクのコピーリンクがクリップボードにコピーされました!
- Container-native Virtualization は、OVN-Kubernetes または OpenShiftSDN ネットワークプロバイダーのいずれかを使って使用できます。
Container-native Virtualization は
nmstateを使用してノードネットワークの状態を報告し、設定します。単一の設定マニフェストをクラスターに適用して、すべてのノードに Linux ブリッジ、ボンドおよび VLAN デバイスを作成するなどして、ネットワークポリシーの設定を変更することができます。- 詳細は、ノードのネットワーク の章を参照してください。
2.1.2.2. ストレージ リンクのコピーリンクがクリップボードにコピーされました!
- これで、CPU およびメモリーリソースの制限が適用される namespace に仮想マシンディスクをインポートし、アップロードし、そのクローンを作成できるようになりました。
-
virtctlツールは、サーバー側のアップロードの後処理を非同期的に監視し、仮想マシンのディスクのアップロード のステータスをより正確に報告できるようになりました。
2.1.2.3. Web コンソール リンクのコピーリンクがクリップボードにコピーされました!
-
Web コンソールで仮想マシンの Paused ステータスを表示できるようになりました。Web コンソールでは、Virtual Machines ダッシュボードと Virtual Machine Details ページにこのステータスが表示されます。
oc CLI を使用して、仮想マシンの Paused ステータスを表示することもできます。
oc get vmi testvm -o=jsonpath='{.status.conditions[?(@.type=="Paused")].message}'
$ oc get vmi testvm -o=jsonpath='{.status.conditions[?(@.type=="Paused")].message}'
- 仮想マシンのステータスが Paused の場合、Web コンソールからその一時停止を解除 できます。
- 仮想マシンの一覧内の仮想マシンから切り離された仮想マシンインスタンスを表示し、管理できます。
- Container-native Virtualization を使用すると、 仮想マシンウィザード で CD-ROM を設定できます。ドロップダウンリストから CD-ROM 設定のタイプ (Container、URL、または Attach Disk) を選択できます。また、Virtual Machine Details ページで CD-ROM 設定を編集 することもできます。
- ブート順序の一覧 が Virtual Machine Details で利用可能になりました。項目を追加したり、削除したり、またブート順序の一覧を変更したりすることができます。
- 仮想マシンおよび仮想マシンテンプレートウィザードでは、さまざまなオペレーティングシステムの CPU およびメモリーサイズおよびディスクバスの要件を検証できるようになりました。特定のオペレーティングシステムの要件を満たさない仮想マシンまたは仮想マシンテンプレートを作成しようとすると、ウィザードによりリソースの警告が表示されます。
- Virtual Machine Details ページで、仮想マシンの専用リソース を表示し、設定できるようになりました。専用リソースを有効にしたら、仮想マシンのワークロードが他のプロセスで使用されていない CPU で実行されることを確認します。これにより、仮想マシンのパフォーマンスとレイテンシー予測の精度が向上します。
2.1.3. 主な技術上の変更点 リンクのコピーリンクがクリップボードにコピーされました!
-
Container-native Virtualization を、
openshift-cnvという名前の単一 namespace にデプロイする必要があります。openshift-cnvnamespace は、存在していない場合、デプロイメント時に自動的に作成されるようになりました。 -
エラーを防ぐために、Container-native Virtualization デプロイメント時に作成する CNV Operator Deployment カスタムリソースの名前を変更できなくなりました。デフォルト名の
kubevirt-hyperconvergedという名前のカスタムリソースを作成しようとする場合、作成が失敗し、エラーメッセージが Web コンソールに表示されます。 意図しないデータ損失を防ぐために、クラスターに仮想マシンまたは DataVolume が定義されている場合は、Container-native Virtualization をアンインストールできなくなりました。
- Container-native Virtualization をアンインストールする前に、すべての 仮想マシン (VM)、仮想マシンインスタンス (VMI)、および DataVolume (DV) を手動で削除する必要があります。
Container-native Virtualization のアンインストールを試行する際に VM、VMI、または DV オブジェクトが存在する場合は、残りのオブジェクトが削除されるまでアンインストールプロセスは完了しません。
注記保留中のオブジェクトが原因でアンインストールが一時停止されていることを確認するには、Events タブを表示します。
2.1.4. 既知の問題 リンクのコピーリンクがクリップボードにコピーされました!
- KubeMacPool は Container-native Virtualization 2.3 で無効にされています。つまり、Pod または仮想マシンのセカンダリーインターフェイスは、プールから一意のアドレスではなく、無作為に生成された MAC アドレスを取得します。稀なケースで、無作為に割り当てられた MAC アドレスが競合する可能性があります。(BZ#1816971)
Web コンソールで Container-native Virtualization Operator のサブスクリプションチャネルを編集しようとする際に、Subscription Overview の Channel ボタンをクリックすると JavaScript エラーが発生することがあります。(BZ#1796410)
回避策として、以下の
ocpatch コマンドを実行して、CLI から Container-native Virtualization 2.3 へのアップグレードプロセスをトリガーします。export TARGET_NAMESPACE=openshift-cnv CNV_CHANNEL=2.3 && oc patch -n "${TARGET_NAMESPACE}" $(oc get subscription -n ${TARGET_NAMESPACE} --no-headers -o name) --type='json' -p='[{"op": "replace", "path": "/spec/channel", "value":"'${CNV_CHANNEL}'"}, {"op": "replace", "path": "/spec/installPlanApproval", "value":"Automatic"}]'$ export TARGET_NAMESPACE=openshift-cnv CNV_CHANNEL=2.3 && oc patch -n "${TARGET_NAMESPACE}" $(oc get subscription -n ${TARGET_NAMESPACE} --no-headers -o name) --type='json' -p='[{"op": "replace", "path": "/spec/channel", "value":"'${CNV_CHANNEL}'"}, {"op": "replace", "path": "/spec/installPlanApproval", "value":"Automatic"}]'Copy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは、アップグレードチャネル
2.3にサブスクリプションをポイントし、自動更新を有効にします。
仮想マシンおよび仮想マシンテンプレートウィザードでは、virtIO が CD-ROM を割り当てる際にデフォルトのインターフェイスになります。ただし、virtIO CD-ROM は仮想マシンの検証をパスせず、これを作成できません。(BZ#1817394)
- 回避策として、仮想マシンおよび仮想マシンテンプレートを作成する際に、SATA を CD-ROM インターフェイスとして選択します。
Containerized Data Importer (CDI) は、インポートおよびアップロード操作に CDIConfig オブジェクトの
scratchSpaceStorageClass設定を常に使用する訳ではありません。代わりに、CDI はデフォルトのストレージクラスを使用してスクラッチ領域を割り当てます。(BZ#1828198)回避策として、クラスターのデフォルトストレージクラスが定義されていることを確認します。以下のコマンドを使用して、必要なアノテーションを適用できます。
oc patch storageclass <STORAGE_CLASS_NAME> -p '{"metadata": {"annotations": {"storageclass.kubernetes.io/is-default-class": "true"}}}'$ oc patch storageclass <STORAGE_CLASS_NAME> -p '{"metadata": {"annotations": {"storageclass.kubernetes.io/is-default-class": "true"}}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
以前のバージョンの Container-native Virtualization のデプロイ時に Operator デプロイメントのカスタムリソースの名前を変更した場合、Container-native Virtualization 2.3 に直接アップグレードすることはできません。カスタムリソースは、デフォルト名の
kubevirt-hyperconvergedという名前にする必要があります。(BZ#1822266)回避策として、以下のいずれかを実行できます。
-
既存のカスタムリソースの名前を
kubevirt-hyperconvergedに変更します。 -
デフォルトの
kubevirt-hyperconvergedという名前の新規のカスタムリソースを作成します。次に、kubevirt-hyperconvergedという名前のカスタムリソースを削除します。
-
既存のカスタムリソースの名前を
- OpenShift Container Platform 4.4 Web コンソールには、NIC を仮想マシンに追加する際に slirp がオプションとして含まれますが、slirp は有効な NIC タイプではありません。NIC を仮想マシンに追加する場合、slirp は選択しないでください。(BZ#1828744)
移行後、仮想マシンには新規の IP アドレスが割り当てられます。ただし、コマンドの
oc get vmiおよびoc describe vmiは古くなった IP アドレスを含む出力を依然として出力します。(BZ#1686208)回避策として、以下のコマンドを実行して正しい IP アドレスを表示します。
oc get pod -o wide
$ oc get pod -o wideCopy to Clipboard Copied! Toggle word wrap Toggle overflow
管理者権限を持たないユーザーは、仮想マシンのウィザードを使用して、L2 ネットワークのプロジェクトにネットワークインターフェイスを追加できません。この問題は、ユーザーがネットワーク割り当て定義を読み込む権限がないために発生します。(BZ#1743985)
回避策として、ネットワークの割り当て定義を読み込むパーミッションを持つユーザーを指定します。
以下の例を使用して
ClusterRoleおよびClusterRoleBindingオブジェクトを YAML 設定ファイルに定義します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow cluster-adminユーザーとして以下のコマンドを実行し、定義したClusterRoleおよびClusterRoleBindingオブジェクトを作成します。oc create -f <filename>.yaml
$ oc create -f <filename>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
ノードの CPU モデルが異なると、ライブマイグレーションに失敗します。ノードに同じ物理 CPU モデルがある場合でも、マイクロコードの更新によって導入される違いにより同じ状況が生じます。これは、デフォルト設定が、ライブマイグレーションと互換性のないホスト CPU パススルー動作をトリガーするためです。(BZ#1760028)
回避策として、以下の例のように
kubevirt-configConfigMap にデフォルトの CPU モデルを設定します。注記ライブマイグレーションをサポートする仮想マシンを起動する前に、この変更を行う必要があります。
以下のコマンドを実行して、編集するために
kubevirt-configConfigMap を開きます。oc edit configmap kubevirt-config -n openshift-cnv
$ oc edit configmap kubevirt-config -n openshift-cnvCopy to Clipboard Copied! Toggle word wrap Toggle overflow ConfigMap を編集します。
kind: ConfigMap metadata: name: kubevirt-config data: default-cpu-model: "<cpu-model>"
kind: ConfigMap metadata: name: kubevirt-config data: default-cpu-model: "<cpu-model>"1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<cpu-model>を実際の CPU モデルの値に置き換えます。すべてのノードにoc describe node <node>を実行し、cpu-model-<name>ラベルを確認してこの値を判別できます。すべてのノードに存在する CPU モデルを選択します。
Haswell CPU を使用して仮想マシンの作成および起動を試行する場合、仮想マシンの起動が誤ってラベルが付けられたノードによって失敗する可能性があります。これは、以前のバージョンの Container-native Virtualization からの動作の変更点になります。この場合、仮想マシンは Haswell ホストで正常に起動されました。(BZ#1781497)
回避策として、可能であれば別の CPU モデルを選択します。
- Container-native Virtualization のアップグレードプロセスは、Operator Lifecycle Manager (OLM) の中断により失敗する可能性があります。この問題は、Container-native Virtualization Operator の状態を追跡するために宣言型 API を使用することに関連する制限によって生じます。インストール 時に自動更新を有効にすることにより、この問題が発生するリスクが低くなります。(BZ#1759612)
-
Container-native Virtualization は、
oc adm drainまたはkubectl drainのいずれかを実行してトリガーされるノードのドレイン (解放) を確実に特定することができません。これらのコマンドは、Container-native Virtualization がデプロイされているクラスターのノードでは実行しないでください。ノードは、それらの上部で実行されている仮想マシンがある場合にドレイン (解放) を実行しない可能性があります。現時点の解決策として、ノードをメンテナーンス状態にする方法があります(BZ#1707427)
Operators → Installed Operators ページで Subscription タブに移動し、現在のアップグレードチャネルをクリックしてこれを編集する場合、結果が表示されない可能性があります。これが発生すると、エラーは表示されません。(BZ#1796410)
回避策として、以下の
ocpatch コマンドを実行して、CLI から Container-native Virtualization 2.3 へのアップグレードプロセスをトリガーします。export TARGET_NAMESPACE=openshift-cnv CNV_CHANNEL=2.3 && oc patch -n "${TARGET_NAMESPACE}" $(oc get subscription -n ${TARGET_NAMESPACE} --no-headers -o name) --type='json' -p='[{"op": "replace", "path": "/spec/channel", "value":"'${CNV_CHANNEL}'"}, {"op": "replace", "path": "/spec/installPlanApproval", "value":"Automatic"}]'$ export TARGET_NAMESPACE=openshift-cnv CNV_CHANNEL=2.3 && oc patch -n "${TARGET_NAMESPACE}" $(oc get subscription -n ${TARGET_NAMESPACE} --no-headers -o name) --type='json' -p='[{"op": "replace", "path": "/spec/channel", "value":"'${CNV_CHANNEL}'"}, {"op": "replace", "path": "/spec/installPlanApproval", "value":"Automatic"}]'Copy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは、アップグレードチャネル
2.3にサブスクリプションをポイントし、自動更新を有効にします。
第3章 Container-native Virtualization インストール リンクのコピーリンクがクリップボードにコピーされました!
3.1. Container-native Virtualization のクラスターの設定 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform の評価版バージョンを取得するには、OpenShift Container Platform ホームページから評価版をダウンロードしてください。
Container-native Virtualization はデフォルトで OpenShift Container Platform と連携しますが、以下のインストール設定が推奨されます。
3.2. Container-native Virtualization のインストール リンクのコピーリンクがクリップボードにコピーされました!
Container-native Virtualization をインストールし、仮想化機能を OpenShift Container Platform クラスターに追加します。
OpenShift Container Platform 4.4 Web コンソール を使用して、Container-native Virtualization Operator にサブスクライブし、これをデプロイすることができます。
3.2.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- OpenShift Container Platform 4.4
Container-native Virtualization はテクノロジープレビュー機能です。テクノロジープレビュー機能は Red Hat の実稼働環境でのサービスレベルアグリーメント (SLA) ではサポートされていないため、Red Hat では実稼働環境での使用を推奨していません。Red Hat は実稼働環境でこれらを使用することを推奨していません。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲についての詳細は、https://access.redhat.com/ja/support/offerings/techpreview/ を参照してください。
3.2.2. Container-native Virtualization カタログにサブスクライブします。 リンクのコピーリンクがクリップボードにコピーされました!
Container-native Virtualization をインストールする前に、OpenShift Container Platform Web コンソールから Container-native virtualization カタログにサブスクライブします。サブスクライブにより、openshift-cnv namespace に Container-native Virtualization Operator へのアクセスが付与されます。
手順
- ブラウザーウィンドウを開き、OpenShift Container Platform Web コンソールにログインします。
- Operators → OperatorHub ページに移動します。
- OpenShift Virtualization を検索し、これを選択します。
- Operator についての情報を確認してから、Install をクリックします。
Create Operator Subscription ページで以下を実行します。
インストールされた namespace の場合、Operator recommended namespace オプションが選択されていることを確認します。これにより、Operator が必須の
openshift-cnvnamespace にインストールされます。この namespace は存在しない場合は、自動的に作成されます。警告Container-native Virtualization Operator を
openshift-cnv以外の namespace にインストールしようとすると、インストールが失敗します。- 選択可能な Update Channel オプションから 2.3 を選択します。
- Approval Strategyでは、デフォルト値である Automaticが選択されていることを確認します。Container-native Virtualization は、z-stream の新規リリースが利用可能になると自動的に更新されます。
Subscribe をクリックし、Operator を
openshift-cnvnamespace で利用可能にします。Installed Operators 画面では、Container-native Virtualization がインストールを終了すると、Status に Succeeded が表示されます。
3.2.3. Container-native Virtualization のデプロイ リンクのコピーリンクがクリップボードにコピーされました!
CNV Operator Deployment カスタムリソースを作成し、 container-native virtualization をデプロイします。
前提条件
-
openshift-cnvnamespace の container-native virtualization カタログへのアクティブなサブスクリプション
手順
- Operators → Installed Operators ページに移動します。
- OpenShift Virtualization をクリックします。
CNV Operator Deployment タブをクリックし、Create HyperConverged Cluster をクリックします。
警告デプロイメントのエラーを回避するには、カスタムリソースの名前を変更しないでください。次のステップに進む前に、カスタムリソースの名前がデフォルトの
kubevirt-hyperconvergedであることを確認します。-
YAML を表示して、
BareMetalPlatform: trueであることを確認します。必要な場合は、値をfalseからtrueに変更してから続行します。 - Create をクリックして Container-native Virtualization を起動します。
- Workloads → Pods ページに移動して、Container-native Virtualization Pod がすべて Running 状態になるまでこれらの Pod をモニターします。すべての Pod で Running 状態が表示された後に、Container-native Virtualization にアクセスできます。
3.3. virtctl クライアントのインストール リンクのコピーリンクがクリップボードにコピーされました!
virtctl クライアントは、Container-native Virtualization リソースを管理するためのコマンドラインユーティリティーです。
Container-native Virtualization リポジトリーを有効にし、kubevirt-virtctl パッケージをインストールしてクライアントをシステムにインストールします。
3.3.1. Container-native Virtualization リポジトリーの有効化 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat は、Red Hat Enterprise Linux 8 および Red Hat Enterprise Linux 7 向けの Container-native Virtualization リポジトリーを提供します。
-
Red Hat Enterprise Linux 8 リポジトリー:
cnv-2.3-for-rhel-8-x86_64-rpms -
Red Hat Enterprise Linux 7 リポジトリー:
rhel-7-server-cnv-2.3-rpms
subscription-manager でリポジトリーを有効にするプロセスはどちらのプラットフォームでも同様です。
手順
subscription managerを使用して、お使いのシステムに適した Container-native Virtualization リポジトリーを有効にします。subscription-manager repos --enable <repository>
# subscription-manager repos --enable <repository>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.3.2. virtctl クライアントのインストール リンクのコピーリンクがクリップボードにコピーされました!
kubevirt-virtctl パッケージから virtctl クライアントをインストールします。
手順
kubevirt-virtctlパッケージをインストールします。yum install kubevirt-virtctl
# yum install kubevirt-virtctlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Container-native Virtualization の CLI ツールの使用 も参照してください。
3.4. Container-native Virtualization のアンインストール リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform Web コンソール を使用して Container-native Virtualization をアンインストールできます。
3.4.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- Container-native Virtualization 2.3 がインストールされている必要がありま。
すべての 仮想マシン、仮想マシンインスタンス、および DataVolume を削除する必要があります。
重要これらのオブジェクトを削除せずに Container-native Virtualization のアンインストールを試みると失敗します。
3.4.2. CNV Operator Deployment カスタムリソースの削除 リンクのコピーリンクがクリップボードにコピーされました!
Container-native Virtualization をアンインストールするには、まず CNV Operator Deployment カスタムリソースを削除する必要があります。
前提条件
- アクティブな CNV Operator Deployment カスタムリソース
手順
-
OpenShift Container Platform Web コンソールから、Projects 一覧より
openshift-cnvを選択します。 - Operators → Installed Operators ページに移動します。
- OpenShift Virtualization をクリックします。
- CNV Operator Deployment タブをクリックします。
-
ディスクの Options メニュー
を kubevirt-hyperconverged カスタムリソースを含む行でクリックします。拡張されたメニューで、Delete HyperConverged Cluster をクリックします。
- 確認ウィンドウで Delete をクリックします。
- Workloads → Pods ページに移動し、Operator Pod のみが実行中であることを確認します。
ターミナルウィンドウを開き、以下のコマンドを実行して残りのリソースをクリーンアップします。
oc delete apiservices v1alpha3.subresources.kubevirt.io -n openshift-cnv
$ oc delete apiservices v1alpha3.subresources.kubevirt.io -n openshift-cnvCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.4.3. カタログサブスクリプションの削除 リンクのコピーリンクがクリップボードにコピーされました!
Container-native Virtualization のアンインストールを終了するには、カタログサブスクリプションを削除します。
前提条件
- Container-native virtualization カタログへのアクティブなサブスクリプション
手順
- Operators → OperatorHub ページに移動します。
- OpenShift Virtualization を検索し、これを選択します。
- Uninstall をクリックします。
openshift-cnv namespace を削除できるようになりました。
3.4.4. Web コンソールを使用した namespace の削除 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform Web コンソールを使用して namespace を削除できます。
namespace を削除するパーミッションがない場合、Delete Namespace オプションは選択できなくなります。
手順
- Administration → Namespaces に移動します。
- namespace の一覧で削除する必要のある namespace を見つけます。
-
namespace の一覧の右端で、Options メニュー
から Delete Namespace を選択します。
- Delete Namespace ペインが表示されたら、フィールドから削除する namespace の名前を入力します。
- Delete をクリックします。
第4章 Container-native Virtualization のアップグレード リンクのコピーリンクがクリップボードにコピーされました!
次のマイナーバージョンの Container-native Virtualization に手動でアップグレードし、Web コンソールを使用して更新のステータスをモニターできます。
Container-native Virtualization はテクノロジープレビュー機能です。テクノロジープレビュー機能は Red Hat の実稼働環境でのサービスレベルアグリーメント (SLA) ではサポートされていないため、Red Hat では実稼働環境での使用を推奨していません。Red Hat は実稼働環境でこれらを使用することを推奨していません。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲についての詳細は、https://access.redhat.com/ja/support/offerings/techpreview/ を参照してください。
4.1. Container-native Virtualization のアップグレードについて リンクのコピーリンクがクリップボードにコピーされました!
4.1.1. Container-native Virtualization のアップグレードについて リンクのコピーリンクがクリップボードにコピーされました!
- OpenShift Container Platform Web コンソールを使用して Operator サブスクリプションのチャネルを変更することで、Container-native Virtualization の次のマイナーバージョンにアップグレードできます。
- Container-native Virtualization のインストール時に z-stream の自動更新を有効にできます。
- 更新は、OpenShift Container Platform のインストール時にデプロイされる Marketplace Operator 経由で送信されます。Marketplace Operator は外部 Operator をクラスターに対して利用可能にします。
- 更新の完了までにかかる時間は、ネットワーク接続によって異なります。ほとんどの自動更新は 15 分以内に完了します。
4.1.2. Container-native Virtualization のクラスターへの作用について リンクのコピーリンクがクリップボードにコピーされました!
アップグレードを実行しても仮想マシンのワークロードは中断しません。
仮想マシン Pod は、アップグレード時に再起動したり、移行したりしません。
virt-launcherPod を更新する必要がある場合は、仮想マシンの再起動またはライブマイグレーションが必要になります。注記各仮想マシンには、仮想マシンインスタンスを実行する
virt-launcherPod があります。virt-launcherPod は、仮想マシンのプロセスを管理するために使用されるlibvirtのインスタンスを実行します。
- アップグレードによってネットワーク接続が中断されることはありません。
- DataVolume およびその関連付けられた PersistentVolumeClaim はアップグレード時に保持されます。
4.2. Container-native Virtualization の次のマイナーバージョンへのアップグレード リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform Web コンソールを使用して Operator サブスクリプションのチャネルを変更することで、Container-native Virtualization を次のマイナーバージョンに手動でアップグレードできます。
前提条件
-
cluster-adminロールを持つユーザーとしてのクラスターへのアクセスがあること。
手順
- OpenShift Container Platform Web コンソールにアクセスし、Operators → Installed Operators に移動します。
- OpenShift Virtualization をクリックし、Operator Details ページを開きます。
- Subscription タブをクリックし、Subscription Overview ページを開きます。
- Channel ペインで、バージョン番号の右側にある鉛筆アイコンをクリックし、Change Subscription Update Channel ウィンドウを開きます。
- 次のマイナーバージョンを選択します。たとえば、Container-native Virtualization 2.3 にアップグレードする場合には、2.3 を選択します。
- Save をクリックします。
Operators → Installed Operators に移動してアップグレードのステータスを確認します。以下の
ocコマンドを実行してステータスを確認することもできます。oc get csv -n openshift-cnv
$ oc get csv -n openshift-cnvCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3. アップグレードステータスの監視 リンクのコピーリンクがクリップボードにコピーされました!
Container-native Virtualization アップグレードステータスをモニターする最適な方法として、ClusterServiceVersion (CSV) (CSV) PHASE を監視できます。Web コンソールを使用するか、ここに提供されているコマンドを実行して CSV の状態をモニターすることもできます。
PHASE および状態の値は利用可能な情報に基づく近似値になります。
前提条件
-
cluster-adminロールを持つユーザーとしてクラスターにアクセスできる。 -
OpenShift CLI (
oc) をインストールしている。
手順
以下のコマンドを実行します。
oc get csv
$ oc get csvCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力を確認し、
PHASEフィールドをチェックします。以下に例を示します。VERSION REPLACES PHASE 2.2.1 kubevirt-hyperconverged-operator.v2.2.0 Installing 2.2.0 Replacing
VERSION REPLACES PHASE 2.2.1 kubevirt-hyperconverged-operator.v2.2.0 Installing 2.2.0 ReplacingCopy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: 以下のコマンドを実行して、すべての Container-native Virtualization コンポーネントの状態の集約されたステータスをモニターします。
oc get hco -n openshift-cnv kubevirt-hyperconverged \ -o=jsonpath='{range .status.conditions[*]}{.type}{"\t"}{.status}{"\t"}{.message}{"\n"}{end}'$ oc get hco -n openshift-cnv kubevirt-hyperconverged \ -o=jsonpath='{range .status.conditions[*]}{.type}{"\t"}{.status}{"\t"}{.message}{"\n"}{end}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow アップグレードが成功すると、以下の出力が得られます。
ReconcileComplete True Reconcile completed successfully Available True Reconcile completed successfully Progressing False Reconcile completed successfully Degraded False Reconcile completed successfully Upgradeable True Reconcile completed successfully
ReconcileComplete True Reconcile completed successfully Available True Reconcile completed successfully Progressing False Reconcile completed successfully Degraded False Reconcile completed successfully Upgradeable True Reconcile completed successfullyCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第5章 CLI ツールの使用 リンクのコピーリンクがクリップボードにコピーされました!
クラスターでリソースを管理するために使用される 2 つの主な CLI ツールは以下の通りです。
-
Container-native Virtualization
virtctlクライアント -
OpenShift Container Platform
ocクライアント
5.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
-
virtctlクライアントをインストール する必要があります。
5.2. Virtctl クライアントコマンド リンクのコピーリンクがクリップボードにコピーされました!
virtctl クライアントは、Container-native Virtualization リソースを管理するためのコマンドラインユーティリティーです。以下の表には、Container-native Virtualization のドキュメント全体で使用されている virtctl コマンドが記載されています。
コマンドで使用できるオプションの一覧を表示するには、これを -h または --help フラグを指定して実行します。以下は例になります。
virtctl image-upload -h
$ virtctl image-upload -h
| コマンド | 説明 |
|---|---|
|
| 仮想マシンを起動します。 |
|
| 仮想マシンを停止します。 |
|
| 仮想マシンまたは仮想マシンインスタンスを一時停止します。マシンの状態がメモリーに保持されます。 |
|
| 仮想マシンまたは仮想マシンインスタンスの一時停止を解除します。 |
|
| 仮想マシンを再起動します。 |
|
| 仮想マシンまたは仮想マシンインスタンスの指定されたポートを転送するサービスを作成し、このサービスをノードの指定されたポートで公開します。 |
|
| 仮想マシンインスタンスのシリアルコンソールに接続します。 |
|
| 仮想マシンインスタンスへの VNC 接続を開きます。 |
|
| 仮想マシンイメージをすでに存在する DataVolume にアップロードします。 |
|
| 仮想マシンイメージを新規 DataVolume にアップロードします。 |
5.3. OpenShift Container Platform クライアントコマンド リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform oc クライアントは、仮想マシン (vm) および仮想マシンインスタンス (vmi) オブジェクトタイプを含む、OpenShift Container Platform リソースを管理するためのコマンドラインユーティリティーです。
-n <namespace> フラグを使用して、別のプロジェクトを指定できます。
| コマンド | 説明 |
|---|---|
|
|
OpenShift Container Platform クラスターに |
|
| 現在のプロジェクトの指定されたオブジェクトタイプのオブジェクトの一覧を表示します。 |
|
| 現在のプロジェクトで特定のリソースの詳細を表示します。 |
|
| 現在のプロジェクトで、ファイル名または標準入力 (stdin) からリソースを作成します。 |
|
| 現在のプロジェクトのリソースを編集します。 |
|
| 現在のプロジェクトのリソースを削除します。 |
oc client コマンドについてのより総合的な情報については、OpenShift Container Platform CLI ツール のドキュメントを参照してください。
第6章 仮想マシン リンクのコピーリンクがクリップボードにコピーされました!
6.1. 仮想マシンの作成 リンクのコピーリンクがクリップボードにコピーされました!
以下のいずれかの手順を使用して、仮想マシンを作成します。
- 仮想マシンウィザードの実行
- 仮想マシンウィザードによる事前に設定された YAML ファイルの貼り付け
- CLI の使用
- 仮想マシンウィザードによる VMware 仮想マシンまたはテンプレートのインポート
openshift-* namespace に仮想マシンを作成しないでください。代わりに、openshift 接頭辞なしの新規 namespace を作成するか、または既存 namespace を使用します。
6.1.1. 仮想マシンウィザードの実行による仮想マシンの作成 リンクのコピーリンクがクリップボードにコピーされました!
Web コンソールは、General、 Networking、Storage、Advanced、および Review ステップに移動し、仮想マシンの作成プロセスを単純化するインタラクティブなウィザードを特長としています。すべての必須フィールドには * のマークが付けられます。必要なフィールドが完了したら、仮想マシンを確認し、これを作成することができます。
Network Interface Card (NIC) およびストレージディスクを作成し、それらの作成後に仮想マシンに割り当てることができます。
起動可能なディスク
URL または Container のいずれかが General ステップで Source として選択される場合、rootdisk ディスクが作成され、Bootable Disk として仮想マシンに割り当てられます。rootdisk を変更できますが、これを削除することはできません。
Bootable Disk は、仮想マシンにディスクが割り当てられていない場合、PXE ソースからプロビジョニングされる仮想マシンには不要です。1 つ以上のディスクが仮想マシンに割り当てられている場合、Bootable Disk を 1 つを選択する必要があります。
前提条件
- ウィザードを使用して仮想マシンを作成する場合、仮想マシンのストレージメディアは Read-Write-Many(RWX)PVC をサポートする必要があります。
手順
- サイドメニューから Workloads → Virtual Machines をクリックします。
- Create Virtual Machine をクリックし、New with Wizard を選択します。
- General ステップで必要なすべてのフィールドに入力します。Template を選択すると、これらのフィールドへの入力が自動的に行われます。
Next をクリックして Networking ステップに進みます。デフォルトで
nic0NIC が割り当てられます。- (オプション) Add Network Interface をクリックして追加の NIC を作成します。
-
(オプション) すべての NIC の削除は、Options メニュー
をクリックし、Delete を選択して実行できます。仮想マシンの作成において、NIC が割り当てられている必要はありません。NIC は仮想マシンの作成後に作成することができます。
Next をクリックして Storage 画面に進みます。
-
(オプション) Add Disk をクリックして追加のディスクを作成します。これらのディスクの削除は、Options メニュー
をクリックし、Delete を選択して実行できます。
-
(オプション) Options メニュー
をクリックし、ディスクを編集して変更内容を保存します。
-
(オプション) Add Disk をクリックして追加のディスクを作成します。これらのディスクの削除は、Options メニュー
- Review and Create をクリックします。Results 画面には、仮想マシンの JSON 設定ファイルが表示されます。
仮想マシンは Workloads → Virtual Machines に一覧表示されます。
Web コンソールウィザードを実行する際は、仮想マシンウィザードのフィールドを参照します。
6.1.1.1. 仮想マシンウィザードのフィールド リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | パラメーター | 説明 |
|---|---|---|
| Template | 仮想マシンの作成に使用するテンプレート。テンプレートを選択すると、他のフィールドが自動的に入力されます。 | |
| ソース | PXE | PXE メニューから仮想マシンをプロビジョニングします。クラスターに PXE 対応の NIC が必要になります。 |
| URL | HTTP または S3 エンドポイントで利用できるイメージから仮想マシンをプロビジョニングします。 | |
| コンテナー |
クラスターからアクセスできるレジストリーの起動可能なオペレーティングシステムコンテナーから仮想マシンをプロビジョニングします。例: | |
| Disk | ディスクから仮想マシンをプロビジョニングします。 | |
| Operating System | 仮想マシン用に選択される主なオペレーティングシステム。 | |
| Flavor | small、medium、large、tiny、Custom | 仮想マシンに割り当てられる CPU およびメモリーの量を決定するプリセット。Flavor に設定される Preset はオペレーティングシステムによって決まります。 |
| Memory | 仮想マシンに割り当てられるメモリーのサイズ (GiB 単位)。 | |
| CPU | 仮想マシンに割り当てられる CPU の量。 | |
| Workload Profile | High Performance | 高パフォーマンスのワークロードに対して最適化された仮想マシン設定。 |
| Server | サーバーワークロードの実行に最適化されたプロファイル。 | |
| Desktop | デスクトップで使用するための仮想マシン設定。 | |
| 名前 |
この名前には、小文字 ( | |
| 説明 | オプションの説明フィールド。 | |
| Start virtual machine on creation | これを選択すると、作成時に仮想マシンが自動的に起動します。 |
6.1.1.2. Cloud-init フィールド リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 |
|---|---|
| Hostname | 仮想マシンの特定のホスト名を設定します。 |
| Authenticated SSH Keys | 仮想マシンの ~/.ssh/authorized_keys にコピーされるユーザーの公開鍵。 |
| Use custom script | 他のオプションを、カスタム cloud-init スクリプトを貼り付けるフィールドに置き換えます。 |
6.1.1.3. CD-ROM フィールド リンクのコピーリンクがクリップボードにコピーされました!
| ソース | 説明 |
|---|---|
| Container |
コンテナーのパスを指定します。例: |
| URL | URL パスおよびサイズ (GiB 単位) を指定します。次に、ドロップダウンリストからこの URL のストレージクラスを選択します。 |
| Attach Disk | 割り当てる仮想マシンディスクを選択します。 |
6.1.1.4. ネットワークフィールド リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 |
|---|---|
| 名前 | ネットワークインターフェイスの名前。 |
| Model | ネットワークインターフェイスカードのモデルを示します。サポートされる値は、e1000、 e1000e、ne2k_pci、pcnet, rtl8139、および virtIO です。 |
| Network | 利用可能な NetworkAttachmentDefinition オブジェクトの一覧。 |
| Type |
利用可能なバインディングメソッドの一覧。デフォルトの Pod ネットワークについては、 |
| MAC Address | ネットワークインターフェイスの MAC アドレス。MAC アドレスが指定されていない場合、セッションの一時アドレスが生成されます。 |
6.1.1.5. ストレージフィールド リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 |
|---|---|
| ソース | 仮想マシンの空のディスクを選択するか、または URL、Container、Attach Cloned Disk、または Attach Disk などの選択可能なオプションから選択します。既存ディスクを選択し、これを仮想マシンに割り当てるには、利用可能な PersistentVolumeClaim (PVC) の一覧から Attach Cloned Disk または Attach Disk を選択します。 |
| 名前 |
ディスクの名前。この名前には、小文字 ( |
| Size (GiB) | ディスクのサイズ (GiB)。 |
| Interface | ディスクデバイスのタイプ。サポートされるインターフェイスは、virtIO、SATA、および SCSI です。 |
| Storage class |
ディスクの作成に使用される |
6.1.2. 仮想マシンウィザードの作成用の事前に設定された YAML ファイルの貼り付け リンクのコピーリンクがクリップボードにコピーされました!
Web コンソールの Workloads → Virtual Machines 画面で YAML 設定ファイルを作成するか、またはこれを貼り付けて仮想マシンを作成します。YAML 編集画面を開くと、常に有効な example 仮想マシン設定がデフォルトで提供されます。
Create をクリックする際に YAML 設定が無効な場合、エラーメッセージでエラーが発生したパラメーターが示唆されます。エラーは一度に 1 つのみ表示されます。
編集中に YAML 画面から離れると、設定に対して加えた変更が取り消されます。
手順
- サイドメニューから Workloads → Virtual Machines をクリックします。
- Create Virtual Machine をクリックし、New from YAML を選択します。
編集可能なウィンドウで仮想マシンの設定を作成するか、またはこれを貼り付けます。
-
または、YAML 画面にデフォルトで提供される
example仮想マシンを使用します。
-
または、YAML 画面にデフォルトで提供される
- (オプション) Download をクリックして YAML 設定ファイルをその現在の状態でダウンロードします。
- Create をクリックして仮想マシンを作成します。
仮想マシンは Workloads → Virtual Machines に一覧表示されます。
6.1.3. CLI の使用による仮想マシンの作成 リンクのコピーリンクがクリップボードにコピーされました!
手順
VirtualMachine 設定ファイルの spec オブジェクトは、コア数やメモリーの量、ディスクタイプおよび使用するボリュームなどの仮想マシン設定を参照します。
-
関連する PVC
claimNameをボリュームとして参照し、仮想マシンディスクを仮想マシンに割り当てます。 OpenShift Container Platform クライアントで仮想マシンを作成するには、以下のコマンドを実行します。
oc create -f <vm.yaml>
$ oc create -f <vm.yaml>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 仮想マシンは Stopped 状態で作成されるため、これを起動して仮想マシンインスタンスを実行します。
ReplicaSet は、一定数の同一 Pod の可用性を保証することを目的としています。現時点で、ReplicaSet は Container-native Virtualization でサポートされていません。
| 設定 | 説明 |
|---|---|
| Cores | 仮想マシン内のコア数。1 以上の値である必要があります。 |
| Memory | ノードによって仮想マシンに割り当てられる RAM の量。M (メガバイト) または Gi (ギガバイト) で値を指定します。 |
| ディスク | 参照されるボリュームの名前。ボリュームの名前に一致する必要があります。 |
| 設定 | 説明 |
|---|---|
| 名前 | ボリュームの名前。 DNS ラベルであり、仮想マシン内で一意である必要があります。 |
| PersistentVolumeClaim |
仮想マシンに割り当てる PVC。PVC の |
6.1.4. 仮想マシンのストレージボリュームタイプ リンクのコピーリンクがクリップボードにコピーされました!
仮想マシンのストレージボリュームタイプがドメインおよびボリューム設定と共に一覧表示されます。
| ephemeral | ネットワークボリュームを読み取り専用のバッキングストアとして使用するローカルの copy-on-write (COW) イメージ。バッキングボリュームは PersistentVolumeClaim である必要があります。一時イメージは仮想マシンの起動時に作成され、すべての書き込みをローカルに保存します。一時イメージは、仮想マシンの停止、再起動または削除時に破棄されます。バッキングボリューム (PVC) はいずれの方法でも変更されません。 |
| persistentVolumeClaim | 利用可能な PV を仮想マシンに割り当てます。PV の割り当てにより、仮想マシンデータのセッション間での永続化が可能になります。 CDI を使用して既存の仮想マシンディスクを PVC にインポートし、PVC を仮想マシンインスタンスに割り当てる方法は、既存の仮想マシンを OpenShift Container Platform にインポートするための推奨される方法です。ディスクを PVC 内で使用できるようにするためのいくつかの要件があります。 |
| dataVolume | DataVolume は、インポート、クローンまたはアップロード操作で仮想マシンディスクの準備プロセスを管理することによって persistentVolumeClaim ディスクタイプにビルドされます。このボリュームタイプを使用する仮想マシンは、ボリュームが準備できるまで起動しないことが保証されます。 |
| cloudInitNoCloud | 参照される cloud-init NoCloud データソースが含まれるディスクを割り当て、ユーザーデータおよびメタデータを仮想マシンに提供します。cloud-init インストールは仮想マシンディスク内で必要になります。 |
| containerDisk | コンテナーイメージレジストリーに保存される、仮想マシンディスクなどのイメージを参照します。イメージはレジストリーからプルされ、仮想マシンの作成時にボリュームに組み込まれます。containerDisk ボリュームは一時的なボリュームです。これは、仮想マシンが停止されるか、再起動するか、または削除される際に破棄されます。 コンテナーディスクは単一の仮想マシンに制限されず、永続ストレージを必要としない多数の仮想マシンのクローンを作成するのに役立ちます。 RAW および QCOW2 形式のみがコンテナーイメージレジストリーのサポートされるディスクタイプです。QCOW2 は、縮小されたイメージサイズの場合に推奨されます。 |
| emptyDisk | 仮想マシンインターフェイスのライフサイクルに関連付けられるスパースの QCOW2 ディスクを追加で作成します。データは仮想マシンのゲストによって実行される再起動後も存続しますが、仮想マシンが Web コンソールから停止または再起動する場合には破棄されます。空のディスクは、アプリケーションの依存関係および一時ディスクの一時ファイルシステムの制限を上回るデータを保存するために使用されます。 ディスク 容量 サイズも指定する必要があります。 |
6.1.5. 追加リソース リンクのコピーリンクがクリップボードにコピーされました!
KubeVirt v.0.26.5 API リファレンス の VirtualMachineSpec 定義は、仮想マシン仕様のパラメーターおよび階層のより範囲の広いコンテキストを提供します。
KubeVirt API リファレンスはアップストリームのプロジェクトリファレンスであり、Container-native Virtualization でサポートされていないパラメーターが含まれる場合があります。
6.2. 仮想マシンの編集 リンクのコピーリンクがクリップボードにコピーされました!
Web コンソールの YAML エディターまたはコマンドラインの OpenShift クライアントのいずれかを使用して、仮想マシン設定を更新できます。Web コンソールの Virtual Machine Overview でパラメーターのサブセットを更新することもできます。
6.2.1. Web コンソールでの仮想マシンの編集 リンクのコピーリンクがクリップボードにコピーされました!
関連するフィールドの横にある鉛筆アイコンをクリックして、Web コンソールの Virtual Machine Overview 画面で仮想マシンの選択する値 (select values) を編集します。他の値は、CLI を使用して編集できます。
手順
- サイドメニューから Workloads → Virtual Machines をクリックします。
- 仮想マシンを選択して、Virtual Machine Overview 画面を開きます。
- 鉛筆アイコンをクリックして、該当するフィールドを編集可能にします。
- 関連する変更を加え、Saveをクリックします。
仮想マシンが実行中の場合、変更内容は仮想マシンが再起動されるまで反映されません。
6.2.2. Web コンソールを使用した仮想マシンの YAML 設定の編集 リンクのコピーリンクがクリップボードにコピーされました!
Web コンソールを使用して、仮想マシンの YAML 設定を編集します。
すべてのパラメーターを更新できる訳ではありません。変更不可の値を編集し、Save をクリックすると、更新できなかったパラメーターを示すエラーメッセージが出されます。
YAML 設定は、仮想マシンが Running の場合に編集できますが、変更は仮想マシンが停止され、再度起動された後にのみ有効になります。
編集中に YAML 画面から離れると、設定に対して加えた変更が取り消されます。
手順
- サイドメニューから Workloads → Virtual Machine をクリックします。
- 仮想マシンを選択します。
- YAML タブをクリックして編集可能な設定を表示します。
- オプション: Download をクリックして YAML ファイルをその現在の状態でローカルにダウンロードできます。
- ファイルを編集し、Save をクリックします。
オブジェクトの更新されたバージョン番号を含む、変更が正常に行われたことを示す確認メッセージが表示されます。
6.2.3. CLI を使用した仮想マシン YAML 設定の編集 リンクのコピーリンクがクリップボードにコピーされました!
以下の手順を使用し、CLI を使用して仮想マシン YAML 設定を編集します。
前提条件
- YAML オブジェクト設定ファイルを使って仮想マシンを設定していること。
-
ocCLI をインストールしていること。
手順
以下のコマンドを実行して、仮想マシン設定を更新します。
oc edit <object_type> <object_ID>
$ oc edit <object_type> <object_ID>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - オブジェクト設定を開きます。
- YAML を編集します。
実行中の仮想マシンを編集する場合は、以下のいずれかを実行する必要があります。
- 仮想マシンの再起動
新規の設定を有効にするために、以下のコマンドを実行します。
oc apply <object_type> <object_ID>
$ oc apply <object_type> <object_ID>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.2.4. 仮想マシンへの仮想ディスクの追加 リンクのコピーリンクがクリップボードにコピーされました!
以下の手順を使用して仮想ディスクを仮想マシンに追加します。
手順
- Virtual Machines タブで、仮想マシンを選択します。
- Disks タブを選択します。
- Add Disks をクリックして、 Add Disk ウィンドウを開きます。
- Add Disk ウィンドウで、Source、Name、 Size、Interface、および Storage Class を指定します。
- ドロップダウンリストおよびチェックボックスを使用して、ディスク設定を編集します。
- OK をクリックします。
6.2.5. 仮想マシンへのネットワークインターフェイスの追加 リンクのコピーリンクがクリップボードにコピーされました!
以下の手順を使用してネットワークインターフェイスを仮想マシンに追加します。
手順
- Virtual Machines タブで、仮想マシンを選択します。
- Network Interfaces タブを選択します。
- Add Network Interface をクリックします。
- Add Network Interface ウィンドウで、ネットワークインターフェイスの Name、Model、Network、 Type、および MAC Address を指定します。
- Add をクリックしてネットワークインターフェイスを追加します。
- 仮想マシンを再起動して、アクセスを有効にします。
- ドロップダウンリストとチェックボックスを編集して、ネットワークインターフェイスを設定します。
- Save Changes をクリックします。
- OK をクリックします。
新規のネットワークインターフェイスは、ユーザーが再起動するまで Create Network Interface 一覧の上部に表示されます。
新規のネットワークインターフェイスには、仮想マシンを再起動するまで Pending VM restart のリンク状態が表示されます。Link State (リンク状態) にカーソルを合わせて詳細情報を表示します。
ネットワークインターフェイスカードが仮想マシンで定義され、ネットワークに接続されている場合は、Link State はデフォルトで Up に設定されます。
6.2.6. 仮想マシンの CD-ROM の編集 リンクのコピーリンクがクリップボードにコピーされました!
以下の手順を使用して、仮想マシンの CD-ROM を設定します。
手順
- Virtual Machines タブで、仮想マシンを選択します。
- Overview タブを選択します。
CD-ROM 設定を追加または編集するには、CD-ROMs ラベルの右側にある鉛筆アイコンをクリックします。Edit CD-ROM ウィンドウが開きます。
- CD-ROM が編集できない場合、以下のメッセージが表示されます: The virtual machine doesn't have any CD-ROMs attached.
- 利用可能な CD-ROM がある場合は、- をクリックして CD-ROM を削除できます。
Edit CD-ROM ウィンドウで、以下を実行します。
- Media Type のドロップダウンリストから CD-ROM 設定のタイプを選択します。CD-ROM 設定タイプは Container、URL、および Persistent Volume Claim です。
- それぞれの Type に必要な情報を入力します。
- すべての CD-ROM が追加されたら、Save をクリックします。
6.3. ブート順序の編集 リンクのコピーリンクがクリップボードにコピーされました!
Web コンソールまたは CLI を使用して、ブート順序リストの値を更新できます。
Virtual Machine Overview ページの Boot Order で、以下を実行できます。
- ディスクまたはネットワークインターフェイスカード (NIC) を選択し、これをブート順序の一覧に追加します。
- ブート順序の一覧でディスクまたは NIC の順序を編集します。
- ブート順序の一覧からディスクまたは NIC を削除して、起動可能なソースのインベントリーに戻します。
6.3.1. Web コンソールでのブート順序一覧への項目の追加 リンクのコピーリンクがクリップボードにコピーされました!
Web コンソールを使用して、ブート順序一覧に項目を追加します。
手順
- サイドメニューから Workloads → Virtual Machines をクリックします。
- 仮想マシンを選択して、Virtual Machine Overview 画面を開きます。
- Boot Order の右側にある鉛筆アイコンをクリックします。YAML 設定が存在しない場合や、これがブート順序一覧の初回作成時の場合、以下のメッセージが表示されます。No resource selected.VM will attempt to boot disks from YAML by order of appearance in YAMLv file.Please select a boot source.
- Add Source をクリックして、仮想マシンのブート可能なディスクまたはネットワークインターフェイスカード (NIC) を選択します。
- 追加のディスクまたは NIC をブート順序一覧に追加します。
- Save をクリックします。
6.3.2. Web コンソールでのブート順序一覧の編集 リンクのコピーリンクがクリップボードにコピーされました!
Web コンソールで起動順序一覧を編集します。
手順
- サイドメニューから Workloads → Virtual Machines をクリックします。
- 仮想マシンを選択して、Virtual Machine Overview 画面を開きます。
- Boot Order の右側にある鉛筆アイコンをクリックします。
ブート順序一覧で項目を移動するのに適した方法を選択します。
- スクリーンリーダーを使用しない場合、移動する項目の横にある矢印アイコンにカーソルを合わせ、項目を上下にドラッグし、選択した場所にドロップします。
- スクリーンリーダーを使用する場合は、上矢印キーまたは下矢印を押して、ブート順序一覧で項目を移動します。次に Tab キーを押して、選択した場所に項目をドロップします。
- Save をクリックします。
6.3.3. YAML 設定ファイルでのブート順序一覧の編集 リンクのコピーリンクがクリップボードにコピーされました!
CLI を使用して、YAML 設定ファイルのブート順序の一覧を編集します。
手順
以下のコマンドを実行して、仮想マシンの YAML 設定ファイルを開きます。
oc edit vm example
$ oc edit vm exampleCopy to Clipboard Copied! Toggle word wrap Toggle overflow YAML ファイルを編集し、ディスクまたはネットワークインターフェイスカード (NIC) に関連付けられたブート順序の値を変更します。以下は例になります。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - YAML ファイルを保存します。
- reload the content をクリックして、Web コンソールで YAML ファイルの更新されたブート順序の値をブート順序一覧に適用します。
6.3.4. Web コンソールでのブート順序一覧からの項目の削除 リンクのコピーリンクがクリップボードにコピーされました!
Web コンソールを使用して、ブート順序の一覧から項目を削除します。
手順
- サイドメニューから Workloads → Virtual Machines をクリックします。
- 仮想マシンを選択して、Virtual Machine Overview 画面を開きます。
- Boot Order の右側にある鉛筆アイコンをクリックします。
- 項目の横にある Remove アイコンをクリックします。この項目はブート順序の一覧から削除され、利用可能なブートソースの一覧に保存されます。ブート順序一覧からすべての項目を削除する場合、以下のメッセージが表示されます。No resource selected.VM will attempt to boot disks from YAML by order of appearance in YAML file.Please select a boot source.
6.4. 仮想マシンの削除 リンクのコピーリンクがクリップボードにコピーされました!
Web コンソールまたは oc コマンドラインインターフェイスを使用して、仮想マシンを削除できます。
6.4.1. Web コンソールの使用による仮想マシンの削除 リンクのコピーリンクがクリップボードにコピーされました!
仮想マシンを削除すると、仮想マシンはクラスターから永続的に削除されます。
仮想マシンを削除する際に、これが使用する DataVolume は自動的に削除されます。
手順
- Container-native Virtualization コンソールのサイドメニューから Workloads → Virtual Machines をクリックします。
削除する仮想マシンの ⋮ ボタンをクリックして Delete Virtual Machine を選択します。
- または、仮想マシン名をクリックして Virtual Machine Details 画面を開き、Actions → Delete Virtual Machine をクリックします。
- 確認のポップアップウィンドウで、Delete をクリックし、仮想マシンを永続的に削除します。
6.4.2. CLI の使用による仮想マシンの削除 リンクのコピーリンクがクリップボードにコピーされました!
oc コマンドラインインターフェイス (CLI) を使用して仮想マシンを削除できます。oc クライアントを使用すると、複数の仮想マシンで各種のアクションを実行できます。
仮想マシンを削除する際に、これが使用する DataVolume は自動的に削除されます。
前提条件
- 削除する仮想マシンの名前を特定すること。
手順
以下のコマンドを実行し、仮想マシンを削除します。
oc delete vm <vm_name>
$ oc delete vm <vm_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記このコマンドは、現在のプロジェクトに存在するオブジェクトのみを削除します。削除する必要のあるオブジェクトが別のプロジェクトまたは namespace にある場合、
-n <project_name>オプションを指定します。
6.5. 仮想マシンインスタンスの削除 リンクのコピーリンクがクリップボードにコピーされました!
仮想マシンを削除する際に、関連付けられた VMI は自動的に削除されます。仮想マシンインスタンス (VMI) を手動で削除するには、oc コマンドラインインターフェイス (CLI) を使用します。
以下の手順を使用して、Container-native Virtualization をアンインストールする前に、未処理の VMI を確認して削除します。
6.5.1. 仮想マシンインスタンスの一覧表示 リンクのコピーリンクがクリップボードにコピーされました!
oc コマンドラインインターフェイス (CLI) を使用して、クラスターの仮想マシンインスタンスを一覧表示できます。
手順
以下のコマンドを実行して、仮想マシンインスタンスの一覧を表示します。
oc get vmis
$ oc get vmisCopy to Clipboard Copied! Toggle word wrap Toggle overflow
6.5.2. 仮想マシンインスタンスの削除 リンクのコピーリンクがクリップボードにコピーされました!
oc コマンドラインインターフェイス (CLI) を使用して仮想マシンインスタンスを削除できます。
前提条件
- 削除する必要のある仮想マシンインスタンスの名前を特定します。
手順
以下のコマンドを実行し、仮想マシンインスタンスを削除します。
oc delete vmi <vmi_name>
$ oc delete vmi <vmi_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記このコマンドは、現在のプロジェクトに存在するオブジェクトのみを削除します。削除する必要のあるオブジェクトが別のプロジェクトまたは namespace にある場合、
-n <project_name>オプションを指定します。
6.6. 仮想マシンの状態の制御 リンクのコピーリンクがクリップボードにコピーされました!
Web コンソールから仮想マシンを停止し、起動し、再起動し、一時停止を解除することができます。
コマンドラインインターフェイス (CLI) から仮想マシンを制御するには、virtctl クライアント を使用します。
6.6.1. 仮想マシンの起動 リンクのコピーリンクがクリップボードにコピーされました!
Web コンソールから仮想マシンを起動できます。
手順
- Workloads → Virtual Machines をクリックします。
- 起動する仮想マシンが含まれる行を見つけます。
ユースケースに適したメニューに移動します。
複数の仮想マシンでのアクションの実行が可能なこのページに留まるには、以下を実行します。
-
行の右端にある Options メニュー
をクリックします。
-
行の右端にある Options メニュー
選択した仮想マシンを起動する前に、その仮想マシンの総合的な情報を表示するには、以下を実行します。
- 仮想マシンの名前をクリックして、Virtual Machine Details ページにアクセスします。
- Actions をクリックします。
- Start Virtual Machine を選択します。
- 確認ウィンドウで Start をクリックし、仮想マシンを起動します。
URL ソースからプロビジョニングされる仮想マシンの初回起動時に、Container-native Virtualization が URL エンドポイントからコンテナーをインポートする間、仮想マシンの状態は Importing になります。このプロセスは、イメージのサイズによって数分の時間がかかる可能性があります。
6.6.2. 仮想マシンの再起動 リンクのコピーリンクがクリップボードにコピーされました!
Web コンソールから実行中の仮想マシンを再起動できます。
エラーを回避するには、ステータスが Importing の仮想マシンは再起動しないでください。
手順
- Workloads → Virtual Machines をクリックします。
- 再起動する仮想マシンが含まれる行を見つけます。
ユースケースに適したメニューに移動します。
複数の仮想マシンでのアクションの実行が可能なこのページに留まるには、以下を実行します。
-
行の右端にある Options メニュー
をクリックします。
-
行の右端にある Options メニュー
選択した仮想マシンを再起動する前に、その仮想マシンの総合的な情報を表示するには、以下を実行します。
- 仮想マシンの名前をクリックして、Virtual Machine Details ページにアクセスします。
- Actions をクリックします。
- Restart Virtual Machine を選択します。
- 確認ウィンドウで Restart をクリックし、仮想マシンを再起動します。
6.6.3. 仮想マシンの停止 リンクのコピーリンクがクリップボードにコピーされました!
Web コンソールから仮想マシンを停止できます。
手順
- Workloads → Virtual Machines をクリックします。
- 停止する仮想マシンが含まれる行を見つけます。
ユースケースに適したメニューに移動します。
複数の仮想マシンでのアクションの実行が可能なこのページに留まるには、以下を実行します。
-
行の右端にある Options メニュー
をクリックします。
-
行の右端にある Options メニュー
選択した仮想マシンを停止する前に、その仮想マシンの総合的な情報を表示するには、以下を実行します。
- 仮想マシンの名前をクリックして、Virtual Machine Details ページにアクセスします。
- Actions をクリックします。
- Stop Virtual Machine を選択します。
- 確認ウィンドウで Stop をクリックし、仮想マシンを停止します。
6.6.4. 仮想マシンの一時停止の解除 リンクのコピーリンクがクリップボードにコピーされました!
Web コンソールから仮想マシンの一時停止を解除できます。
前提条件
1 つ以上の仮想マシンのステータスが Paused である必要がある。
注記virtctlクライアントを使用して仮想マシンを一時停止することができます。
手順
- Workloads → Virtual Machines をクリックします。
- 一時停止を解除する仮想マシンが含まれる行を見つけます。
ユースケースに適したメニューに移動します。
複数の仮想マシンでのアクションの実行が可能なこのページに留まるには、以下を実行します。
- Status 列で、Paused をクリックします。
選択した仮想マシンの一時停止を解除する前に、その仮想マシンの総合的な情報を表示するには、以下を実行します。
- 仮想マシンの名前をクリックして、Virtual Machine Details ページにアクセスします。
- Status の右側にある鉛筆アイコンをクリックします。
- 確認ウィンドウで Stop をクリックし、仮想マシンの一時停止を解除します。
6.7. 仮想マシンコンソールへのアクセス リンクのコピーリンクがクリップボードにコピーされました!
Container-native Virtualization は、異なる製品タスクを実現するために使用できる異なる仮想マシンコンソールを提供します。Web コンソールおよび CLI コマンドを使用してこれらのコンソールにアクセスできます。
6.7.1. 仮想マシンコンソールのセッション リンクのコピーリンクがクリップボードにコピーされました!
Web コンソールの Virtual Machine Details 画面の Consoles タブから、実行中の仮想マシンの VNC およびシリアルコンソールに接続することができます。
グラフィカルな VNC コンソール と シリアルコンソール の 2 つのコンソールを使用できます。VNC コンソール は、Consoles タブに移動する際には常にデフォルトで開きます。VNC ConsoleSerial Console リストを使用してコンソールを切り換えることができます。
コンソールのセッションは切断しない限り、バックグラウンドでアクティブな状態のままになります。Disconnect before switching チェックボックスがアクティブな場合にコンソールを切り替えると、現在のコンソールセッションは切断され、選択したコンソールの新規セッションが仮想マシンに接続されます。これにより、一度に 1 つのコンソールセッションのみが開かれます。
VNC コンソール のオプション
Send Key ボタンでは、仮想マシンに送信するキーの組み合わせを一覧表示します。
シリアルコンソール のオプション
Disconnect ボタンを使用して、仮想マシンから Serial Console セッションを手動で切断します。
Reconnect ボタンを使用して Serial Console セッションを仮想マシンに対して手動で開きます。
6.7.2. Web コンソールの使用による仮想マシンへの接続 リンクのコピーリンクがクリップボードにコピーされました!
6.7.2.1. ターミナルへの接続 リンクのコピーリンクがクリップボードにコピーされました!
Web コンソールを使用して仮想マシンに接続することができます。
手順
- 正しいプロジェクトを指定していることを確認します。そうでない場合は、Project 一覧をクリックして適切なプロジェクトを選択します。
- Workloads → Virtual Machines をクリックして、プロジェクトに仮想マシンを表示します。
- 仮想マシンを選択します。
-
Overview タブで、
virt-launcher-<vm-name>Pod をクリックします。 - Terminal タブをクリックします。ターミナルが空白の場合、ターミナルをクリックし、任意のキーを押して接続を開始します。
6.7.2.2. シリアルコンソールへの接続 リンクのコピーリンクがクリップボードにコピーされました!
Web コンソールの Virtual Machine Details 画面の Consoles タブから、実行中の仮想マシンの Serial Console に接続します。
手順
- Container-native Virtualization コンソールで Workloads → Virtual Machinesをクリックします。
- 仮想マシンを選択します。
- Consoles をクリックします。VNC コンソールがデフォルトで開きます。
- VNC Console ドロップダウンリストをクリックし、Serial Console を選択します。
6.7.2.3. VNC コンソールへの接続 リンクのコピーリンクがクリップボードにコピーされました!
Web コンソールの Virtual Machine Details 画面の Consoles タブから、実行中の仮想マシンの VNC コンソールに接続します。
手順
- Container-native Virtualization コンソールで Workloads → Virtual Machinesをクリックします。
- 仮想マシンを選択します。
- Consoles をクリックします。VNC コンソールがデフォルトで開きます。
6.7.2.4. RDP コンソールへの接続 リンクのコピーリンクがクリップボードにコピーされました!
Remote Desktop Protocol (RDP) を使用するデスクトップビューアーコンソールは、Windows 仮想マシンに接続するためのより使いやすいコンソールを提供します。
RDP を使用して Windows 仮想マシンに接続するには、Web コンソールの Virtual Machine Details 画面の Consoles タブから仮想マシンの console.rdp ファイルをダウンロードし、これを優先する RDP クライアントに指定します。
前提条件
-
QEMU ゲストエージェントがインストールされた実行中の Windows 仮想マシン。
qemu-guest-agentは VirtIO ドライバーに含まれています。 - 仮想マシンに接続された layer-2 NIC。
- Windows 仮想マシンと同じネットワーク上のマシンにインストールされた RDP クライアント。
手順
- Container-native Virtualization コンソールで Workloads → Virtual Machinesをクリックします。
- Windows 仮想マシンを選択します。
- Consoles タブをクリックします。
- Consoles 一覧をクリックし、Desktop Viewer を選択します。
- Network Interface 一覧で、 layer-2 NIC を選択します。
-
Launch Remote Desktop をクリックし、
console.rdpファイルをダウンロードします。 RDP クライアントを開き、
console.rdpファイルを参照します。たとえば、remmina を使用します。remmina --connect /path/to/console.rdp
$ remmina --connect /path/to/console.rdpCopy to Clipboard Copied! Toggle word wrap Toggle overflow - Administrator ユーザー名およびパスワードを入力して、Windows 仮想マシンに接続します。
6.7.3. CLI コマンドの使用による仮想マシンコンソールへのアクセス リンクのコピーリンクがクリップボードにコピーされました!
6.7.3.1. SSH 経由での仮想マシンインスタンスへのアクセス リンクのコピーリンクがクリップボードにコピーされました!
仮想マシンにポート 22 を公開した後に、SSH を使用して仮想マシンにアクセスできます。
virtctl expose コマンドは、仮想マシンインスタンスのポートをノードポートに転送し、有効にされたアクセスのサービスを作成します。以下の例では、fedora-vm-ssh サービスを作成します。 このサービスは、<fedora-vm> 仮想マシンのポート 22 をノード上のポートに転送します。
前提条件
- 仮想マシンインスタンスと同じプロジェクトにいる必要があります。
-
アクセスする仮想マシンインスタンスは、
masqueradeバインディングメソッド方法を使用してデフォルトの Pod ネットワークに接続されている。 - アクセスする仮想マシンインスタンスが実行中であること。
-
OpenShift CLI (
oc) をインストールします。
手順
以下のコマンドを実行して
fedora-vm-sshサービスを作成します。virtctl expose vm <fedora-vm> --port=20022 --target-port=22 --name=fedora-vm-ssh --type=NodePort
$ virtctl expose vm <fedora-vm> --port=20022 --target-port=22 --name=fedora-vm-ssh --type=NodePort1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<fedora-vm>は、fedora-vm-sshサービスを実行する仮想マシンの名前です。
サービスをチェックし、サービスが取得したポートを見つけます。
oc get svc
$ oc get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE fedora-vm-ssh NodePort 127.0.0.1 <none> 20022:32551/TCP 6sCopy to Clipboard Copied! Toggle word wrap Toggle overflow この例では、サービスは
32551ポートを取得しています。SSH 経由で仮想マシンインスタンスにログインします。ノードの
ipAddressおよび直前の手順で確認したポートを使用します。ssh username@<node_IP_address> -p 32551
$ ssh username@<node_IP_address> -p 32551Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.7.3.2. 仮想マシンインスタンスのシリアルコンソールへのアクセス リンクのコピーリンクがクリップボードにコピーされました!
virtctl console コマンドは、指定された仮想マシンインスタンスへのシリアルコンソールを開きます。
前提条件
-
virt-viewerパッケージがインストールされていること。 - アクセスする仮想マシンインスタンスが実行中であること。
手順
virtctlでシリアルコンソールに接続します。virtctl console <VMI>
$ virtctl console <VMI>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.7.3.3. VNC を使用した仮想マシンインスタンスのグラフィカルコンソールへのアクセス リンクのコピーリンクがクリップボードにコピーされました!
virtctl クライアントユーティリティーは remote-viewer 機能を使用し、実行中の仮想マシンインスタンスに対してグラフィカルコンソールを開くことができます。この機能は virt-viewer パッケージに組み込まれています。
前提条件
-
virt-viewerパッケージがインストールされていること。 - アクセスする仮想マシンインスタンスが実行中であること。
リモートマシンで SSH 経由で virtctl を使用する場合、X セッションをマシンに転送する必要があります。
手順
virtctlユーティリティーを使用してグラフィカルインターフェイスに接続します。virtctl vnc <VMI>
$ virtctl vnc <VMI>Copy to Clipboard Copied! Toggle word wrap Toggle overflow コマンドが失敗した場合には、トラブルシューティング情報を収集するために
-vフラグの使用を試行します。virtctl vnc <VMI> -v 4
$ virtctl vnc <VMI> -v 4Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.7.3.4. RDP コンソールの使用による Windows 仮想マシンへの接続 リンクのコピーリンクがクリップボードにコピーされました!
Remote Desktop Protocol (RDP) は、Windows 仮想マシンに接続するためのより使いやすいコンソールを提供します。
RDP を使用して Windows 仮想マシンに接続するには、割り当てられた L2 NIC の IP アドレスを RDP クライアントに対して指定します。
前提条件
-
QEMU ゲストエージェントがインストールされた実行中の Windows 仮想マシン。
qemu-guest-agentは VirtIO ドライバーに含まれています。 - 仮想マシンに接続された layer-2 NIC。
- Windows 仮想マシンと同じネットワーク上のマシンにインストールされた RDP クライアント。
手順
アクセストークンを持つユーザーとして、
ocCLI ツールを使って Container-native Virtualization クラスターにログインします。oc login -u <user> https://<cluster.example.com>:8443
$ oc login -u <user> https://<cluster.example.com>:8443Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc describe vmiを使用して、実行中の Windows 仮想マシンの設定を表示します。oc describe vmi <windows-vmi-name>
$ oc describe vmi <windows-vmi-name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
レイヤー 2 ネットワークインターフェイスの IP アドレスを特定し、これをコピーします。これは直前の例では
192.0.2.0であり、IPv6 を選択する場合は2001:db8::になります。 - RDP クライアントを開き、接続用に直前の手順でコピーした IP アドレスを使用します。
- Administrator ユーザー名およびパスワードを入力して、Windows 仮想マシンに接続します。
6.8. VirtIO ドライバーの既存の Windows 仮想マシンへのインストール リンクのコピーリンクがクリップボードにコピーされました!
6.8.1. VirtIO ドライバーについて リンクのコピーリンクがクリップボードにコピーされました!
VirtIO ドライバーは、Microsoft Windows 仮想マシンが Container-native Virtualization で実行されるために必要な準仮想化デバイスドライバーです。サポートされるドライバーは、Red Hat Container Catalog の container-native-virtualization/virtio-win コンテナーディスクで利用できます。
container-native-virtualization/virtio-win コンテナーディスクは、ドライバーのインストールを有効にするために SATA CD ドライブとして仮想マシンに割り当てられる必要があります。仮想マシン上での Windows のインストール時に VirtIO ドライバーをインストールすることも、既存の Windows インストールに追加することもできます。
ドライバーのインストール後に、container-native-virtualization/virtio-win コンテナーディスクは仮想マシンから削除できます。
Installing Virtio drivers on a new Windows virtual machine も参照してください。
6.8.2. Microsoft Windows 仮想マシンのサポートされる VirtIO ドライバー リンクのコピーリンクがクリップボードにコピーされました!
| ドライバー名 | ハードウェア ID | 説明 |
|---|---|---|
| viostor |
VEN_1AF4&DEV_1001 | ブロックドライバー。Other devices グループの SCSI Controller として表示される場合があります。 |
| viorng |
VEN_1AF4&DEV_1005 | エントロピーソースドライバー。Other devices グループの PCI Device として表示される場合があります。 |
| NetKVM |
VEN_1AF4&DEV_1000 | ネットワークドライバー。Other devices グループの Ethernet Controller として表示される場合があります。VirtIO NIC が設定されている場合にのみ利用できます。 |
6.8.3. VirtIO ドライバーコンテナーディスクの仮想マシンへの追加 リンクのコピーリンクがクリップボードにコピーされました!
Container-native Virtualization は、Red Hat Container Catalog で利用できる Microsoft Windows の VirtIO ドライバーをコンテナーディスクとして配布します。これらのドライバーを Windows 仮想マシンにインストールするには、仮想マシン設定ファイルで container-native-virtualization/virtio-win コンテナーディスクを SATA CD ドライブとして仮想マシンに割り当てます。
前提条件
-
container-native-virtualization/virtio-winコンテナーディスクを Red Hat Container Catalog からダウンロードすること。コンテナーディスクがクラスターにない場合は Red Hat レジストリーからダウンロードされるため、これは必須ではありません。
手順
container-native-virtualization/virtio-winコンテナーディスクをcdromディスクとして Windows 仮想マシン設定ファイルに追加します。コンテナーディスクは、クラスターにない場合はレジストリーからダウンロードされます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Container-native Virtualization は、
VirtualMachine設定ファイルに定義される順序で仮想マシンディスクを起動します。container-native-virtualization/virtio-winコンテナーディスクの前に仮想マシンの他のディスクを定義するか、またはオプションのbootOrderパラメーターを使用して仮想マシンが正しいディスクから起動するようにできます。ディスクにbootOrderを指定する場合、これは設定のすべてのディスクに指定される必要があります。
ディスクは、仮想マシンが起動すると利用可能になります。
-
コンテナーディスクを実行中の仮想マシンに追加する場合、変更を有効にするために CLI で
oc apply -f <vm.yaml>を使用するか、または仮想マシンを再起動します。 -
仮想マシンが実行されていない場合、
virtctl start <vm>を使用します。
-
コンテナーディスクを実行中の仮想マシンに追加する場合、変更を有効にするために CLI で
仮想マシンが起動したら、VirtIO ドライバーを割り当てられた SATA CD ドライブからインストールできます。
6.8.4. VirtIO ドライバーの既存 Windows 仮想マシンへのインストール リンクのコピーリンクがクリップボードにコピーされました!
VirtIO ドライバーを、割り当てられた SATA CD ドライブから既存の Windows 仮想マシンにインストールします。
この手順では、ドライバーを Windows に追加するための汎用的なアプローチを使用しています。このプロセスは Windows のバージョンごとに若干異なる可能性があります。特定のインストール手順については、お使いの Windows バージョンについてのインストールドキュメントを参照してください。
手順
- 仮想マシンを起動し、グラフィカルコンソールに接続します。
- Windows ユーザーセッションにログインします。
Device Manager を開き、Other devices を拡張して、Unknown device を一覧表示します。
-
Device Propertiesを開いて、不明なデバイスを特定します。デバイスを右クリックし、Properties を選択します。 - Details タブをクリックし、Property リストで Hardware Ids を選択します。
- Hardware Ids の Value をサポートされる VirtIO ドライバーと比較します。
-
- デバイスを右クリックし、Update Driver Software を選択します。
- Browse my computer for driver software をクリックし、VirtIO ドライバーが置かれている割り当て済みの SATA CD ドライブの場所に移動します。ドライバーは、ドライバーのタイプ、オペレーティングシステム、および CPU アーキテクチャー別に階層的に編成されます。
- Next をクリックしてドライバーをインストールします。
- 必要なすべての VirtIO ドライバーに対してこのプロセスを繰り返します。
- ドライバーのインストール後に、Close をクリックしてウィンドウを閉じます。
- 仮想マシンを再起動してドライバーのインストールを完了します。
6.8.5. 仮想マシンからの VirtIO コンテナーディスクの削除 リンクのコピーリンクがクリップボードにコピーされました!
必要なすべての VirtIO ドライバーを仮想マシンにインストールした後は、container-native-virtualization/virtio-win コンテナーディスクを仮想マシンに割り当てる必要はなくなります。container-native-virtualization/virtio-win コンテナーディスクを仮想マシン設定ファイルから削除します。
手順
設定ファイルを編集し、
diskおよびvolumeを削除します。oc edit vm <vm-name>
$ oc edit vm <vm-name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を有効にするために仮想マシンを再起動します。
6.9. VirtIO ドライバーの新規 Windows 仮想マシンへのインストール リンクのコピーリンクがクリップボードにコピーされました!
6.9.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- 仮想マシンからアクセスできる Windows インストールメディア (ISO のデータボリュームへのインポート および仮想マシンへの割り当てを実行)。
6.9.2. VirtIO ドライバーについて リンクのコピーリンクがクリップボードにコピーされました!
VirtIO ドライバーは、Microsoft Windows 仮想マシンが Container-native Virtualization で実行されるために必要な準仮想化デバイスドライバーです。サポートされるドライバーは、Red Hat Container Catalog の container-native-virtualization/virtio-win コンテナーディスクで利用できます。
container-native-virtualization/virtio-win コンテナーディスクは、ドライバーのインストールを有効にするために SATA CD ドライブとして仮想マシンに割り当てられる必要があります。仮想マシン上での Windows のインストール時に VirtIO ドライバーをインストールすることも、既存の Windows インストールに追加することもできます。
ドライバーのインストール後に、container-native-virtualization/virtio-win コンテナーディスクは仮想マシンから削除できます。
VirtIO ドライバーの既存の Windows 仮想マシンへのインストール も参照してください。
6.9.3. Microsoft Windows 仮想マシンのサポートされる VirtIO ドライバー リンクのコピーリンクがクリップボードにコピーされました!
| ドライバー名 | ハードウェア ID | 説明 |
|---|---|---|
| viostor |
VEN_1AF4&DEV_1001 | ブロックドライバー。Other devices グループの SCSI Controller として表示される場合があります。 |
| viorng |
VEN_1AF4&DEV_1005 | エントロピーソースドライバー。Other devices グループの PCI Device として表示される場合があります。 |
| NetKVM |
VEN_1AF4&DEV_1000 | ネットワークドライバー。Other devices グループの Ethernet Controller として表示される場合があります。VirtIO NIC が設定されている場合にのみ利用できます。 |
6.9.4. VirtIO ドライバーコンテナーディスクの仮想マシンへの追加 リンクのコピーリンクがクリップボードにコピーされました!
Container-native Virtualization は、Red Hat Container Catalog で利用できる Microsoft Windows の VirtIO ドライバーをコンテナーディスクとして配布します。これらのドライバーを Windows 仮想マシンにインストールするには、仮想マシン設定ファイルで container-native-virtualization/virtio-win コンテナーディスクを SATA CD ドライブとして仮想マシンに割り当てます。
前提条件
-
container-native-virtualization/virtio-winコンテナーディスクを Red Hat Container Catalog からダウンロードすること。コンテナーディスクがクラスターにない場合は Red Hat レジストリーからダウンロードされるため、これは必須ではありません。
手順
container-native-virtualization/virtio-winコンテナーディスクをcdromディスクとして Windows 仮想マシン設定ファイルに追加します。コンテナーディスクは、クラスターにない場合はレジストリーからダウンロードされます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Container-native Virtualization は、
VirtualMachine設定ファイルに定義される順序で仮想マシンディスクを起動します。container-native-virtualization/virtio-winコンテナーディスクの前に仮想マシンの他のディスクを定義するか、またはオプションのbootOrderパラメーターを使用して仮想マシンが正しいディスクから起動するようにできます。ディスクにbootOrderを指定する場合、これは設定のすべてのディスクに指定される必要があります。
ディスクは、仮想マシンが起動すると利用可能になります。
-
コンテナーディスクを実行中の仮想マシンに追加する場合、変更を有効にするために CLI で
oc apply -f <vm.yaml>を使用するか、または仮想マシンを再起動します。 -
仮想マシンが実行されていない場合、
virtctl start <vm>を使用します。
-
コンテナーディスクを実行中の仮想マシンに追加する場合、変更を有効にするために CLI で
仮想マシンが起動したら、VirtIO ドライバーを割り当てられた SATA CD ドライブからインストールできます。
6.9.5. Windows インストール時の VirtIO ドライバーのインストール リンクのコピーリンクがクリップボードにコピーされました!
Windows のインストール時に割り当てられた SATA CD ドライバーから VirtIO ドライバーをインストールします。
この手順では、Windows インストールの汎用的なアプローチを使用しますが、インストール方法は Windows のバージョンごとに異なる可能性があります。インストールする Windows のバージョンについてのドキュメントを参照してください。
手順
- 仮想マシンを起動し、グラフィカルコンソールに接続します。
- Windows インストールプロセスを開始します。
- Advanced インストールを選択します。
-
ストレージの宛先は、ドライバーがロードされるまで認識されません。
Load driverをクリックします。 - ドライバーは SATA CD ドライブとして割り当てられます。OK をクリックし、CD ドライバーでロードするストレージドライバーを参照します。ドライバーは、ドライバーのタイプ、オペレーティングシステム、および CPU アーキテクチャー別に階層的に編成されます。
- 必要なすべてのドライバーについて直前の 2 つの手順を繰り返します。
- Windows インストールを完了します。
6.9.6. 仮想マシンからの VirtIO コンテナーディスクの削除 リンクのコピーリンクがクリップボードにコピーされました!
必要なすべての VirtIO ドライバーを仮想マシンにインストールした後は、container-native-virtualization/virtio-win コンテナーディスクを仮想マシンに割り当てる必要はなくなります。container-native-virtualization/virtio-win コンテナーディスクを仮想マシン設定ファイルから削除します。
手順
設定ファイルを編集し、
diskおよびvolumeを削除します。oc edit vm <vm-name>
$ oc edit vm <vm-name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を有効にするために仮想マシンを再起動します。
6.10. 高度な仮想マシン管理 リンクのコピーリンクがクリップボードにコピーされました!
6.10.1. 管理タスクの自動化 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Ansible Automation Platform を使用すると、Container-native Virtualization 管理タスクを自動化できます。Ansible Playbook を使用して新規の仮想マシンを作成する際の基本事項を確認します。
6.10.1.1. Red Hat Ansible Automation について リンクのコピーリンクがクリップボードにコピーされました!
Ansible は、システムの設定、ソフトウェアのデプロイ、およびローリング更新の実行に使用する自動化ツールです。Ansible には Container-native Virtualization のサポートが含まれ、Ansible モジュールを使用すると、テンプレート、永続ボリューム要求 (PVC) および仮想マシンの操作などのクラスター管理タスクを自動化できます。
Ansible は、oc CLI ツールや API を使用しても実行できる Container-native Virtualization の管理を自動化する方法を提供します。Ansible は、KubeVirt モジュール を他の Ansible モジュールと統合できる点でユニークであると言えます。
6.10.1.2. 仮想マシン作成の自動化 リンクのコピーリンクがクリップボードにコピーされました!
kubevirt_vm Ansible Playbook を使用し、Red Hat Ansible Automation Platform を使用して OpenShift Container Platform クラスターに仮想マシンを作成できます。
前提条件
- Red Hat Ansible Engine バージョン 2.8 以降。
手順
kubevirt_vmタスクを含むように Ansible Playbook YAML ファイルを編集します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記このスニペットには Playbook の
kubevirt_vm部分のみが含まれます。namespace、cpu_coresの数、memory、およびdisksを含む、作成する必要のある仮想マシンを反映させるように値を編集します。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 仮想マシンを作成後すぐに起動する必要がある場合には、
state: runningを YAML ファイルに追加します。以下に例を示します。kubevirt_vm: namespace: default name: vm1 state: running cpu_cores: 1kubevirt_vm: namespace: default name: vm1 state: running1 cpu_cores: 1Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- この値を
state: absentに変更すると、すでに存在する場合に仮想マシンは削除されます。
Playbook のファイル名を引数としてのみ使用して、
ansible-playbookコマンドを実行します。ansible-playbook create-vm.yaml
$ ansible-playbook create-vm.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力を確認し、プレイが正常に実行されたかどうかを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Playbook ファイルに
state: runningを含めず、すぐに仮想マシンを起動する必要がある場合には、state: runningを含めるようにファイルを編集し、Playbook を再度実行します。ansible-playbook create-vm.yaml
$ ansible-playbook create-vm.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
仮想マシンが作成されたことを確認するには、仮想マシンコンソールへのアクセス を試行します。
6.10.1.3. 例: 仮想マシンを作成するための Ansible Playbook リンクのコピーリンクがクリップボードにコピーされました!
kubevirt_vm Ansible Playbook を使用して仮想マシン作成を自動化できます。
以下の YAML ファイルは kubevirt_vm Playbook の例です。これには、Playbook を実行する際に独自の情報を置き換える必要のあるサンプルの値が含まれます。
6.10.2. 仮想マシンの PXE ブートの設定 リンクのコピーリンクがクリップボードにコピーされました!
PXE ブートまたはネットワークブートは Container-native Virtualization で利用できます。ネットワークブートにより、ローカルに割り当てられたストレージデバイスなしにコンピューターを起動し、オペレーティングシステムまたは他のプログラムを起動し、ロードすることができます。たとえば、これにより、新規ホストのデプロイ時に PXE サーバーから必要な OS イメージを選択できます。
6.10.2.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- Linux ブリッジが 接続されていること。
- PXE サーバーがブリッジとして同じ VLAN に接続されていること。
6.10.2.2. 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)
- 管理者がネットワーク経由でサーバーからクライアントマシンを起動できるようにするインターフェイス。ネットワークのブートにより、オペレーティングシステムおよび他のソフトウェアをクライアントにリモートでロードできます。
6.10.2.3. MAC アドレスを指定した PXE ブート リンクのコピーリンクがクリップボードにコピーされました!
まず、管理者は PXE ネットワークの NetworkAttachmentDefinition オブジェクトを作成し、ネットワーク経由でクライアントを起動できます。次に、仮想マシンインスタンスの設定ファイルで NetworkAttachmentDefinition を参照して仮想マシンインスタンスを起動します。また PXE サーバーで必要な場合には、仮想マシンインスタンスの設定ファイルで MAC アドレスを指定することもできます。
前提条件
- Linux ブリッジが接続されていること。
- PXE サーバーがブリッジとして同じ VLAN に接続されていること。
手順
クラスターに PXE ネットワークを設定します。
PXE ネットワーク
pxe-net-confの NetworkAttachmentDefinition ファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
cnv-tuningプラグインは、カスタム MAC アドレスのサポートを提供します。
注記仮想マシンインスタンスは、必要な VLAN のアクセスポートでブリッジ
br1に割り当てられます。
直前の手順で作成したファイルを使用して NetworkAttachmentDefinition オブジェクトを作成します。
oc create -f pxe-net-conf.yaml
$ oc create -f pxe-net-conf.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 仮想マシンインスタンス設定ファイルを、インターフェイスおよびネットワークの詳細を含めるように編集します。
PXE サーバーで必要な場合には、ネットワークおよび MAC アドレスを指定します。MAC アドレスが指定されていない場合、値は自動的に割り当てられます。ただし、この時点で自動的に割り当てられる MAC アドレスは永続しないことに注意してください。
bootOrderが1に設定されており、インターフェイスが最初に起動することを確認します。この例では、インターフェイスは<pxe-net>というネットワークに接続されています。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記複数のインターフェイスおよびディスクのブートの順序はグローバル順序になります。
オペレーティングシステムのプロビジョニング後に起動が適切に実行されるよう、ブートデバイス番号をディスクに割り当てます。
ディスク
bootOrderの値を2に設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 直前に作成された NetworkAttachmentDefinition に接続されるネットワークを指定します。このシナリオでは、
<pxe-net>は<pxe-net-conf>という NetworkAttachmentDefinition に接続されます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
仮想マシンインスタンスを作成します。
oc create -f vmi-pxe-boot.yaml
$ oc create -f vmi-pxe-boot.yaml virtualmachineinstance.kubevirt.io "vmi-pxe-boot" createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 仮想マシンインスタンスの実行を待機します。
oc get vmi vmi-pxe-boot -o yaml | grep -i phase
$ oc get vmi vmi-pxe-boot -o yaml | grep -i phase phase: RunningCopy to Clipboard Copied! Toggle word wrap Toggle overflow VNC を使用して仮想マシンインスタンスを表示します。
virtctl vnc vmi-pxe-boot
$ virtctl vnc vmi-pxe-bootCopy to Clipboard Copied! Toggle word wrap Toggle overflow - ブート画面で、PXE ブートが正常に実行されていることを確認します。
仮想マシンインスタンスにログインします。
virtctl console vmi-pxe-boot
$ virtctl console vmi-pxe-bootCopy to Clipboard Copied! Toggle word wrap Toggle overflow 仮想マシンのインターフェイスおよび MAC アドレスを確認し、ブリッジに接続されたインターフェイスに MAC アドレスが指定されていることを確認します。この場合、PXE ブートには IP アドレスなしに
eth1を使用しています。他のインターフェイスeth0は OpenShift Container Platform から IP アドレスを取得しています。ip addr
$ 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:ffCopy to Clipboard Copied! Toggle word wrap Toggle overflow
6.10.2.4. テンプレート: PXE ブートの仮想マシンインスタンス設定ファイル リンクのコピーリンクがクリップボードにコピーされました!
6.10.3. ゲストメモリーの管理 リンクのコピーリンクがクリップボードにコピーされました!
ゲストメモリー設定を特定のユースケースに合わせて調整する必要がある場合、ゲストの YAML 設定ファイルを編集してこれを実行できます。Container-native Virtualization は、ゲストメモリーのオーバーコミットの設定と、ゲストメモリーのオーバーコミットアカウンティングの無効化を許可します。
この手順にはどちらの場合もリスクが伴います。そのため、経験のある管理者のみが対応するようにしてください。
6.10.3.1. ゲストメモリーのオーバーコミットの設定 リンクのコピーリンクがクリップボードにコピーされました!
仮想ワークロードに利用可能な量を上回るメモリーが必要な場合、メモリーのオーバーコミットを使用してホストのメモリーのすべてまたはそのほとんどを仮想マシンインスタンスに割り当てることができます。メモリーのオーバーコミットを有効にすることは、通常ホストに予約されるリソースを最大化できることを意味します。
たとえば、ホストに 32 GB RAM がある場合、メモリーのオーバーコミットを使用してそれぞれ 4 GB RAM を持つ 8 つの仮想マシンに対応できます。これは、仮想マシンがそれらのメモリーのすべてを同時に使用しないという前提で機能します。
手順
仮想マシンインスタンスに対し、クラスターから要求された以上のメモリーが利用可能であることを明示的に示すために、仮想マシン設定ファイルを編集し、
spec.domain.memory.guestをspec.domain.resources.requests.memoryよりも高い値に設定します。このプロセスはメモリーのオーバーコミットと呼ばれています。以下の例では、
1024Mがクラスターから要求されますが、仮想マシンインスタンスには2048Mが利用可能であると通知されます。ノードに利用可能な空のメモリーが十分にある限り、仮想マシンインスタンスは最大 2048M を消費します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記ノードがメモリー不足の状態になると、Pod のエビクションルールと同じルールが仮想マシンインスタンスに適用されます。
仮想マシンを作成します。
oc create -f <file name>.yaml
$ oc create -f <file name>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
6.10.3.2. ゲストメモリーオーバーヘッドアカウンティングの無効化 リンクのコピーリンクがクリップボードにコピーされました!
この手順は、特定のユースケースでのみ有効であり、上級ユーザーのみが試行するようにしてください。
要求する量に加えて、少量のメモリーが各仮想マシンインスタンスによって要求されます。追加のメモリーは、それぞれの VirtualMachineInstance プロセスをラップするインフラストラクチャーに使用されます。
通常は推奨される方法ではありませんが、ゲストメモリーオーバーヘッドアカウンティングを無効にすることでノード上の仮想マシンインスタンスの密度を増やすことは可能です。
手順
ゲストメモリーオーバーヘッドアカウンティングを無効にするには、YAML 設定ファイルを編集し、
overcommitGuestOverheadの値をtrueに設定します。このパラメーターはデフォルトで無効にされています。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記overcommitGuestOverheadが有効にされている場合、これはゲストのオーバーヘッドをメモリー制限 (ある場合) に追加します。仮想マシンを作成します。
oc create -f <file name>.yaml
$ oc create -f <file name>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
6.10.4. 仮想マシン用の専用リソースの有効化 リンクのコピーリンクがクリップボードにコピーされました!
パフォーマンスを向上させるために、仮想マシンには CPU などのノードの専用リソースを持たせることができます。
6.10.4.1. 専用リソースについて リンクのコピーリンクがクリップボードにコピーされました!
仮想マシンの専用リソースを有効にする場合、仮想マシンのワークロードは他のプロセスで使用されない CPU でスケジュールされます。専用リソースを使用することで、仮想マシンのパフォーマンスとレイテンシーの予測の精度を向上させることができます。
6.10.4.2. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
-
CPU マネージャー はノードに設定される必要があります。仮想マシンのワークロードをスケジュールする前に、ノードに
cpumanager=trueラベルが設定されていることを確認します。
6.10.4.3. 仮想マシンの専用リソースの有効化 リンクのコピーリンクがクリップボードにコピーされました!
Web コンソールの Virtual Machine Overview ページで仮想マシンの専用リソースを有効にすることができます。
手順
- サイドメニューから Workloads → Virtual Machines をクリックします。
- 仮想マシンを選択して、Virtual Machine Overview ページを開きます。
- Details タブをクリックします。
- Dedicated Resources フィールドの右側にある鉛筆アイコンをクリックして、Dedicated Resources ウィンドウを開きます。
- Schedule this workload with dedicated resources (guaranteed policy) を選択します。
- Save をクリックします。
6.11. 仮想マシンのインポート リンクのコピーリンクがクリップボードにコピーされました!
6.11.1. DataVolume インポートの TLS 証明書 リンクのコピーリンクがクリップボードにコピーされました!
6.11.1.1. DataVolume インポートの認証に使用する TLS 証明書の追加 リンクのコピーリンクがクリップボードにコピーされました!
ソースからデータをインポートするには、レジストリーまたは HTTPS エンドポイントの TLS 証明書を ConfigMap に追加する必要があります。この ConfigMap は、宛先 DataVolume の namespace に存在する必要があります。
TLS 証明書の相対パスを参照して ConfigMap を作成します。
手順
正しい namespace にあることを確認します。ConfigMap は、同じ namespace にある場合に DataVolume によってのみ参照されます。
oc get ns
$ oc get nsCopy to Clipboard Copied! Toggle word wrap Toggle overflow ConfigMap を作成します。
oc create configmap <configmap-name> --from-file=</path/to/file/ca.pem>
$ oc create configmap <configmap-name> --from-file=</path/to/file/ca.pem>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.11.1.2. 例: TLS 証明書から作成される ConfigMap リンクのコピーリンクがクリップボードにコピーされました!
以下は、ca.pem TLS 証明書で作成される ConfigMap の例です。
6.11.2. DataVolume の使用による仮想マシンイメージのインポート リンクのコピーリンクがクリップボードにコピーされました!
既存の仮想マシンイメージは OpenShift Container Platform クラスターにインポートできます。Container-native Virtualization は DataVolume を使用してデータのインポートおよび基礎となる PersistentVolumeClaim (PVC) の作成を自動化します。
ディスクイメージを PVC にインポートする際に、ディスクイメージは PVC で要求されるストレージの全容量を使用するように拡張されます。この領域を使用するには、仮想マシンのディスクパーティションおよびファイルシステムの拡張が必要になる場合があります。
サイズ変更の手順は、仮想マシンにインストールされるオペレーティングシステムによって異なります。詳細は、該当するオペレーティングシステムのドキュメントを参照してください。
6.11.2.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- エンドポイントに TLS 証明書が必要な場合、証明書は DataVolume と同じ namespace の ConfigMap に組み込む 必要があり、これは DataVolume 設定で参照されます。
- この操作を正常に実行するためには、StorageClass を定義するか、CDI のスクラッチ領域を用意 する必要がある場合があります。
6.11.2.2. CDI がサポートする操作マトリックス リンクのコピーリンクがクリップボードにコピーされました!
このマトリックスにはエンドポイントに対してコンテンツタイプのサポートされる CDI 操作が表示されます。これらの操作にはスクラッチ領域が必要です。
| コンテンツタイプ | HTTP | HTTPS | HTTP Basic 認証 | レジストリー | アップロード |
|---|---|---|---|---|---|
| kubevirt (QCOW2) |
✓ QCOW2 |
✓ QCOW2** |
✓ QCOW2 |
✓ QCOW2* |
✓ QCOW2* |
| KubeVirt (RAW) |
✓ RAW |
✓ RAW |
✓ RAW |
✓ RAW* |
✓ RAW* |
| Archive+ | ✓ TAR | ✓ TAR | ✓ TAR | □ TAR | □ TAR |
✓ サポートされる操作
□ サポートされない操作
* スクラッチ領域が必要
**カスタム認証局が必要な場合にスクラッチ領域が必要
+ アーカイブはブロックモード DV をサポートしません。
6.11.2.3. DataVolume について リンクのコピーリンクがクリップボードにコピーされました!
DataVolume オブジェクトは、Containerized Data Importer (CDI) プロジェクトで提供されるカスタムリソースです。DataVolume は、基礎となる PersistentVolumeClaim (PVC) に関連付けられるインポート、クローン作成、およびアップロード操作のオーケストレーションを行います。DataVolume は KubeVirt に統合され、仮想マシンが PVC の作成前に起動することを防ぎます。
6.11.2.4. DataVolume のあるオブジェクトへの仮想マシンイメージのインポート リンクのコピーリンクがクリップボードにコピーされました!
インポートされたイメージから仮想マシンを作成するには、仮想マシンを作成する前にイメージの場所を VirtualMachine 設定ファイルに指定します。
前提条件
-
OpenShift CLI (
oc) のインストール。 -
RAW、ISO、または QCOW2 形式の仮想マシンディスクイメージ (オプションで
xzまたはgzを使用して圧縮される) -
イメージがデータソースにアクセスするために必要な認証情報と共にホストされる
HTTPエンドポイント - 1 つ以上の利用可能な PersistentVolume
手順
インポートする必要のある仮想ディスクイメージをホストする
HTTPファイルサーバーを特定します。正しい形式での完全な URL が必要になります。データソースに認証情報が必要な場合、
endpoint-secret.yamlファイルを編集し、更新された設定をクラスターに適用します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc apply -f endpoint-secret.yaml
$ oc apply -f endpoint-secret.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 仮想マシン設定ファイルを編集し、インポートする必要のあるイメージのデータソースを指定します。この例では、Fedora イメージがインポートされます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 仮想マシンを作成します。
oc create -f vm-<name>-datavolume.yaml
$ oc create -f vm-<name>-datavolume.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記oc createコマンドは、DataVolume および仮想マシンを作成します。CDI コントローラーは適切なアノテーションを使って基礎となる PVC を作成し、インポートプロセスが開始されます。インポートが完了すると、DataVolume のステータスはSucceededに変更され、仮想マシンの起動が可能になります。DataVolume のプロビジョニングはバックグランドで実行されるため、これをモニターする必要はありません。仮想マシンは起動できますが、これはインポートが完了するまで実行されません。
オプションの検証手順
-
oc get podsを実行し、インポーター Pod を見つけます。この Pod は指定された URL からイメージをダウンロードし、これをプロビジョニングされた PV に保存します。 Succeededが表示されるまで DataVolume のステータスをモニターします。oc describe dv <data-label>
$ oc describe dv <data-label>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 仮想マシン設定ファイルに指定された DataVolume のデータラベル。
プロビジョニングが完了し、VMI が起動したことを検証するには、そのシリアルコンソールへのアクセスを試行します。
virtctl console <vm-fedora-datavolume>
$ virtctl console <vm-fedora-datavolume>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.11.2.5. テンプレート: DataVolume 仮想マシン設定ファイル リンクのコピーリンクがクリップボードにコピーされました!
example-dv-vm.yaml
- 1
- インポートする必要のあるイメージの
HTTPソース (該当する場合)。
6.11.2.6. テンプレート: DataVolume インポート設定ファイル リンクのコピーリンクがクリップボードにコピーされました!
example-import-dv.yaml
6.11.3. DataVolume の使用による仮想マシンイメージのブロックストレージへのインポート リンクのコピーリンクがクリップボードにコピーされました!
既存の仮想マシンイメージは OpenShift Container Platform クラスターにインポートできます。Container-native Virtualization は DataVolume を使用してデータのインポートおよび基礎となる PersistentVolumeClaim (PVC) の作成を自動化します。
ディスクイメージを PVC にインポートする際に、ディスクイメージは PVC で要求されるストレージの全容量を使用するように拡張されます。この領域を使用するには、仮想マシンのディスクパーティションおよびファイルシステムの拡張が必要になる場合があります。
サイズ変更の手順は、仮想マシンにインストールされるオペレーティングシステムによって異なります。詳細は、該当するオペレーティングシステムのドキュメントを参照してください。
6.11.3.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- CDI でサポートされる操作マトリックス に応じてスクラッチ領域が必要な場合、まずは、この操作が正常に実行されるように StorageClass を定義するか、または CDI スクラッチ領域を用意 します。
6.11.3.2. DataVolume について リンクのコピーリンクがクリップボードにコピーされました!
DataVolume オブジェクトは、Containerized Data Importer (CDI) プロジェクトで提供されるカスタムリソースです。DataVolume は、基礎となる PersistentVolumeClaim (PVC) に関連付けられるインポート、クローン作成、およびアップロード操作のオーケストレーションを行います。DataVolume は KubeVirt に統合され、仮想マシンが PVC の作成前に起動することを防ぎます。
6.11.3.3. ブロック PersistentVolume について リンクのコピーリンクがクリップボードにコピーされました!
ブロック PersistentVolume (PV) は、raw ブロックデバイスによってサポートされる PV です。これらのボリュームにはファイルシステムがなく、ディスクに直接書き込む仮想マシンや、独自のストレージサービスを実装する仮想マシンにはパフォーマンス上の利点があります。
raw ブロックボリュームは、PV および PersistentVolumeClaim (PVC) 仕様で volumeMode: Block を指定してプロビジョニングされます。
6.11.3.4. ローカルブロック PersistentVolume の作成 リンクのコピーリンクがクリップボードにコピーされました!
ファイルにデータを設定し、これをループデバイスとしてマウントすることにより、ノードでローカルブロック PersistentVolume (PV) を作成します。次に、このループデバイスを PV 設定で Block ボリュームとして参照し、これを仮想マシンイメージのブロックデバイスとして使用できます。
手順
-
ローカル PV を作成するノードに
rootとしてログインします。この手順では、node01を例に使用します。 ファイルを作成して、これを null 文字で設定し、ブロックデバイスとして使用できるようにします。以下の例では、2Gb (20 100Mb ブロック) のサイズのファイル
loop10を作成します。dd if=/dev/zero of=<loop10> bs=100M count=20
$ dd if=/dev/zero of=<loop10> bs=100M count=20Copy to Clipboard Copied! Toggle word wrap Toggle overflow loop10ファイルをループデバイスとしてマウントします。losetup </dev/loop10>d3 <loop10>
$ losetup </dev/loop10>d3 <loop10>1 2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow マウントされたループデバイスを参照する
PersistentVolume設定を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ブロック PV を作成します。
oc create -f <local-block-pv10.yaml>
# oc create -f <local-block-pv10.yaml>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 直前の手順で作成された PersistentVolume のファイル名。
6.11.3.5. DataVolume を使用した仮想マシンイメージのブロック PersistentVolume へのインポート リンクのコピーリンクがクリップボードにコピーされました!
既存の仮想マシンイメージは OpenShift Container Platform クラスターにインポートできます。Container-native Virtualization は DataVolume を使用してデータのインポートおよび基礎となる PersistentVolumeClaim (PVC) の作成を自動化します。その後、仮想マシン設定で DataVolume を参照できます。
前提条件
-
RAW、ISO、または QCOW2 形式の仮想マシンディスクイメージ (オプションで
xzまたはgzを使用して圧縮される) -
データソースにアクセスするために必要な認証情報と共にイメージがホストされる
HTTPまたはs3エンドポイント - 少なくとも 1 つ以上の利用可能なブロック PV。
手順
データソースに認証情報が必要な場合、
endpoint-secret.yamlファイルを編集し、更新された設定をクラスターに適用します。選択するテキストエディターで
endpoint-secret.yamlファイルを編集します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow シークレットを更新します。
oc apply -f endpoint-secret.yaml
$ oc apply -f endpoint-secret.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
インポートするイメージのデータソースを指定する
DataVolumeおよびvolumeMode: Blockを作成して、利用可能なブロック PV が使用されるようにします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 仮想マシンイメージをインポートするために DataVolume を作成します。
oc create -f <import-pv-datavolume.yaml>
$ oc create -f <import-pv-datavolume.yaml>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 直前の手順で作成されたファイル名 DataVolume。
6.11.3.6. CDI がサポートする操作マトリックス リンクのコピーリンクがクリップボードにコピーされました!
このマトリックスにはエンドポイントに対してコンテンツタイプのサポートされる CDI 操作が表示されます。これらの操作にはスクラッチ領域が必要です。
| コンテンツタイプ | HTTP | HTTPS | HTTP Basic 認証 | レジストリー | アップロード |
|---|---|---|---|---|---|
| kubevirt (QCOW2) |
✓ QCOW2 |
✓ QCOW2** |
✓ QCOW2 |
✓ QCOW2* |
✓ QCOW2* |
| KubeVirt (RAW) |
✓ RAW |
✓ RAW |
✓ RAW |
✓ RAW* |
✓ RAW* |
| Archive+ | ✓ TAR | ✓ TAR | ✓ TAR | □ TAR | □ TAR |
✓ サポートされる操作
□ サポートされない操作
* スクラッチ領域が必要
**カスタム認証局が必要な場合にスクラッチ領域が必要
+ アーカイブはブロックモード DV をサポートしません。
6.11.4. VMware 仮想マシンまたはテンプレートのインポート リンクのコピーリンクがクリップボードにコピーされました!
単一の VMware 仮想マシンまたはテンプレートを OpenShift Container Platform クラスターにインポートできます。
VMware テンプレートをインポートする場合、ウィザードはテンプレートに基づいて仮想マシンを作成します。
VMware 仮想マシンまたはテンプレートのインポートはテクノロジープレビュー機能です。テクノロジープレビュー機能は Red Hat の実稼働環境でのサービスレベルアグリーメント (SLA) ではサポートされていないため、Red Hat では実稼働環境での使用を推奨していません。Red Hat は実稼働環境でこれらを使用することを推奨していません。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲についての詳細は、https://access.redhat.com/ja/support/offerings/techpreview/ を参照してください。
インポートプロセスでは、VMware Virtual Disk Development Kit (VDDK) を使用して VMware 仮想ディスクをコピーします。VDDK SDK をダウンロードし、VDDK イメージをビルドし、イメージレジストリーにイメージをアップロードしてからこれを v2v-vmware ConfigMap に追加できます。
仮想マシンウィザードで VMware 仮想マシンをインポートしてから、仮想マシンのネットワーク名を更新することができます。
6.11.4.1. VDDK イメージのイメージレジストリーの設定 リンクのコピーリンクがクリップボードにコピーされました!
内部 OpenShift Container Platform イメージレジストリーまたは VDDK イメージのセキュアな外部イメージレジストリーのいずれかを設定できます。
VDDK イメージをパブリックリポジトリーに保存すると、VMware ライセンスの条件に違反する可能性があります。
6.11.4.1.1. 内部イメージレジストリーの設定 リンクのコピーリンクがクリップボードにコピーされました!
イメージレジストリー Operator 設定を更新して、ベアメタルに内部 OpenShift Container Platform イメージレジストリーを設定できます。
6.11.4.1.1.1. イメージレジストリーの管理状態の変更 リンクのコピーリンクがクリップボードにコピーされました!
イメージレジストリーを起動するには、イメージレジストリー Operator 設定の managementState を Removed から Managed に変更する必要があります。
手順
ManagementStateイメージレジストリー Operator 設定をRemovedからManagedに変更します。以下は例になります。oc patch configs.imageregistry.operator.openshift.io cluster --type merge --patch '{"spec":{"managementState":"Managed"}}'$ oc patch configs.imageregistry.operator.openshift.io cluster --type merge --patch '{"spec":{"managementState":"Managed"}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.11.4.1.1.2. ベアメタルの場合のレジストリーストレージの設定 リンクのコピーリンクがクリップボードにコピーされました!
クラスター管理者は、インストール後にレジストリーをストレージを使用できるように設定する必要があります。
前提条件
- クラスター管理者のパーミッション。
- ベアメタル上のクラスター。
Red Hat OpenShift Container Storage などのクラスターのプロビジョニングされた永続ストレージ。
重要OpenShift Container Platform は、1 つのレプリカのみが存在する場合にイメージレジストリーストレージの
ReadWriteOnceアクセスをサポートします。2 つ以上のレプリカで高可用性をサポートするイメージレジストリーをデプロイするには、ReadWriteManyアクセスが必要です。- 100Gi の容量が必要です。
手順
レジストリーをストレージを使用できるように設定するには、
configs.imageregistry/clusterリソースのspec.storage.pvcを変更します。注記共有ストレージを使用する場合は、外部からアクセスを防ぐためにセキュリティー設定を確認します。
レジストリー Pod がないことを確認します。
oc get pod -n openshift-image-registry
$ oc get pod -n openshift-image-registryCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記ストレージタイプが
emptyDIRの場合、レプリカ数が1を超えることはありません。レジストリー設定を確認します。
oc edit configs.imageregistry.operator.openshift.io
$ oc edit configs.imageregistry.operator.openshift.ioCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
storage: pvc: claim:storage: pvc: claim:Copy to Clipboard Copied! Toggle word wrap Toggle overflow claimフィールドを空のままにし、image-registry-storagePVC の自動作成を可能にします。clusteroperatorステータスを確認します。oc get clusteroperator image-registry
$ oc get clusteroperator image-registryCopy to Clipboard Copied! Toggle word wrap Toggle overflow
6.11.4.1.2. 内部イメージレジストリーへのアクセスの設定 リンクのコピーリンクがクリップボードにコピーされました!
レジストリーをルートで公開して、クラスター内から OpenShift Container Platform 内部レジストリーに直接アクセスできます。
6.11.4.1.2.1. クラスターからレジストリーへの直接アクセス リンクのコピーリンクがクリップボードにコピーされました!
クラスター内からレジストリーにアクセスすることができます。
手順
内部ルートを使用して、クラスターからレジストリーにアクセスします。
ノードのアドレスを取得することにより、ノードにアクセスします。
oc get nodes oc debug nodes/<node_address>
$ oc get nodes $ oc debug nodes/<node_address>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ノード上で
ocやpodmanなどのツールにアクセスするには、以下のコマンドを実行します。chroot /host
sh-4.2# chroot /hostCopy to Clipboard Copied! Toggle word wrap Toggle overflow アクセストークンを使用してコンテナーイメージレジストリーにログインします。
oc login -u kubeadmin -p <password_from_install_log> https://api-int.<cluster_name>.<base_domain>:6443 podman login -u kubeadmin -p $(oc whoami -t) image-registry.openshift-image-registry.svc:5000
sh-4.2# oc login -u kubeadmin -p <password_from_install_log> https://api-int.<cluster_name>.<base_domain>:6443 sh-4.2# podman login -u kubeadmin -p $(oc whoami -t) image-registry.openshift-image-registry.svc:5000Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のようなログインを確認するメッセージが表示されるはずです。
Login Succeeded!
Login Succeeded!Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記ユーザー名には任意の値を指定でき、トークンには必要な情報がすべて含まれます。コロンが含まれるユーザー名を指定すると、ログインに失敗します。
イメージレジストリー Operator はルートを作成するため、
default-route-openshift-image-registry.<cluster_name>のようになります。レジストリーに対して
podman pullおよびpodman push操作を実行します。重要任意のイメージをプルできますが、system:registry ロールを追加している場合は、各自のプロジェクトにあるレジストリーにのみイメージをプッシュすることができます。
次の例では、以下を使用します。
Expand コンポーネント 値 <registry_ip>
172.30.124.220<port>
5000<project>
openshift<image>
image<tag>
省略 (デフォルトは
latest)任意のイメージをプルします。
podman pull name.io/image
$ podman pull name.io/imageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 新規イメージに
<registry_ip>:<port>/<project>/<image>形式でタグ付けします。プロジェクト名は、イメージを正しくレジストリーに配置し、これに後でアクセスできるようにするために OpenShift Container Platform のプル仕様に表示される必要があります。podman tag name.io/image image-registry.openshift-image-registry.svc:5000/openshift/image
$ podman tag name.io/image image-registry.openshift-image-registry.svc:5000/openshift/imageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記指定されたプロジェクトについて
system:image-builderロールを持っている必要があります。このロールにより、ユーザーはイメージの書き出しやプッシュを実行できます。そうでない場合は、次の手順のpodman pushは失敗します。テストするために、新規プロジェクトを作成してイメージをプッシュできます。新しくタグ付けされたイメージをレジストリーにプッシュします。
podman push image-registry.openshift-image-registry.svc:5000/openshift/image
$ podman push image-registry.openshift-image-registry.svc:5000/openshift/imageCopy to Clipboard Copied! Toggle word wrap Toggle overflow
6.11.4.1.2.2. セキュアなレジストリーの手動による公開 リンクのコピーリンクがクリップボードにコピーされました!
クラスター内から OpenShift Container Platform レジストリーにログインするのではなく、外部からレジストリーにアクセスできるように、このレジストリーをルートに公開します。この方法を使うと、ルートアドレスを使ってクラスターの外部からレジストリーにログインし、ルートのホストを使ってイメージにタグ付けしたり、イメージをプッシュしたりできます。
前提条件:
以下の前提条件は自動的に実行されます。
- レジストリー Operator のデプロイ。
- Ingress Operator のデプロイ。
手順
configs.imageregistry.operator.openshift.io リソースで DefaultRoute パラメーターを使用するか、またはカスタムルートを使用してルートを公開することができます。
DefaultRoute を使用してレジストリーを公開するには、以下を実行します。
DefaultRouteをTrueに設定します。oc patch configs.imageregistry.operator.openshift.io/cluster --patch '{"spec":{"defaultRoute":true}}' --type=merge$ oc patch configs.imageregistry.operator.openshift.io/cluster --patch '{"spec":{"defaultRoute":true}}' --type=mergeCopy to Clipboard Copied! Toggle word wrap Toggle overflow podmanでログインします。HOST=$(oc get route default-route -n openshift-image-registry --template='{{ .spec.host }}') podman login -u $(oc whoami) -p $(oc whoami -t) --tls-verify=false $HOST$ HOST=$(oc get route default-route -n openshift-image-registry --template='{{ .spec.host }}') $ podman login -u $(oc whoami) -p $(oc whoami -t) --tls-verify=false $HOST1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
--tls-verify=falseは、ルートのクラスターのデフォルト証明書が信頼されない場合に必要になります。Ingress Operator で、信頼されるカスタム証明書をデフォルト証明書として設定できます。
カスタムルートを使用してレジストリーを公開するには、以下を実行します。
ルートの TLS キーでシークレットを作成します。
oc create secret tls public-route-tls \ -n openshift-image-registry \ --cert=</path/to/tls.crt> \ --key=</path/to/tls.key>$ oc create secret tls public-route-tls \ -n openshift-image-registry \ --cert=</path/to/tls.crt> \ --key=</path/to/tls.key>Copy to Clipboard Copied! Toggle word wrap Toggle overflow この手順はオプションです。シークレットを作成しない場合、ルートは Ingress Operator からデフォルトの TLS 設定を使用します。
レジストリー Operator では、以下のようになります。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記レジストリーのルートのカスタム TLS 設定を指定している場合は
secretNameのみを設定します。
6.11.4.1.3. 外部イメージレジストリーへのアクセスの設定 リンクのコピーリンクがクリップボードにコピーされました!
VDDK イメージの外部イメージレジストリーを使用する場合、外部イメージレジストリーの認証局を OpenShift Container Platform クラスターに追加できます。
オプションで、Docker 認証情報からプルシークレットを作成し、これをサービスアカウントに追加できます。
6.11.4.1.3.1. クラスターへの認証局の追加 リンクのコピーリンクがクリップボードにコピーされました!
以下の手順でイメージのプッシュおよびプル時に使用する認証局 (CA) をクラスターに追加することができます。
前提条件
- クラスター管理者の権限があること。
-
レジストリーの公開証明書 (通常は、
/etc/docker/certs.d/ディレクトリーにあるhostname/ca.crtファイル)。
手順
自己署名証明書を使用するレジストリーの信頼される証明書が含まれる ConfigMap を
openshift-confignamespace に作成します。それぞれの CA ファイルについて、 ConfigMap のキーがhostname[..port]形式のレジストリーのホスト名であることを確認します。oc create configmap registry-cas -n openshift-config \ --from-file=myregistry.corp.com..5000=/etc/docker/certs.d/myregistry.corp.com:5000/ca.crt \ --from-file=otherregistry.com=/etc/docker/certs.d/otherregistry.com/ca.crt
$ oc create configmap registry-cas -n openshift-config \ --from-file=myregistry.corp.com..5000=/etc/docker/certs.d/myregistry.corp.com:5000/ca.crt \ --from-file=otherregistry.com=/etc/docker/certs.d/otherregistry.com/ca.crtCopy to Clipboard Copied! Toggle word wrap Toggle overflow クラスターイメージの設定を更新します。
oc patch image.config.openshift.io/cluster --patch '{"spec":{"additionalTrustedCA":{"name":"registry-cas"}}}' --type=merge$ oc patch image.config.openshift.io/cluster --patch '{"spec":{"additionalTrustedCA":{"name":"registry-cas"}}}' --type=mergeCopy to Clipboard Copied! Toggle word wrap Toggle overflow
6.11.4.1.3.2. Pod が他のセキュリティー保護されたレジストリーからイメージを参照できるようにする設定 リンクのコピーリンクがクリップボードにコピーされました!
Docker クライアントの .dockercfg $HOME/.docker/config.json ファイルは、セキュア/非セキュアなレジストリーに事前にログインしている場合に認証情報を保存する Docker 認証情報ファイルです。
OpenShift Container Platform の内部レジストリーにないセキュリティー保護されたコンテナーイメージをプルするには、Docker 認証情報でプルシークレットを作成し、これをサービスアカウントに追加する必要があります。
手順
セキュリティー保護されたレジストリーの
.dockercfgファイルがすでにある場合は、以下を実行してそのファイルからシークレットを作成できます。oc create secret generic <pull_secret_name> \ --from-file=.dockercfg=<path/to/.dockercfg> \ --type=kubernetes.io/dockercfg$ oc create secret generic <pull_secret_name> \ --from-file=.dockercfg=<path/to/.dockercfg> \ --type=kubernetes.io/dockercfgCopy to Clipboard Copied! Toggle word wrap Toggle overflow または、
$HOME/.docker/config.jsonファイルがある場合は以下を実行します。oc create secret generic <pull_secret_name> \ --from-file=.dockerconfigjson=<path/to/.docker/config.json> \ --type=kubernetes.io/dockerconfigjson$ oc create secret generic <pull_secret_name> \ --from-file=.dockerconfigjson=<path/to/.docker/config.json> \ --type=kubernetes.io/dockerconfigjsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow セキュアなレジストリーについての Docker 認証情報ファイルがまだない場合には、以下のコマンドを実行してシークレットを作成することができます。
oc create secret docker-registry <pull_secret_name> \ --docker-server=<registry_server> \ --docker-username=<user_name> \ --docker-password=<password> \ --docker-email=<email>$ oc create secret docker-registry <pull_secret_name> \ --docker-server=<registry_server> \ --docker-username=<user_name> \ --docker-password=<password> \ --docker-email=<email>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pod のイメージをプルするためのシークレットを使用するには、そのシークレットをサービスアカウントに追加する必要があります。この例では、サービスアカウントの名前は、Pod が使用するサービスアカウントの名前に一致している必要があります。
defaultはデフォルトのサービスアカウントです。oc secrets link default <pull_secret_name> --for=pull
$ oc secrets link default <pull_secret_name> --for=pullCopy to Clipboard Copied! Toggle word wrap Toggle overflow
6.11.4.2. VDDK イメージの作成および使用 リンクのコピーリンクがクリップボードにコピーされました!
VMware Virtual Disk Development Kit (VDDK) をダウンロードして、VDDK イメージをビルドし、VDDK イメージをイメージレジストリーにプッシュできます。次に、VDDK イメージを v2v-vmware ConfigMap に追加します。
前提条件
- OpenShift Container Platform 内部イメージレジストリーまたはセキュアな外部レジストリーにアクセスできる必要がある。
手順
一時ディレクトリーを作成し、これに移動します。
mkdir /tmp/<dir_name> && cd /tmp/<dir_name>
$ mkdir /tmp/<dir_name> && cd /tmp/<dir_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - ブラウザーで VMware code に移動し、SDKs をクリックします。
- Compute Virtualization で Virtual Disk Development Kit(VDDK) をクリックします。
- 最新の VDDK リリースを選択し、Download をクリックしてから VDDK アーカイブを一時ディレクトリーに保存します。
VDDK アーカイブを展開します。
tar -xzf VMware-vix-disklib-<version>.x86_64.tar.gz
$ tar -xzf VMware-vix-disklib-<version>.x86_64.tar.gzCopy to Clipboard Copied! Toggle word wrap Toggle overflow Dockerfileを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow イメージをビルドします。
podman build . -t <registry_route_or_server_path>/vddk:<tag>
$ podman build . -t <registry_route_or_server_path>/vddk:<tag>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- イメージレジストリーを指定します。
-
内部 OpenShift Container Platform レジストリーの場合は、内部レジストリールート (例:
image-registry.openshift-image-registry.svc:5000/openshift/vddk:<tag>) を使用します。 -
外部レジストリーの場合は、サーバー名、パスおよびタグを指定します (例:
server.example.com:5000/vddk:<tag>)。
-
内部 OpenShift Container Platform レジストリーの場合は、内部レジストリールート (例:
イメージをレジストリーにプッシュします。
podman push <registry_route_or_server_path>/vddk:<tag>
$ podman push <registry_route_or_server_path>/vddk:<tag>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - イメージが OpenShift Container Platform 環境からアクセスできることを確認します。
openshift-cnv プロジェクトで
v2v-vmwareConfigMap を編集します。oc edit configmap v2v-vmware -n openshift-cnv
$ oc edit configmap v2v-vmware -n openshift-cnvCopy to Clipboard Copied! Toggle word wrap Toggle overflow vddk-init-imageパラメーターをdataスタンザに追加します。... data: vddk-init-image: <registry_route_or_server_path>/vddk:<tag>
... data: vddk-init-image: <registry_route_or_server_path>/vddk:<tag>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.11.4.3. 仮想マシンウィザードによる VMware 仮想マシンまたはテンプレートのインポート リンクのコピーリンクがクリップボードにコピーされました!
仮想マシンウィザードを使用して VMware 仮想マシンまたはテンプレートをインポートできます。
前提条件
-
VDDK イメージを作成して、これをイメージレジストリーにプッシュし、
v2v-vmwareConfigMap に追加する必要があります。 インポートしたディスクに十分なストレージ容量が必要です。
警告ディスクサイズが利用可能なストレージ領域よりも大きい仮想マシンをインポートしようとすると、この操作は完了しません。オブジェクトの削除をサポートするためのリソースが十分にないため、別の仮想マシンをインポートしたり、ストレージをクリーンアップしたりすることはできません。この状況を解決するには、ストレージバックエンドにオブジェクトストレージデバイスを追加する必要があります。
- VMware 仮想マシンの電源がオフになっていること。
手順
- Container-native Virtualization Web コンソールで Workloads → Virtual Machines をクリックします。
- Create Virtual Machine をクリックし、Import with Wizard を選択します。
General 画面で、以下の手順を実行します。
- Provider 一覧から、VMware を選択します。
vCenter instance 一覧から Connect to New Instance または保存された vCenter インスタンスを選択します。
- Connect to New Instance を選択する場合、vCenter hostname、Username、Password を入力します。
- 保存された vCenter インスタンスを選択する場合、ウィザードは保存された認証情報を使用して vCenter に接続します。
- VM or Template to Import 一覧からインポートする仮想マシンまたはテンプレートを選択します。
- オペレーティングシステムを選択します。
Flavor 一覧から既存フレーバーまたは Custom を選択します。
Custom を選択した場合は、Memory (GB) および CPUs を指定します。
- Workload Profile を選択します。
- 仮想マシン名が namespace の別の仮想マシンで使用されている場合、名前を更新します。
- Next をクリックします。
Networking 画面で以下の手順を実行します。
-
ネットワークインターフェイスの Options メニュー
をクリックし、Edit を選択します。
有効なネットワークインターフェイス名を入力します。
この名前には、小文字 (
a-z)、数字 (0-9)、およびハイフン (-) を含めることができ、最大 253 文字を使用できます。最初と最後の文字は英数字にする必要があります。この名前には、大文字、スペース、ピリオド (.)、または特殊文字を使用できません。- ネットワークインターフェイスモデルを選択します。
- ネットワーク定義を選択します。
- ネットワークインターフェイスの種類を選択します。
- MAC アドレスを入力します。
- Save をクリックした後に、Next をクリックします。
-
ネットワークインターフェイスの Options メニュー
Storage 画面で以下の手順を実行します。
-
ディスクの Options メニュー
をクリックし、Edit を選択します。
有効な名前を入力します。
この名前には、小文字 (
a-z)、数字 (0-9)、およびハイフン (-) を含めることができ、最大 253 文字を使用できます。最初と最後の文字は英数字にする必要があります。この名前には、大文字、スペース、ピリオド (.)、または特殊文字を使用できません。- インターフェイスタイプを選択します。
ストレージクラスを作成します。
ストレージクラスを選択しない場合、Container-native Virtualization はデフォルトストレージクラスを使用して仮想マシンを作成します。
- Save をクリックした後に、Next をクリックします。
-
ディスクの Options メニュー
-
Advanced 画面で、
cloud-initを使用している場合は Hostname および Authorized SSH Keys を入力します。 - Next をクリックします。
設定を確認し、Create Virtual Machine をクリックします。
Successfully created virtual machine というメッセージが表示され、仮想マシンに作成されたリソースの一覧が表示されます。電源がオフになった仮想マシンが Workloads → Virtual Machines に表示されます。
See virtual machine details をクリックして、インポートされた仮想マシンのダッシュボードを表示します。
エラーが発生した場合は、以下の手順を実行します。
- Workloads → Pods をクリックします。
-
変換 Pod (例:
kubevirt-v2v-conversion-rhel7-mini-1-27b9h) をクリックします。 - Logs をクリックし、エラーメッセージの有無を確認します。
ウィザードのフィールドについての詳細は、virtual machine wizard fields を参照してください。
6.11.4.4. インポートされた VMware 仮想マシンの NIC 名の更新 リンクのコピーリンクがクリップボードにコピーされました!
VMware からインポートされた仮想マシンの NIC 名を、 Container-native Virtualization の命名規則に適合するように更新します。
手順
- 仮想マシンにログインします。
-
/etc/sysconfig/network-scriptsディレクトリーに移動します。 ネットワーク設定ファイル名を
ifcfg-eth0に変更します。mv vmnic0 ifcfg-eth0
$ mv vmnic0 ifcfg-eth01 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 追加のネットワーク設定ファイルには、
ifcfg-eth1、ifcfg-eth2などの番号が順番に付けられます。
ネットワーク設定ファイルで
NAMEおよびDEVICEパラメーターを更新します。NAME=eth0 DEVICE=eth0
NAME=eth0 DEVICE=eth0Copy to Clipboard Copied! Toggle word wrap Toggle overflow ネットワークを再起動します。
systemctl restart network
$ systemctl restart networkCopy to Clipboard Copied! Toggle word wrap Toggle overflow
6.11.4.5. VMware 仮想マシンのインポートのトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
インポートされた仮想マシンのステータスが Import error: (VMware) の場合は、Conversion Pod ログでエラーの有無を確認できます。
Conversion Pod 名を取得します。
oc get pods -n <project> | grep v2v
$ oc get pods -n <project> | grep v2v1 kubevirt-v2v-conversion-f66f7d-zqkz7 1/1 Running 0 4h49mCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- インポートされた仮想マシンのプロジェクトを指定します。
Conversion Pod ログを取得します。
oc logs kubevirt-v2v-conversion-f66f7d-zqkz7 -f -n <project>
$ oc logs kubevirt-v2v-conversion-f66f7d-zqkz7 -f -n <project>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.11.4.5.1. エラーメッセージ リンクのコピーリンクがクリップボードにコピーされました!
インポートされた仮想マシンイベントでエラーメッセージ
Readiness probe failedが表示される場合、以下のエラーメッセージが Conversion Pod ログに表示されます。INFO - have error: ('virt-v2v error: internal error: invalid argument: libvirt domain ‘v2v_migration_vm_1’ is running or paused. It must be shut down in order to perform virt-v2v conversion',)"INFO - have error: ('virt-v2v error: internal error: invalid argument: libvirt domain ‘v2v_migration_vm_1’ is running or paused. It must be shut down in order to perform virt-v2v conversion',)"Copy to Clipboard Copied! Toggle word wrap Toggle overflow インポートする前に、仮想マシンがシャットダウンしていることを確認する必要があります。
6.11.4.5.2. 既知の問題 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform 環境には、インポートされたディスク用のストレージ容量が十分にある必要があります。
ディスクサイズが利用可能なストレージ領域よりも大きい仮想マシンをインポートしようとすると、この操作は完了しません。オブジェクトの削除をサポートするためのリソースが十分にないため、別の仮想マシンをインポートしたり、ストレージをクリーンアップしたりすることはできません。この状況を解決するには、ストレージバックエンドにオブジェクトストレージデバイスをさらに追加する必要があります。(BZ#1721504)
- NFS を使用したストレージを、変換 Pod に割り当てられる 2 GB ディスクに使用する場合、hostPath ボリュームを設定 する必要があります。(BZ#1814611)
6.11.4.6. 仮想マシンウィザードのフィールド リンクのコピーリンクがクリップボードにコピーされました!
6.11.4.6.1. 仮想マシンウィザードのフィールド リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | パラメーター | 説明 |
|---|---|---|
| Template | 仮想マシンの作成に使用するテンプレート。テンプレートを選択すると、他のフィールドが自動的に入力されます。 | |
| ソース | PXE | PXE メニューから仮想マシンをプロビジョニングします。クラスターに PXE 対応の NIC が必要になります。 |
| URL | HTTP または S3 エンドポイントで利用できるイメージから仮想マシンをプロビジョニングします。 | |
| コンテナー |
クラスターからアクセスできるレジストリーの起動可能なオペレーティングシステムコンテナーから仮想マシンをプロビジョニングします。例: | |
| Disk | ディスクから仮想マシンをプロビジョニングします。 | |
| Operating System | 仮想マシン用に選択される主なオペレーティングシステム。 | |
| Flavor | small、medium、large、tiny、Custom | 仮想マシンに割り当てられる CPU およびメモリーの量を決定するプリセット。Flavor に設定される Preset はオペレーティングシステムによって決まります。 |
| Memory | 仮想マシンに割り当てられるメモリーのサイズ (GiB 単位)。 | |
| CPU | 仮想マシンに割り当てられる CPU の量。 | |
| Workload Profile | High Performance | 高パフォーマンスのワークロードに対して最適化された仮想マシン設定。 |
| Server | サーバーワークロードの実行に最適化されたプロファイル。 | |
| Desktop | デスクトップで使用するための仮想マシン設定。 | |
| 名前 |
この名前には、小文字 ( | |
| 説明 | オプションの説明フィールド。 | |
| Start virtual machine on creation | これを選択すると、作成時に仮想マシンが自動的に起動します。 |
6.11.4.6.2. Cloud-init フィールド リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 |
|---|---|
| Hostname | 仮想マシンの特定のホスト名を設定します。 |
| Authenticated SSH Keys | 仮想マシンの ~/.ssh/authorized_keys にコピーされるユーザーの公開鍵。 |
| Use custom script | 他のオプションを、カスタム cloud-init スクリプトを貼り付けるフィールドに置き換えます。 |
6.11.4.6.3. ネットワークフィールド リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 |
|---|---|
| 名前 | ネットワークインターフェイスの名前。 |
| Model | ネットワークインターフェイスカードのモデルを示します。サポートされる値は、e1000、 e1000e、ne2k_pci、pcnet, rtl8139、および virtIO です。 |
| Network | 利用可能な NetworkAttachmentDefinition オブジェクトの一覧。 |
| Type |
利用可能なバインディングメソッドの一覧。デフォルトの Pod ネットワークについては、 |
| MAC Address | ネットワークインターフェイスの MAC アドレス。MAC アドレスが指定されていない場合、セッションの一時アドレスが生成されます。 |
6.11.4.6.4. ストレージフィールド リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 |
|---|---|
| ソース | 仮想マシンの空のディスクを選択するか、または URL、Container、Attach Cloned Disk、または Attach Disk などの選択可能なオプションから選択します。既存ディスクを選択し、これを仮想マシンに割り当てるには、利用可能な PersistentVolumeClaim (PVC) の一覧から Attach Cloned Disk または Attach Disk を選択します。 |
| 名前 |
ディスクの名前。この名前には、小文字 ( |
| Size (GiB) | ディスクのサイズ (GiB)。 |
| Interface | ディスクデバイスのタイプ。サポートされるインターフェイスは、virtIO、SATA、および SCSI です。 |
| Storage class |
ディスクの作成に使用される |
6.12. 仮想マシンのクローン作成 リンクのコピーリンクがクリップボードにコピーされました!
6.12.1. 複数の namespace 間で DataVolume をクローン作成するためのユーザーパーミッションの有効化 リンクのコピーリンクがクリップボードにコピーされました!
namespace には相互に分離する性質があるため、ユーザーはデフォルトでは namespace をまたがってリソースのクローンを作成することができません。
ユーザーが仮想マシンのクローンを別の namespace に作成できるようにするには、cluster-admin ロールを持つユーザーが新規の ClusterRole を作成する必要があります。この ClusterRole をユーザーにバインドし、それらのユーザーが仮想マシンのクローンを宛先 namespace に対して作成できるようにします。
6.12.1.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
-
cluster-adminロールを持つユーザーのみが ClusterRole を作成できます。
6.12.1.2. DataVolume について リンクのコピーリンクがクリップボードにコピーされました!
DataVolume オブジェクトは、Containerized Data Importer (CDI) プロジェクトで提供されるカスタムリソースです。DataVolume は、基礎となる PersistentVolumeClaim (PVC) に関連付けられるインポート、クローン作成、およびアップロード操作のオーケストレーションを行います。DataVolume は KubeVirt に統合され、仮想マシンが PVC の作成前に起動することを防ぎます。
6.12.1.3. DataVolume のクローン作成のための RBAC リソースの作成 リンクのコピーリンクがクリップボードにコピーされました!
datavolumes リソースのすべてのアクションのパーミッションを有効にする新規の ClusterRole を作成します。
手順
ClusterRole マニフェストを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- ClusterRole の一意の名前。
クラスターに ClusterRole を作成します。
oc create -f <datavolume-cloner.yaml>
$ oc create -f <datavolume-cloner.yaml>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 直前の手順で作成された ClusterRole マニフェストのファイル名です。
移行元および宛先 namespace の両方に適用される RoleBinding マニフェストを作成し、直前の手順で作成した ClusterRole を参照します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow クラスターに RoleBinding を作成します。
oc create -f <datavolume-cloner.yaml>
$ oc create -f <datavolume-cloner.yaml>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 直前の手順で作成された RoleBinding マニフェストのファイル名です。
6.12.2. 新規 DataVolume への仮想マシンディスクのクローン作成 リンクのコピーリンクがクリップボードにコピーされました!
DataVolume 設定ファイルでソース PVC を参照し、新規 DataVolume に仮想マシンディスクの PersistentVolumeClaim (PVC) のクローンを作成できます。
6.12.2.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- この操作を正常に実行するためには、StorageClass を定義するか、CDI のスクラッチ領域を用意 する必要がある場合があります。CDI がサポートする操作マトリックス は、スクラッチ領域を必要とする条件を示しています。
- ユーザーは、仮想マシンディスクの PVC のクローンを別の namespace に作成するために 追加のパーミッション が必要です。
6.12.2.2. DataVolume について リンクのコピーリンクがクリップボードにコピーされました!
DataVolume オブジェクトは、Containerized Data Importer (CDI) プロジェクトで提供されるカスタムリソースです。DataVolume は、基礎となる PersistentVolumeClaim (PVC) に関連付けられるインポート、クローン作成、およびアップロード操作のオーケストレーションを行います。DataVolume は KubeVirt に統合され、仮想マシンが PVC の作成前に起動することを防ぎます。
6.12.2.3. 新規 DataVolume への仮想マシンディスクの PersistentVolumeClaim のクローン作成 リンクのコピーリンクがクリップボードにコピーされました!
既存の仮想マシンディスクの PersistentVolumeClaim (PVC) のクローンを新規 DataVolume に作成できます。その後、新規 DataVolume は新規の仮想マシンに使用できます。
Volume が仮想マシンとは別に作成される場合、DataVolume のライフサイクルは仮想マシンから切り離されます。仮想マシンが削除されても、DataVolume もその関連付けられた PVC も削除されません。
前提条件
- 使用する既存の仮想マシンディスクの PVC を判別すること。クローン作成の前に、PVC に関連付けられた仮想マシンの電源を切る必要があります。
-
OpenShift CLI (
oc) をインストールしている。
手順
- 関連付けられた PVC の名前および namespace を特定するために、クローン作成に必要な仮想マシンディスクを確認します。
新規 DataVolume の名前、ソース PVC の名前および namespace、および新規 DataVolume のサイズを指定する DataVolume オブジェクトの YAML ファイルを作成します。
以下は例になります。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow DataVolume を作成して PVC のクローン作成を開始します。
oc create -f <cloner-datavolume>.yaml
$ oc create -f <cloner-datavolume>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記DataVolume は仮想マシンが PVC の作成前に起動することを防ぐため、PVC のクローン作成中に新規 DataVolume を参照する仮想マシンを作成できます。
6.12.2.4. テンプレート: DataVolume クローン設定ファイル リンクのコピーリンクがクリップボードにコピーされました!
example-clone-dv.yaml
6.12.2.5. CDI がサポートする操作マトリックス リンクのコピーリンクがクリップボードにコピーされました!
このマトリックスにはエンドポイントに対してコンテンツタイプのサポートされる CDI 操作が表示されます。これらの操作にはスクラッチ領域が必要です。
| コンテンツタイプ | HTTP | HTTPS | HTTP Basic 認証 | レジストリー | アップロード |
|---|---|---|---|---|---|
| kubevirt (QCOW2) |
✓ QCOW2 |
✓ QCOW2** |
✓ QCOW2 |
✓ QCOW2* |
✓ QCOW2* |
| KubeVirt (RAW) |
✓ RAW |
✓ RAW |
✓ RAW |
✓ RAW* |
✓ RAW* |
| Archive+ | ✓ TAR | ✓ TAR | ✓ TAR | □ TAR | □ TAR |
✓ サポートされる操作
□ サポートされない操作
* スクラッチ領域が必要
**カスタム認証局が必要な場合にスクラッチ領域が必要
+ アーカイブはブロックモード DV をサポートしません。
6.12.3. DataVolumeTemplate の使用による仮想マシンのクローン作成 リンクのコピーリンクがクリップボードにコピーされました!
既存の仮想マシンの PersistentVolumeClaim (PVC) のクローン作成により、新規の仮想マシンを作成できます。dataVolumeTemplate を仮想マシン設定ファイルに含めることにより、元の PVC から新規の DataVolume を作成します。
6.12.3.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- この操作を正常に実行するためには、StorageClass を定義するか、CDI のスクラッチ領域を用意 する必要がある場合があります。CDI がサポートする操作マトリクス は、スクラッチ領域を必要とする条件を表示します。
- ユーザーは、仮想マシンディスクの PVC のクローンを別の namespace に作成するために 追加のパーミッション が必要です。
6.12.3.2. DataVolume について リンクのコピーリンクがクリップボードにコピーされました!
DataVolume オブジェクトは、Containerized Data Importer (CDI) プロジェクトで提供されるカスタムリソースです。DataVolume は、基礎となる PersistentVolumeClaim (PVC) に関連付けられるインポート、クローン作成、およびアップロード操作のオーケストレーションを行います。DataVolume は KubeVirt に統合され、仮想マシンが PVC の作成前に起動することを防ぎます。
6.12.3.3. DataVolumeTemplate の使用による、クローン作成された PersistentVolumeClaim からの仮想マシンの新規作成 リンクのコピーリンクがクリップボードにコピーされました!
既存の仮想マシンの PersistentVolumeClaim (PVC) のクローンを DataVolume に作成する仮想マシンを作成できます。仮想マシン spec の dataVolumeTemplate を参照することにより、source PVC のクローンが DataVolume に作成され、これは次に仮想マシンを作成するために自動的に使用されます。
DataVolume が仮想マシンの DataVolumeTemplate の一部として作成されると、DataVolume のライフサイクルは仮想マシンに依存します。つまり、仮想マシンが削除されると、DataVolume および関連付けられた PVC も削除されます。
前提条件
- 使用する既存の仮想マシンディスクの PVC を判別すること。クローン作成の前に、PVC に関連付けられた仮想マシンの電源を切る必要があります。
-
OpenShift CLI (
oc) をインストールしている。
手順
- 関連付けられた PVC の名前および namespace を特定するために、クローン作成に必要な仮想マシンを確認します。
VirtualMachineオブジェクトの YAML ファイルを作成します。以下の仮想マシンのサンプルでは、source-namespacenamespace にあるmy-favorite-vm-diskのクローンを作成します。favorite-cloneという2GiDataVolume がmy-favorite-vm-diskから作成されます。以下は例になります。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 作成する仮想マシン。
PVC のクローンが作成された DataVolume で仮想マシンを作成します。
oc create -f <vm-clone-datavolumetemplate>.yaml
$ oc create -f <vm-clone-datavolumetemplate>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
6.12.3.4. テンプレート: DataVolume 仮想マシン設定ファイル リンクのコピーリンクがクリップボードにコピーされました!
example-dv-vm.yaml
- 1
- インポートする必要のあるイメージの
HTTPソース (該当する場合)。
6.12.3.5. CDI がサポートする操作マトリックス リンクのコピーリンクがクリップボードにコピーされました!
このマトリックスにはエンドポイントに対してコンテンツタイプのサポートされる CDI 操作が表示されます。これらの操作にはスクラッチ領域が必要です。
| コンテンツタイプ | HTTP | HTTPS | HTTP Basic 認証 | レジストリー | アップロード |
|---|---|---|---|---|---|
| kubevirt (QCOW2) |
✓ QCOW2 |
✓ QCOW2** |
✓ QCOW2 |
✓ QCOW2* |
✓ QCOW2* |
| KubeVirt (RAW) |
✓ RAW |
✓ RAW |
✓ RAW |
✓ RAW* |
✓ RAW* |
| Archive+ | ✓ TAR | ✓ TAR | ✓ TAR | □ TAR | □ TAR |
✓ サポートされる操作
□ サポートされない操作
* スクラッチ領域が必要
**カスタム認証局が必要な場合にスクラッチ領域が必要
+ アーカイブはブロックモード DV をサポートしません。
6.12.4. 新規ブロックストレージ DataVolume への仮想マシンディスクのクローン作成 リンクのコピーリンクがクリップボードにコピーされました!
DataVolume 設定ファイルでソース PVC を参照し、新規ブロック DataVolume に仮想マシンディスクの PersistentVolumeClaim (PVC) のクローンを作成できます。
6.12.4.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- CDI でサポートされる操作マトリックス に応じてスクラッチ領域が必要な場合、まずは、この操作が正常に実行されるように StorageClass を定義するか、または CDI スクラッチ領域を用意 します。
- ユーザーは、仮想マシンディスクの PVC のクローンを別の namespace に作成するために 追加のパーミッション が必要です。
6.12.4.2. DataVolume について リンクのコピーリンクがクリップボードにコピーされました!
DataVolume オブジェクトは、Containerized Data Importer (CDI) プロジェクトで提供されるカスタムリソースです。DataVolume は、基礎となる PersistentVolumeClaim (PVC) に関連付けられるインポート、クローン作成、およびアップロード操作のオーケストレーションを行います。DataVolume は KubeVirt に統合され、仮想マシンが PVC の作成前に起動することを防ぎます。
6.12.4.3. ブロック PersistentVolume について リンクのコピーリンクがクリップボードにコピーされました!
ブロック PersistentVolume (PV) は、raw ブロックデバイスによってサポートされる PV です。これらのボリュームにはファイルシステムがなく、ディスクに直接書き込む仮想マシンや、独自のストレージサービスを実装する仮想マシンにはパフォーマンス上の利点があります。
raw ブロックボリュームは、PV および PersistentVolumeClaim (PVC) 仕様で volumeMode: Block を指定してプロビジョニングされます。
6.12.4.4. ローカルブロック PersistentVolume の作成 リンクのコピーリンクがクリップボードにコピーされました!
ファイルにデータを設定し、これをループデバイスとしてマウントすることにより、ノードでローカルブロック PersistentVolume (PV) を作成します。次に、このループデバイスを PV 設定で Block ボリュームとして参照し、これを仮想マシンイメージのブロックデバイスとして使用できます。
手順
-
ローカル PV を作成するノードに
rootとしてログインします。この手順では、node01を例に使用します。 ファイルを作成して、これを null 文字で設定し、ブロックデバイスとして使用できるようにします。以下の例では、2Gb (20 100Mb ブロック) のサイズのファイル
loop10を作成します。dd if=/dev/zero of=<loop10> bs=100M count=20
$ dd if=/dev/zero of=<loop10> bs=100M count=20Copy to Clipboard Copied! Toggle word wrap Toggle overflow loop10ファイルをループデバイスとしてマウントします。losetup </dev/loop10>d3 <loop10>
$ losetup </dev/loop10>d3 <loop10>1 2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow マウントされたループデバイスを参照する
PersistentVolume設定を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ブロック PV を作成します。
oc create -f <local-block-pv10.yaml>
# oc create -f <local-block-pv10.yaml>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 直前の手順で作成された PersistentVolume のファイル名。
6.12.4.5. 新規 DataVolume への仮想マシンディスクの PersistentVolumeClaim のクローン作成 リンクのコピーリンクがクリップボードにコピーされました!
既存の仮想マシンディスクの PersistentVolumeClaim (PVC) のクローンを新規 DataVolume に作成できます。その後、新規 DataVolume は新規の仮想マシンに使用できます。
Volume が仮想マシンとは別に作成される場合、DataVolume のライフサイクルは仮想マシンから切り離されます。仮想マシンが削除されても、DataVolume もその関連付けられた PVC も削除されません。
前提条件
- 使用する既存の仮想マシンディスクの PVC を判別すること。クローン作成の前に、PVC に関連付けられた仮想マシンの電源を切る必要があります。
-
OpenShift CLI (
oc) のインストール。 - ソース PVC と同じか、またはこれよりも大きい 1 つ以上の利用可能なブロック PersistentVolume (PV)。
手順
- 関連付けられた PVC の名前および namespace を特定するために、クローン作成に必要な仮想マシンディスクを確認します。
新規 DataVolume の名前、ソース PVC の名前および namespace、利用可能なブロック PV を使用できるようにするために
volumeMode: Block、および新規 DataVolume のサイズを指定する DataVolume オブジェクトの YAML ファイルを作成します。以下は例になります。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow DataVolume を作成して PVC のクローン作成を開始します。
oc create -f <cloner-datavolume>.yaml
$ oc create -f <cloner-datavolume>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記DataVolume は仮想マシンが PVC の作成前に起動することを防ぐため、PVC のクローン作成中に新規 DataVolume を参照する仮想マシンを作成できます。
6.12.4.6. CDI がサポートする操作マトリックス リンクのコピーリンクがクリップボードにコピーされました!
このマトリックスにはエンドポイントに対してコンテンツタイプのサポートされる CDI 操作が表示されます。これらの操作にはスクラッチ領域が必要です。
| コンテンツタイプ | HTTP | HTTPS | HTTP Basic 認証 | レジストリー | アップロード |
|---|---|---|---|---|---|
| kubevirt (QCOW2) |
✓ QCOW2 |
✓ QCOW2** |
✓ QCOW2 |
✓ QCOW2* |
✓ QCOW2* |
| KubeVirt (RAW) |
✓ RAW |
✓ RAW |
✓ RAW |
✓ RAW* |
✓ RAW* |
| Archive+ | ✓ TAR | ✓ TAR | ✓ TAR | □ TAR | □ TAR |
✓ サポートされる操作
□ サポートされない操作
* スクラッチ領域が必要
**カスタム認証局が必要な場合にスクラッチ領域が必要
+ アーカイブはブロックモード DV をサポートしません。
6.13. 仮想マシンのネットワーク リンクのコピーリンクがクリップボードにコピーされました!
6.13.1. 仮想マシンのデフォルト Pod ネットワークの使用 リンクのコピーリンクがクリップボードにコピーされました!
Container-native Virtualization でデフォルトの Pod ネットワークを使用できます。これを実行するには、masquerade バインディングメソッドを使用する必要があります。これは、デフォルトの Pod ネットワークを使用する場合にのみ推奨されるバインディングメソッドです。デフォルト以外のネットワークには、masquerade モードを使用しないでください。
セカンダリーネットワークの場合は、 bridge バインディングメソッドを使用します。
6.13.1.1. コマンドラインでのマスカレードモードの設定 リンクのコピーリンクがクリップボードにコピーされました!
マスカレードモードを使用し、仮想マシンの送信トラフィックを Pod IP アドレスの背後で非表示にすることができます。マスカレードモードは、ネットワークアドレス変換 (NAT) を使用して仮想マシンを Linux ブリッジ経由で Pod ネットワークバックエンドに接続します。
仮想マシンの設定ファイルを編集して、マスカレードモードを有効にし、トラフィックが仮想マシンに到達できるようにします。
前提条件
- 仮想マシンは、IPv4 アドレスを取得するために DHCP を使用できるように設定される必要がある。以下の例では、DHCP を使用するように設定されます。
6.13.1.2. バインディング方法の選択 リンクのコピーリンクがクリップボードにコピーされました!
Container-native Virtualization Web コンソールウィザード から仮想マシンを作成する場合、Networking 画面で必要なバインディングメソッドを選択します。
6.13.1.2.1. ネットワークフィールド リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 |
|---|---|
| 名前 | ネットワークインターフェイスの名前。 |
| Model | ネットワークインターフェイスカードのモデルを示します。サポートされる値は、e1000、 e1000e、ne2k_pci、pcnet, rtl8139、および virtIO です。 |
| Network | 利用可能な NetworkAttachmentDefinition オブジェクトの一覧。 |
| Type |
利用可能なバインディングメソッドの一覧。デフォルトの Pod ネットワークについては、 |
| MAC Address | ネットワークインターフェイスの MAC アドレス。MAC アドレスが指定されていない場合、セッションの一時アドレスが生成されます。 |
6.13.1.3. デフォルトネットワーク用の仮想マシン設定の例 リンクのコピーリンクがクリップボードにコピーされました!
6.13.1.3.1. テンプレート: 仮想マシンの設定ファイル リンクのコピーリンクがクリップボードにコピーされました!
6.13.1.3.2. テンプレート: Windows 仮想マシンインスタンスの設定ファイル リンクのコピーリンクがクリップボードにコピーされました!
6.13.2. 仮想マシンの複数ネットワークへの割り当て リンクのコピーリンクがクリップボードにコピーされました!
Container-native Virtualization は、仮想マシンの複数ネットワークへの接続を可能にする layer-2 vNIC ネットワーク機能を提供します。複数インターフェイスへのアクセスによって異なる既存のワークロードを持つ仮想マシンをインポートできます。また、仮想マシンをネットワーク経由で起動できるように PXE ネットワークを設定することもできます。
まず、ネットワーク管理者は Web コンソールまたは CLI で namespace のブリッジ NetworkAttachmentDefinition を設定します。次に、ユーザーは NIC を作成し、その namespace 内の Pod および仮想マシンをブリッジネットワークに割り当てることができます。
6.13.2.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)
- 管理者がネットワーク経由でサーバーからクライアントマシンを起動できるようにするインターフェイス。ネットワークのブートにより、オペレーティングシステムおよび他のソフトウェアをクライアントにリモートでロードできます。
6.13.2.2. NetworkAttachmentDefinition の作成 リンクのコピーリンクがクリップボードにコピーされました!
6.13.2.3. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- Linux ブリッジは、すべてのノードに設定して割り当てる必要がある。詳細は、ノードのネットワーク セクションを参照してください。
6.13.2.3.1. Web コンソールでの Linux ブリッジ NetworkAttachmentDefinition の作成 リンクのコピーリンクがクリップボードにコピーされました!
NetworkAttachmentDefinition は、layer-2 デバイスを Container-native Virtualization クラスターの特定の namespace に公開するカスタムリソースです。
ネットワーク管理者は、NetworkAttachmentDefinition を作成して既存の layer-2 ネットワークを Pod および仮想マシンに提供できます。
手順
- Web コンソールで、Networking → Network Attachment Definitions をクリックします。
- Create Network Attachment Definition をクリックします。
- 一意の Name およびオプションの Description を入力します。
- Network Type 一覧をクリックし、CNV Linux bridge を選択します。
- Bridge Name フィールドにブリッジの名前を入力します。
- (オプション) リソースに VLAN ID が設定されている場合、 VLAN Tag Number フィールドに ID 番号を入力します。
- Create をクリックします。
6.13.2.3.2. CLI での Linux ブリッジ NetworkAttachmentDefinition の作成 リンクのコピーリンクがクリップボードにコピーされました!
ネットワーク管理者は、タイプ cnv-bridge の NetworkAttachmentDefinition を、レイヤー 2 ネットワークを Pod および仮想マシンに提供するように設定できます。
NetworkAttachmentDefinition は Pod または仮想マシンと同じ namespace にある必要があります。
手順
任意のローカルディレクトリーで NetworkAttachmentDefinition の新規ファイルを作成します。このファイルには、お使いの設定に合わせて変更された以下の内容が含まれる必要があります。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- このアノテーションを NetworkAttachmentDefinition に追加する場合、仮想マシンインスタンスは
br0ブリッジが接続されているノードでのみ実行されます。 - 2
- 必須。ConfigMap の名前を入力します。設定名を NetworkAttachmentDefinition の
name値に一致させることが推奨されます。 - 3
- この NetworkAttachmentDefinition のネットワークを提供する Container Network Interface (CNI) プラグインの実際の名前。異なる CNI を使用するのでない限り、このフィールドは変更しないでください。
- 4
- ブリッジの名前が
br0でない場合、ブリッジの実際の名前に置き換える必要があります。 - 5
- 必須。これにより、MAC プールマネージャーが接続に固有の MAC アドレスを割り当てます。
oc create -f <resource_spec.yaml>
$ oc create -f <resource_spec.yaml>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ブリッジネットワークに接続する必要のある仮想マシンまたは仮想マシンインスタンスの設定を編集します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記仮想マシンインスタンスは、
defaultPod ネットワーク、およびa-bridge-networkという名前の NetworkAttachmentDefinition によって定義されるbridge-netの両方に接続されます。設定ファイルをリソースに適用します。
oc create -f <local/path/to/network-attachment-definition.yaml>
$ oc create -f <local/path/to/network-attachment-definition.yaml>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
次のセクションで vNIC を定義する際に、NETWORK の値が直前のセクションで作成した NetworkAttachmentDefinition のブリッジネットワーク名であることを確認します。
6.13.2.4. 仮想マシンの NIC の作成 リンクのコピーリンクがクリップボードにコピーされました!
Web コンソールから追加の NIC を作成し、これを仮想マシンに割り当てます。
手順
- Container-native Virtualization コンソールの適切なプロジェクトで、Workloads → Virtual Machines をクリックします。
- 仮想マシンを選択します。
- Network Interfaces をクリックし、仮想マシンにすでに割り当てられている NIC を表示します。
- Create Network Interface をクリックし、一覧に新規スロットを作成します。
- 新規 NIC の Name、Model、Network、 Type、および MAC Address を入力します。
- ✓ ボタンをクリックして NIC を保存し、これを仮想マシンに割り当てます。
6.13.2.5. ネットワークフィールド リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 |
|---|---|
| 名前 | ネットワークインターフェイスの名前。 |
| Model | ネットワークインターフェイスカードのモデルを示します。サポートされる値は、e1000、 e1000e、ne2k_pci、pcnet, rtl8139、および virtIO です。 |
| Network | 利用可能な NetworkAttachmentDefinition オブジェクトの一覧。 |
| Type |
利用可能なバインディングメソッドの一覧。デフォルトの Pod ネットワークについては、 |
| MAC Address | ネットワークインターフェイスの MAC アドレス。MAC アドレスが指定されていない場合、セッションの一時アドレスが生成されます。 |
仮想マシンにオプションの QEMU ゲストエージェント をインストールし、ホストが追加のネットワークについての関連情報を表示できるようにします。
6.13.3. QEMU ゲストエージェントの仮想マシンへのインストール リンクのコピーリンクがクリップボードにコピーされました!
QEMU ゲストエージェントは仮想マシンで実行されるデーモンです。エージェントは仮想マシン上で、追加ネットワークの IP アドレスなどのネットワーク情報をホストに渡します。
6.13.3.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
以下のコマンドを実行して、ゲストエージェントがインストールされており、実行中であることを確認します。
systemctl status qemu-guest-agent
$ systemctl status qemu-guest-agentCopy to Clipboard Copied! Toggle word wrap Toggle overflow
6.13.3.2. QEMU ゲストエージェントの Linux 仮想マシンへのインストール リンクのコピーリンクがクリップボードにコピーされました!
qemu-guest-agent は広く利用されており、Red Hat 仮想マシンでデフォルトで利用できます。このエージェントをインストールし、サービスを起動します。
手順
- コンソールのいずれか、または SSH を使用して仮想マシンのコマンドラインにアクセスします。
QEMU ゲストエージェントを仮想マシンにインストールします。
yum install -y qemu-guest-agent
$ yum install -y qemu-guest-agentCopy to Clipboard Copied! Toggle word wrap Toggle overflow QEMU ゲストエージェントサービスを起動します。
systemctl start qemu-guest-agent
$ systemctl start qemu-guest-agentCopy to Clipboard Copied! Toggle word wrap Toggle overflow サービスに永続性があることを確認します。
systemctl enable qemu-guest-agent
$ systemctl enable qemu-guest-agentCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Web コンソールで仮想マシンまたは仮想マシンテンプレートのいずれかを作成する際に、ウィザードの cloud-init セクションの custom script フィールドを使用して QEMU ゲストエージェントをインストールし、起動することもできます。
6.13.3.3. QEMU ゲストエージェントの Windows 仮想マシンへのインストール リンクのコピーリンクがクリップボードにコピーされました!
Windows 仮想マシンの場合、QEMU ゲストエージェントは、以下の手順のいずれかを使用してインストールできる VirtIO ドライバーに含まれています。
6.13.3.3.1. VirtIO ドライバーの既存 Windows 仮想マシンへのインストール リンクのコピーリンクがクリップボードにコピーされました!
VirtIO ドライバーを、割り当てられた SATA CD ドライブから既存の Windows 仮想マシンにインストールします。
この手順では、ドライバーを Windows に追加するための汎用的なアプローチを使用しています。このプロセスは Windows のバージョンごとに若干異なる可能性があります。特定のインストール手順については、お使いの Windows バージョンについてのインストールドキュメントを参照してください。
手順
- 仮想マシンを起動し、グラフィカルコンソールに接続します。
- Windows ユーザーセッションにログインします。
Device Manager を開き、Other devices を拡張して、Unknown device を一覧表示します。
-
Device Propertiesを開いて、不明なデバイスを特定します。デバイスを右クリックし、Properties を選択します。 - Details タブをクリックし、Property リストで Hardware Ids を選択します。
- Hardware Ids の Value をサポートされる VirtIO ドライバーと比較します。
-
- デバイスを右クリックし、Update Driver Software を選択します。
- Browse my computer for driver software をクリックし、VirtIO ドライバーが置かれている割り当て済みの SATA CD ドライブの場所に移動します。ドライバーは、ドライバーのタイプ、オペレーティングシステム、および CPU アーキテクチャー別に階層的に編成されます。
- Next をクリックしてドライバーをインストールします。
- 必要なすべての VirtIO ドライバーに対してこのプロセスを繰り返します。
- ドライバーのインストール後に、Close をクリックしてウィンドウを閉じます。
- 仮想マシンを再起動してドライバーのインストールを完了します。
6.13.3.3.2. Windows インストール時の VirtIO ドライバーのインストール リンクのコピーリンクがクリップボードにコピーされました!
Windows のインストール時に割り当てられた SATA CD ドライバーから VirtIO ドライバーをインストールします。
この手順では、Windows インストールの汎用的なアプローチを使用しますが、インストール方法は Windows のバージョンごとに異なる可能性があります。インストールする Windows のバージョンについてのドキュメントを参照してください。
手順
- 仮想マシンを起動し、グラフィカルコンソールに接続します。
- Windows インストールプロセスを開始します。
- Advanced インストールを選択します。
-
ストレージの宛先は、ドライバーがロードされるまで認識されません。
Load driverをクリックします。 - ドライバーは SATA CD ドライブとして割り当てられます。OK をクリックし、CD ドライバーでロードするストレージドライバーを参照します。ドライバーは、ドライバーのタイプ、オペレーティングシステム、および CPU アーキテクチャー別に階層的に編成されます。
- 必要なすべてのドライバーについて直前の 2 つの手順を繰り返します。
- Windows インストールを完了します。
6.13.4. vNIC の IP アドレスの仮想マシンへの表示 リンクのコピーリンクがクリップボードにコピーされました!
QEMU ゲストエージェントは仮想マシンで実行され、割り当てられた NIC の IP アドレスをホストに渡します。 これにより、Web コンソールおよび oc クライアントの両方から IP アドレスを表示できます。
6.13.4.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
以下のコマンドを実行して、ゲストエージェントがインストールされており、実行中であることを確認します。
systemctl status qemu-guest-agent
$ systemctl status qemu-guest-agentCopy to Clipboard Copied! Toggle word wrap Toggle overflow - ゲストエージェントがインストールされておらず、実行されていない場合は、仮想マシン上でゲストエージェントをインストールし、実行します。
6.13.4.2. CLI での仮想マシンインターフェイスの IP アドレスの表示 リンクのコピーリンクがクリップボードにコピーされました!
ネットワークインターフェイス設定は oc describe vmi <vmi_name> コマンドに含まれます。
IP アドレス情報は、仮想マシン上で ip addr を実行するか、または oc get vmi <vmi_name> -o yaml を実行して表示することもできます。
手順
oc describeコマンドを使用して、仮想マシンインターフェイス設定を表示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.13.4.3. Web コンソールでの仮想マシンインターフェイスの IP アドレスの表示 リンクのコピーリンクがクリップボードにコピーされました!
IP 情報は、仮想マシンの Virtual Machine Overview 画面に表示されます。
手順
- Container-native Virtualization コンソールで Workloads → Virtual Machinesをクリックします。
- 仮想マシンの名前をクリックして、Virtual Machine Overview 画面を開きます。
それぞれの割り当てられた NIC の情報は IP ADDRESSES の下に表示されます。
6.14. 仮想マシンディスク リンクのコピーリンクがクリップボードにコピーされました!
6.14.1. 仮想マシンのローカルストレージの設定 リンクのコピーリンクがクリップボードにコピーされました!
ホストパスプロビジョナー機能を使用して、仮想マシンのローカルストレージを設定できます。
6.14.1.1. ホストパスプロビジョナーについて リンクのコピーリンクがクリップボードにコピーされました!
ホストパスプロビジョナーは、Container-native Virtualization 用に設計されたローカルストレージプロビジョナーです。仮想マシンのローカルストレージを設定する必要がある場合、まずホストパスプロビジョナーを有効にする必要があります。
Container-native Virtualization Operator のインストール時に、ホストパスプロビジョナー Operator は自動的にインストールされます。これを使用するには、以下を実行する必要があります。
SELinux を設定します。
- Red Hat Enterprise Linux CoreOS 8 ワーカーを使用する場合は、各ノードに MachineConfig オブジェクトを作成する必要があります。
-
それ以外の場合には、SELinux ラベル
container_file_tを各ノードの PersistentVolume (PV) バッキングディレクトリーに適用します。
- HostPathProvisioner カスタムリソースを作成します。
-
ホストパスプロビジョナーの
StorageClassオブジェクトを作成します。
ホストパスプロビジョナー Operator は、カスタムリソースの作成時にプロビジョナーを各ノードに DaemonSet としてデプロイします。カスタムリソースファイルでは、ホストパスプロビジョナーが作成する PersistentVolume のバッキングディレクトリーを指定します。
6.14.1.2. Red Hat Enterprise Linux CoreOS 8 でのホストパスプロビジョナー用の SELinux の設定 リンクのコピーリンクがクリップボードにコピーされました!
HostPathProvisioner カスタムリソースを作成する前に、SELinux を設定する必要があります。Red Hat Enterprise Linux CoreOS 8 ワーカーで SELinux を設定するには、各ノードに MachineConfig オブジェクトを作成する必要があります。
Red Hat Enterprise Linux CoreOS ワーカーを使用しない場合は、この手順を省略します。
前提条件
- ホストパスプロビジョナーが作成する PersistentVolume (PV) 用に、各ノードにバッキングディレクトリーを作成します。
手順
MachineConfig ファイルを作成します。以下は例になります。
touch machineconfig.yaml
$ touch machineconfig.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow ファイルを編集し、ホストパスプロビジョナーが PV を作成するディレクトリーを組み込みます。以下に例を示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- プロビジョナーが PV を作成するバッキングディレクトリーを指定します。
MachineConfigオブジェクトを作成します。oc create -f machineconfig.yaml -n <namespace>
$ oc create -f machineconfig.yaml -n <namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.14.1.3. ホストパスプロビジョナーを使用したローカルストレージの有効化 リンクのコピーリンクがクリップボードにコピーされました!
ホストパスプロビジョナーをデプロイし、仮想マシンがローカルストレージを使用できるようにするには、最初に HostPathProvisioner カスタムリソースを作成します。
前提条件
- ホストパスプロビジョナーが作成する PersistentVolume (PV) 用に、各ノードにバッキングディレクトリーを作成します。
SELinux コンテキスト
container_file_tを各ノードの PV バッキングディレクトリーに適用します。以下は例になります。sudo chcon -t container_file_t -R </path/to/backing/directory>
$ sudo chcon -t container_file_t -R </path/to/backing/directory>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記Red Hat Enterprise Linux CoreOS 8 ワーカーを使用する場合は、代わりに MachineConfig マニフェストを使用して SELinux を設定する必要があります。
手順
HostPathProvisioner カスタムリソースファイルを作成します。以下は例になります。
touch hostpathprovisioner_cr.yaml
$ touch hostpathprovisioner_cr.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow ファイルを編集し、
spec.pathConfig.pathの値がホストパスプロビジョナーが PV を作成するディレクトリーであることを確認します。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記バッキングディレクトリーを作成していない場合、プロビジョナーはこの作成を試行します。
container_file_tSELinux コンテキストを適用していない場合、これによりPermission deniedエラーが生じる可能性があります。openshift-cnvnamespace にカスタムリソースを作成します。oc create -f hostpathprovisioner_cr.yaml -n openshift-cnv
$ oc create -f hostpathprovisioner_cr.yaml -n openshift-cnvCopy to Clipboard Copied! Toggle word wrap Toggle overflow
6.14.1.4. StorageClass オブジェクトの作成 リンクのコピーリンクがクリップボードにコピーされました!
StorageClass オブジェクトの作成時に、ストレージクラスに属する PersistentVolume (PV) の動的プロビジョニングに影響するパラメーターを設定します。
StorageClass オブジェクトの作成後には、このオブジェクトのパラメーターを更新できません。
手順
ストレージクラスを定義する YAML ファイルを作成します。以下に例を示します。
touch storageclass.yaml
$ touch storageclass.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow ファイルを編集します。以下に例を示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- この値を変更することで、オプションでストレージクラスの名前を変更できます。
- 2
reclaimPolicyには、DeleteおよびRetainの 2 つの値があります。値を指定しない場合、ストレージクラスはデフォルトでDeleteに設定されます。- 3
volumeBindingMode値は、動的プロビジョニングおよびボリュームバインディングが実行されるタイミングを決定します。WaitForFirstConsumerを指定して、PersistentVolumeClaim (PVC) を使用する Pod が作成されるまで PV のバインディングおよびプロビジョニングを遅延させます。これにより、PV が Pod のスケジュール要件を満たすようになります。
StorageClassオブジェクトを作成します。oc create -f storageclass.yaml
$ oc create -f storageclass.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
追加情報
6.14.2. virtctl ツールの使用によるローカルディスクイメージのアップロード リンクのコピーリンクがクリップボードにコピーされました!
virtctl コマンドラインユーティリティーを使用して、ローカルに保存されたディスクイメージを新規の DataVolume にアップロードできます。
6.14.2.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
-
kubevirt-virtctlパッケージの インストール - CDI でサポートされる操作マトリックス に応じてスクラッチ領域が必要な場合、まずは、この操作が正常に実行されるように StorageClass を定義するか、または CDI スクラッチ領域を用意 します。
6.14.2.2. DataVolume について リンクのコピーリンクがクリップボードにコピーされました!
DataVolume オブジェクトは、Containerized Data Importer (CDI) プロジェクトで提供されるカスタムリソースです。DataVolume は、基礎となる PersistentVolumeClaim (PVC) に関連付けられるインポート、クローン作成、およびアップロード操作のオーケストレーションを行います。DataVolume は KubeVirt に統合され、仮想マシンが PVC の作成前に起動することを防ぎます。
6.14.2.3. アップロード DataVolume の作成 リンクのコピーリンクがクリップボードにコピーされました!
ローカルディスクイメージのアップロードに使用する upload データソースで DataVolume を手動で作成できます。
手順
spec: source: upload{}を指定する DataVolume 設定を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して DataVolume を作成します。
oc create -f <upload-datavolume>.yaml
$ oc create -f <upload-datavolume>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
6.14.2.4. ローカルディスクイメージの DataVolume へのアップロード リンクのコピーリンクがクリップボードにコピーされました!
virtctl CLI ユーティリティーを使用して、ローカルディスクイメージをクライアントマシンからクラスター内の DataVolume (DV) にアップロードできます。この手順の実行時に、すでにクラスターに存在する DV を使用するか、または新規の DV を作成することができます。
ローカルディスクイメージのアップロード後に、これを仮想マシンに追加できます。
前提条件
-
RAW、ISO、または QCOW2 形式の仮想マシンディスクイメージ (オプションで
xzまたはgzを使用して圧縮される) -
kubevirt-virtctlパッケージがクライアントマシンにインストールされていること。 - クライアントマシンが OpenShift Container Platform ルーターの証明書を信頼するように設定されていること。
手順
以下を特定します。
- 使用するアップロード DataVolume の名前。この DataVolume が存在しない場合、これは自動的に作成されます。
- DataVolume のサイズ (アップロード手順の実行時に作成する必要がある場合)。サイズはディスクイメージのサイズ以上である必要があります。
- アップロードする必要のある仮想マシンディスクイメージのファイルの場所。
virtctl image-uploadコマンドを実行してディスクイメージをアップロードします。直前の手順で特定したパラメーターを指定します。以下は例になります。virtctl image-upload dv <datavolume_name> \ --size=<datavolume_size> \ --image-path=</path/to/image> \
$ virtctl image-upload dv <datavolume_name> \1 --size=<datavolume_size> \2 --image-path=</path/to/image> \3 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記-
新規 DataVolume を作成する必要がない場合は、
--sizeパラメーターを省略し、--no-createフラグを含めます。 -
HTTPS を使用したセキュアでないサーバー接続を許可するには、
--insecureパラメーターを使用します。--insecureフラグを使用する際に、アップロードエンドポイントの信頼性は検証 されない 点に注意してください。
-
新規 DataVolume を作成する必要がない場合は、
オプション。DataVolume が作成されたことを確認するには、以下のコマンドを実行してすべての DataVolume オブジェクトを表示します。
oc get dvs
$ oc get dvsCopy to Clipboard Copied! Toggle word wrap Toggle overflow
6.14.2.5. CDI がサポートする操作マトリックス リンクのコピーリンクがクリップボードにコピーされました!
このマトリックスにはエンドポイントに対してコンテンツタイプのサポートされる CDI 操作が表示されます。これらの操作にはスクラッチ領域が必要です。
| コンテンツタイプ | HTTP | HTTPS | HTTP Basic 認証 | レジストリー | アップロード |
|---|---|---|---|---|---|
| kubevirt (QCOW2) |
✓ QCOW2 |
✓ QCOW2** |
✓ QCOW2 |
✓ QCOW2* |
✓ QCOW2* |
| KubeVirt (RAW) |
✓ RAW |
✓ RAW |
✓ RAW |
✓ RAW* |
✓ RAW* |
| Archive+ | ✓ TAR | ✓ TAR | ✓ TAR | □ TAR | □ TAR |
✓ サポートされる操作
□ サポートされない操作
* スクラッチ領域が必要
**カスタム認証局が必要な場合にスクラッチ領域が必要
+ アーカイブはブロックモード DV をサポートしません。
6.14.3. ブロックストレージ DataVolume へのローカルディスクイメージのアップロード リンクのコピーリンクがクリップボードにコピーされました!
virtctl コマンドラインユーティリティーを使用して、ローカルのディスクイメージをブロック DataVolume にアップロードできます。
このワークフローでは、ローカルブロックデバイスを使用して PersistentVolume を使用し、このブロックボリュームを upload DataVolume に関連付け、 virtctl を使用してローカルディスクイメージを DataVolume にアップロードできます。
6.14.3.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
-
kubevirt-virtctlパッケージの インストール - CDI でサポートされる操作マトリックス に応じてスクラッチ領域が必要な場合、まずは、この操作が正常に実行されるように StorageClass を定義するか、または CDI スクラッチ領域を用意 します。
6.14.3.2. DataVolume について リンクのコピーリンクがクリップボードにコピーされました!
DataVolume オブジェクトは、Containerized Data Importer (CDI) プロジェクトで提供されるカスタムリソースです。DataVolume は、基礎となる PersistentVolumeClaim (PVC) に関連付けられるインポート、クローン作成、およびアップロード操作のオーケストレーションを行います。DataVolume は KubeVirt に統合され、仮想マシンが PVC の作成前に起動することを防ぎます。
6.14.3.3. ブロック PersistentVolume について リンクのコピーリンクがクリップボードにコピーされました!
ブロック PersistentVolume (PV) は、raw ブロックデバイスによってサポートされる PV です。これらのボリュームにはファイルシステムがなく、ディスクに直接書き込む仮想マシンや、独自のストレージサービスを実装する仮想マシンにはパフォーマンス上の利点があります。
raw ブロックボリュームは、PV および PersistentVolumeClaim (PVC) 仕様で volumeMode: Block を指定してプロビジョニングされます。
6.14.3.4. ローカルブロック PersistentVolume の作成 リンクのコピーリンクがクリップボードにコピーされました!
ファイルにデータを設定し、これをループデバイスとしてマウントすることにより、ノードでローカルブロック PersistentVolume (PV) を作成します。次に、このループデバイスを PV 設定で Block ボリュームとして参照し、これを仮想マシンイメージのブロックデバイスとして使用できます。
手順
-
ローカル PV を作成するノードに
rootとしてログインします。この手順では、node01を例に使用します。 ファイルを作成して、これを null 文字で設定し、ブロックデバイスとして使用できるようにします。以下の例では、2Gb (20 100Mb ブロック) のサイズのファイル
loop10を作成します。dd if=/dev/zero of=<loop10> bs=100M count=20
$ dd if=/dev/zero of=<loop10> bs=100M count=20Copy to Clipboard Copied! Toggle word wrap Toggle overflow loop10ファイルをループデバイスとしてマウントします。losetup </dev/loop10>d3 <loop10>
$ losetup </dev/loop10>d3 <loop10>1 2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow マウントされたループデバイスを参照する
PersistentVolume設定を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ブロック PV を作成します。
oc create -f <local-block-pv10.yaml>
# oc create -f <local-block-pv10.yaml>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 直前の手順で作成された PersistentVolume のファイル名。
6.14.3.5. アップロード DataVolume の作成 リンクのコピーリンクがクリップボードにコピーされました!
ローカルディスクイメージのアップロードに使用する upload データソースで DataVolume を手動で作成できます。
手順
spec: source: upload{}を指定する DataVolume 設定を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して DataVolume を作成します。
oc create -f <upload-datavolume>.yaml
$ oc create -f <upload-datavolume>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
6.14.3.6. ローカルディスクイメージの DataVolume へのアップロード リンクのコピーリンクがクリップボードにコピーされました!
virtctl CLI ユーティリティーを使用して、ローカルディスクイメージをクライアントマシンからクラスター内の DataVolume (DV) にアップロードできます。この手順の実行時に、すでにクラスターに存在する DV を使用するか、または新規の DV を作成することができます。
ローカルディスクイメージのアップロード後に、これを仮想マシンに追加できます。
前提条件
-
RAW、ISO、または QCOW2 形式の仮想マシンディスクイメージ (オプションで
xzまたはgzを使用して圧縮される) -
kubevirt-virtctlパッケージがクライアントマシンにインストールされていること。 - クライアントマシンが OpenShift Container Platform ルーターの証明書を信頼するように設定されていること。
手順
以下を特定します。
- 使用するアップロード DataVolume の名前。この DataVolume が存在しない場合、これは自動的に作成されます。
- DataVolume のサイズ (アップロード手順の実行時に作成する必要がある場合)。サイズはディスクイメージのサイズ以上である必要があります。
- アップロードする必要のある仮想マシンディスクイメージのファイルの場所。
virtctl image-uploadコマンドを実行してディスクイメージをアップロードします。直前の手順で特定したパラメーターを指定します。以下は例になります。virtctl image-upload dv <datavolume_name> \ --size=<datavolume_size> \ --image-path=</path/to/image> \
$ virtctl image-upload dv <datavolume_name> \1 --size=<datavolume_size> \2 --image-path=</path/to/image> \3 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記-
新規 DataVolume を作成する必要がない場合は、
--sizeパラメーターを省略し、--no-createフラグを含めます。 -
HTTPS を使用したセキュアでないサーバー接続を許可するには、
--insecureパラメーターを使用します。--insecureフラグを使用する際に、アップロードエンドポイントの信頼性は検証 されない 点に注意してください。
-
新規 DataVolume を作成する必要がない場合は、
オプション。DataVolume が作成されたことを確認するには、以下のコマンドを実行してすべての DataVolume オブジェクトを表示します。
oc get dvs
$ oc get dvsCopy to Clipboard Copied! Toggle word wrap Toggle overflow
6.14.3.7. CDI がサポートする操作マトリックス リンクのコピーリンクがクリップボードにコピーされました!
このマトリックスにはエンドポイントに対してコンテンツタイプのサポートされる CDI 操作が表示されます。これらの操作にはスクラッチ領域が必要です。
| コンテンツタイプ | HTTP | HTTPS | HTTP Basic 認証 | レジストリー | アップロード |
|---|---|---|---|---|---|
| kubevirt (QCOW2) |
✓ QCOW2 |
✓ QCOW2** |
✓ QCOW2 |
✓ QCOW2* |
✓ QCOW2* |
| KubeVirt (RAW) |
✓ RAW |
✓ RAW |
✓ RAW |
✓ RAW* |
✓ RAW* |
| Archive+ | ✓ TAR | ✓ TAR | ✓ TAR | □ TAR | □ TAR |
✓ サポートされる操作
□ サポートされない操作
* スクラッチ領域が必要
**カスタム認証局が必要な場合にスクラッチ領域が必要
+ アーカイブはブロックモード DV をサポートしません。
6.14.4. ローカル仮想マシンディスクの別のノードへの移動 リンクのコピーリンクがクリップボードにコピーされました!
ローカルボリュームストレージを使用する仮想マシンは、特定のノードで実行されるように移動することができます。
以下の理由により、仮想マシンを特定のノードに移動する場合があります。
- 現在のノードにローカルストレージ設定に関する制限がある。
- 新規ノードがその仮想マシンのワークロードに対して最適化されている。
ローカルストレージを使用する仮想マシンを移行するには、DataVolume を使用して基礎となるボリュームのクローンを作成する必要があります。クローン操作が完了したら、新規 DataVolume を使用できるように 仮想マシン設定を編集 するか、または 新規 DataVolume を別の仮想マシンに追加 できます。
cluster-admin ロールのないユーザーには、複数の namespace 間でボリュームのクローンを作成できるように 追加のユーザーパーミッション が必要になります。
6.14.4.1. ローカルボリュームの別のノードへのクローン作成 リンクのコピーリンクがクリップボードにコピーされました!
基礎となる PersistentVolumeClaim (PVC) のクローンを作成して、仮想マシンディスクを特定のノードで実行するように移行することができます。
仮想マシンディスクのノードが適切なノードに作成されることを確認するには、新規の PersistentVolume (PV) を作成するか、または該当するノードでそれを特定します。一意のラベルを PV に適用し、これが DataVolume で参照できるようにします。
宛先 PV のサイズはソース PVC と同じか、またはそれよりも大きくなければなりません。宛先 PV がソース PVC よりも小さい場合、クローン作成操作は失敗します。
前提条件
- 仮想マシンが実行されていないこと。仮想マシンディスクのクローンを作成する前に、仮想マシンの電源を切ります。
手順
ノードに新規のローカル PV を作成するか、またはノードにすでに存在しているローカル PV を特定します。
nodeAffinity.nodeSelectorTermsパラメーターを含むローカル PV を作成します。以下のマニフェストは、node01に10Giのローカル PV を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ターゲットノードに存在する PV を特定します。設定の
nodeAffinityフィールドを確認して、PV がプロビジョニングされるノードを特定することができます。oc get pv <destination-pv> -o yaml
$ oc get pv <destination-pv> -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のスニペットは、PV が
node01にあることを示しています。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
PV に一意のラベルを追加します。
oc label pv <destination-pv> node=node01
$ oc label pv <destination-pv> node=node01Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下を参照する DataVolume マニフェストを作成します。
DataVolume マニフェストをクラスターに適用してクローン作成の操作を開始します。
oc apply -f <clone-datavolume.yaml>
$ oc apply -f <clone-datavolume.yaml>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
DataVolume は、仮想マシンの PVC のクローンを特定のノード上の PV に作成します。
6.14.5. 空のディスクイメージを追加して仮想ストレージを拡張する リンクのコピーリンクがクリップボードにコピーされました!
空のディスクイメージを Container-native Virtualization に追加することによって、ストレージ容量を拡張したり、新規のデータパーティションを作成したりできます。
6.14.5.1. DataVolume について リンクのコピーリンクがクリップボードにコピーされました!
DataVolume オブジェクトは、Containerized Data Importer (CDI) プロジェクトで提供されるカスタムリソースです。DataVolume は、基礎となる PersistentVolumeClaim (PVC) に関連付けられるインポート、クローン作成、およびアップロード操作のオーケストレーションを行います。DataVolume は KubeVirt に統合され、仮想マシンが PVC の作成前に起動することを防ぎます。
6.14.5.2. DataVolume を使用した空のディスクイメージの作成 リンクのコピーリンクがクリップボードにコピーされました!
DataVolume 設定ファイルをカスタマイズし、デプロイすることにより、新規の空のディスクイメージを PersistentVolumeClaim に作成することができます。
前提条件
- 1 つ以上の利用可能な PersistentVolume
-
OpenShift CLI (
oc) のインストール。
手順
DataVolume 設定ファイルを編集します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して、空のディスクイメージを作成します。
oc create -f <blank-image-datavolume>.yaml
$ oc create -f <blank-image-datavolume>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
6.14.5.3. テンプレート: 空のディスクイメージの DataVolume 設定ファイル リンクのコピーリンクがクリップボードにコピーされました!
blank-image-datavolume.yaml
6.14.6. DataVolume のストレージのデフォルト リンクのコピーリンクがクリップボードにコピーされました!
kubevirt-storage-class-defaults ConfigMap は DataVolume の アクセスモード および ボリュームモード のデフォルト設定を提供します。Web コンソールで、基礎となるストレージにより適した DataVolume を作成するために、ConfigMap に対してストレージクラスのデフォルトを編集したり、追加したりできます。
6.14.6.1. DataVolume のストレージ設定について リンクのコピーリンクがクリップボードにコピーされました!
DataVolume では、定義された アクセスモード と ボリュームモード を Web コンソールで作成する必要があります。これらのストレージ設定は、デフォルトで ReadWriteOnce アクセスモードおよび Filesystem ボリュームモードで設定されます。
これらの設定は、openshift-cnv namespace で kubevirt-storage-class-defaults ConfigMap を編集して変更できます。また、異なるストレージタイプについて Web コンソールで DataVolume を作成するために、他のストレージクラスの設定を追加することもできます。
基礎となるストレージでサポートされるストレージ設定を設定する必要があります。
Web コンソールで作成するすべての DataVolume は、ConfigMap にも定義されるストレージクラスを指定しない限り、デフォルトのストレージ設定を使用します。
6.14.6.1.1. アクセスモード リンクのコピーリンクがクリップボードにコピーされました!
DataVolume は以下のアクセスモードをサポートします。
-
ReadWriteOnce: ボリュームは単一ノードで、read-write としてマウントできます。ReadWriteOnceにはより多様性があり、これはデフォルトの設定です。 -
ReadWriteMany: ボリュームは数多くのノードで、read-write としてマウントできます。ReadWriteManyは、ノード間の仮想マシンのライブマイグレーションなどの、一部の機能で必要になります。
ReadWriteMany は、基礎となるストレージがこれをサポートしている場合に推奨されます。
6.14.6.1.2. ボリュームモード リンクのコピーリンクがクリップボードにコピーされました!
ボリュームモードは、ボリュームをフォーマットされたファイルシステムで使用するか、または raw ブロック状態のままにするかを定義します。DataVolume は以下のボリュームモードをサポートします。
-
Filesystem: DataVolume にファイルシステムを作成します。これはデフォルトの設定です。 -
Block: ブロック DataVolume を作成します。基礎となるストレージがサポートしている場合は、Blockを使用します。
6.14.6.2. Web コンソールでの kubevirt-storage-class-defaults ConfigMap の編集 リンクのコピーリンクがクリップボードにコピーされました!
DataVolume のストレージ設定を、openshift-cnv namespace の kubevirt-storage-class-defaults ConfigMap を編集して変更します。また、異なるストレージタイプについて Web コンソールで DataVolume を作成するために、他のストレージクラスの設定を追加することもできます。
基礎となるストレージでサポートされるストレージ設定を設定する必要があります。
手順
- サイドメニューから、Workloads → Config Maps をクリックします。
- Project 一覧で、openshift-cnv を選択します。
- kubevirt-storage-class-defaults をクリックして Config Map Overview を開きます。
- YAML タブをクリックして編集可能な設定を表示します。
基礎となるストレージに適したストレージ設定で
dataの値を更新します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Save をクリックして ConfigMap を更新します。
6.14.6.3. CLI での kubevirt-storage-class-defaults ConfigMap の編集 リンクのコピーリンクがクリップボードにコピーされました!
DataVolume のストレージ設定を、openshift-cnv namespace の kubevirt-storage-class-defaults ConfigMap を編集して変更します。また、異なるストレージタイプについて Web コンソールで DataVolume を作成するために、他のストレージクラスの設定を追加することもできます。
基礎となるストレージでサポートされるストレージ設定を設定する必要があります。
手順
oc editを使用して ConfigMap を編集します。oc edit configmap kubevirt-storage-class-defaults -n openshift-cnv
$ oc edit configmap kubevirt-storage-class-defaults -n openshift-cnvCopy to Clipboard Copied! Toggle word wrap Toggle overflow ConfigMap の
data値を更新します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - エディターを保存し、終了して ConfigMap を更新します。
6.14.6.4. 複数のストレージクラスのデフォルト例 リンクのコピーリンクがクリップボードにコピーされました!
以下の YAML ファイルは、kubevirt-storage-class-defaults ConfigMap の例です。これには、migration および block の 2 つのストレージクラスについてストレージが設定されます。
ConfigMap を更新する前に、すべての設定が基礎となるストレージでサポートされていることを確認してください。
6.14.7. CDI のスクラッチ領域の用意 リンクのコピーリンクがクリップボードにコピーされました!
6.14.7.1. DataVolume について リンクのコピーリンクがクリップボードにコピーされました!
DataVolume オブジェクトは、Containerized Data Importer (CDI) プロジェクトで提供されるカスタムリソースです。DataVolume は、基礎となる PersistentVolumeClaim (PVC) に関連付けられるインポート、クローン作成、およびアップロード操作のオーケストレーションを行います。DataVolume は KubeVirt に統合され、仮想マシンが PVC の作成前に起動することを防ぎます。
6.14.7.2. スクラッチ領域について リンクのコピーリンクがクリップボードにコピーされました!
Containerized Data Importer (CDI) では、仮想マシンイメージのインポートやアップロードなどの、一部の操作を実行するためにスクラッチ領域 (一時ストレージ) が必要になります。このプロセスで、CDI は、宛先 DataVolume (DV) をサポートする PVC のサイズと同じサイズのスクラッチ領域 PVC をプロビジョニングします。スクラッチ領域 PVC は操作の完了または中止後に削除されます。
CDIConfig オブジェクトにより、 scratchSpaceStorageClass を CDIConfig オブジェクトの spec: セクションに指定して、スクラッチ領域 PVC をバインドするために使用する StorageClass を定義することができます。
定義された StorageClass がクラスターの StorageClass に一致しない場合、クラスターに定義されたデフォルト StorageClass が使用されます。クラスターで定義されたデフォルトの StorageClass がない場合、元の DV または PVC のプロビジョニングに使用される StorageClass が使用されます。
CDI では、元の DataVolume をサポートする PVC の種類を問わず、file ボリュームモードが設定されているスクラッチ領域が必要です。元の PVC が block ボリュームモードでサポートされる場合、file ボリュームモード PVC をプロビジョニングできる StorageClass を定義する必要があります。
手動プロビジョニング
ストレージクラスがない場合、CDI はイメージのサイズ要件に一致するプロジェクトの PVC を使用します。これらの要件に一致する PVC がない場合、CDI インポート Pod は適切な PVC が利用可能になるまで、またはタイムアウト機能が Pod を強制終了するまで Pending 状態になります。
6.14.7.3. スクラッチ領域を必要とする CDI 操作 リンクのコピーリンクがクリップボードにコピーされました!
| Type | 理由 |
|---|---|
| レジストリーのインポート | CDI はイメージをスクラッチ領域にダウンロードし、イメージファイルを見つけるためにレイヤーを抽出する必要があります。その後、raw ディスクに変換するためにイメージファイルが QEMU-img に渡されます。 |
| イメージのアップロード | QEMU-IMG は STDIN の入力を受け入れません。代わりに、アップロードするイメージは、変換のために QEMU-IMG に渡される前にスクラッチ領域に保存されます。 |
| アーカイブされたイメージの HTTP インポート | QEMU-IMG は、CDI がサポートするアーカイブ形式の処理方法を認識しません。イメージが QEMU-IMG に渡される前にアーカイブは解除され、スクラッチ領域に保存されます。 |
| 認証されたイメージの HTTP インポート | QEMU-IMG が認証を適切に処理しません。イメージが QEMU-IMG に渡される前にスクラッチ領域に保存され、認証されます。 |
| カスタム証明書の HTTP インポート | QEMU-IMG は HTTPS エンドポイントのカスタム証明書を適切に処理しません。代わりに CDI は、ファイルを QEMU-IMG に渡す前にイメージをスクラッチ領域にダウンロードします。 |
6.14.7.4. CDI 設定での StorageClass の定義 リンクのコピーリンクがクリップボードにコピーされました!
CDI 設定で StorageClass を定義し、CDI 操作のスクラッチ領域を動的にプロビジョニングします。
手順
ocクライアントを使用してcdiconfig/configを編集し、spec: scratchSpaceStorageClassを追加または編集してクラスターの StorageClass に一致させます。oc edit cdiconfig/config
$ oc edit cdiconfig/configCopy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.14.7.5. CDI がサポートする操作マトリックス リンクのコピーリンクがクリップボードにコピーされました!
このマトリックスにはエンドポイントに対してコンテンツタイプのサポートされる CDI 操作が表示されます。これらの操作にはスクラッチ領域が必要です。
| コンテンツタイプ | HTTP | HTTPS | HTTP Basic 認証 | レジストリー | アップロード |
|---|---|---|---|---|---|
| kubevirt (QCOW2) |
✓ QCOW2 |
✓ QCOW2** |
✓ QCOW2 |
✓ QCOW2* |
✓ QCOW2* |
| KubeVirt (RAW) |
✓ RAW |
✓ RAW |
✓ RAW |
✓ RAW* |
✓ RAW* |
| Archive+ | ✓ TAR | ✓ TAR | ✓ TAR | □ TAR | □ TAR |
✓ サポートされる操作
□ サポートされない操作
* スクラッチ領域が必要
**カスタム認証局が必要な場合にスクラッチ領域が必要
+ アーカイブはブロックモード DV をサポートしません。
追加リソース
- StorageClass およびこれらがクラスターで定義される方法についての詳細は、Dynamic provisioning セクションを参照してください。
6.14.8. DataVolume の削除 リンクのコピーリンクがクリップボードにコピーされました!
oc コマンドラインインターフェイスを使用して、DataVolume を手動で削除できます。
仮想マシンを削除する際に、これが使用する DataVolume は自動的に削除されます。
6.14.8.1. DataVolume について リンクのコピーリンクがクリップボードにコピーされました!
DataVolume オブジェクトは、Containerized Data Importer (CDI) プロジェクトで提供されるカスタムリソースです。DataVolume は、基礎となる PersistentVolumeClaim (PVC) に関連付けられるインポート、クローン作成、およびアップロード操作のオーケストレーションを行います。DataVolume は KubeVirt に統合され、仮想マシンが PVC の作成前に起動することを防ぎます。
6.14.8.2. すべての DataVolume の一覧表示 リンクのコピーリンクがクリップボードにコピーされました!
oc コマンドラインインターフェイスを使用して、クラスターの DataVolume を一覧表示できます。
手順
以下のコマンドを実行して、DataVolume を一覧表示します。
oc get dvs
$ oc get dvsCopy to Clipboard Copied! Toggle word wrap Toggle overflow
6.14.8.3. DataVolume の削除 リンクのコピーリンクがクリップボードにコピーされました!
oc コマンドラインインターフェイス (CLI) を使用して DataVolume を削除できます。
前提条件
- 削除する必要のある DataVolume の名前を特定します。
手順
以下のコマンドを実行し、DataVolume を削除します。
oc delete dv <datavolume_name>
$ oc delete dv <datavolume_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記このコマンドは、現在のプロジェクトに存在するオブジェクトのみを削除します。削除する必要のあるオブジェクトが別のプロジェクトまたは namespace にある場合、
-n <project_name>オプションを指定します。
第7章 仮想マシンテンプレート リンクのコピーリンクがクリップボードにコピーされました!
7.1. 仮想マシンテンプレートの作成 リンクのコピーリンクがクリップボードにコピーされました!
仮想マシンテンプレートの使用は、同様の設定を持つ複数の仮想マシンを作成するための簡単な方法です。テンプレートの作成後、仮想マシンの作成時にテンプレートを参照できます。
7.1.1. Web コンソールでのインタラクティブなウィザードを使用した仮想マシンテンプレートの作成 リンクのコピーリンクがクリップボードにコピーされました!
Web コンソールは、General、 Networking、Storage、Advanced、および Review ステップに移動し、仮想マシンテンプレートの作成プロセスを単純化するインタラクティブなウィザードを特長としています。すべての必須フィールドには * のマークが付けられます。ウィザードは必須フィールドへの値の入力が完了するまで次のステップに移動することを防ぎます。
手順
- Container-native Virtualization コンソールで Workloads → Virtual Machine Templates をクリックします。
- Create Template をクリックし、New with Wizard を選択します。
- General ステップで必要なすべてのフィールドに入力します。
Next をクリックして Networking 画面に進みます。デフォルトで
nic0という名前の NIC が割り当てられます。- オプション: Add Network Interface をクリックし、追加の NIC を作成します。
-
オプション: すべての NIC の削除は、Options メニュー
をクリックし、Delete を選択して実行できます。テンプレートから作成される仮想マシンには、割り当てられている NIC は不要です。NIC は仮想マシンの作成後に作成できます。
Next をクリックして Storage 画面に進みます。
- オプション: Add Disk をクリックして追加のディスクを作成します。
- オプション: ディスクをクリックして選択可能なフィールドを変更します。✓ ボタンをクリックして変更を保存します。
オプション: Disk をクリックし、Select Storage の一覧から利用可能なディスクを選択します。
注記URL または Container のいずれかが General ステップで Source として選択される場合、
rootdiskディスクが作成され、Bootable Disk として仮想マシンに割り当てられます。rootdiskを変更できますが、これを削除することはできません。Bootable Disk は、仮想マシンにディスクが割り当てられていない場合、PXE ソースからプロビジョニングされる仮想マシンには不要です。1 つ以上のディスクが仮想マシンに割り当てられている場合、Bootable Disk を 1 つを選択する必要があります。
Create Virtual Machine Template > をクリックします。Results 画面には、仮想マシンテンプレートの JSON 設定ファイルが表示されます。
テンプレートは Workloads → Virtual Machine Templates に一覧表示されます。
7.1.2. 仮想マシンテンプレートのインタラクティブなウィザードのフィールド リンクのコピーリンクがクリップボードにコピーされました!
以下の表は、Create Virtual Machine Template のインタラクティブなウィザードの Basic Settings、Networking、および Storage ペインのフィールドを説明しています。
7.1.2.1. 仮想マシンテンプレートウィザードのフィールド リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | パラメーター | 説明 |
|---|---|---|
| ソース | PXE | PXE メニューから仮想マシンをプロビジョニングします。クラスターに PXE 対応の NIC が必要になります。 |
| URL | HTTP または S3 エンドポイントで利用できるイメージから仮想マシンをプロビジョニングします。 | |
| コンテナー |
クラスターからアクセスできるレジストリーの起動可能なオペレーティングシステムコンテナーから仮想マシンをプロビジョニングします。例: | |
| Disk | ディスクから仮想マシンをプロビジョニングします。 | |
| Operating System | 仮想マシン用に選択される主なオペレーティングシステム。 | |
| Flavor | small、medium、large、tiny、Custom | 仮想マシンに割り当てられる CPU およびメモリーの量を決定するプリセット。Flavor に設定される Preset はオペレーティングシステムによって決まります。 |
| Memory | 仮想マシンに割り当てられるメモリーのサイズ (GiB 単位)。 | |
| CPU | 仮想マシンに割り当てられる CPU の量。 | |
| Workload Profile | High Performance | 高パフォーマンスのワークロードに対して最適化された仮想マシン設定。 |
| Server | サーバーワークロードの実行に最適化されたプロファイル。 | |
| Desktop | デスクトップで使用するための仮想マシン設定。 | |
| 名前 |
この名前には、小文字 ( | |
| 説明 | オプションの説明フィールド。 |
7.1.2.2. Cloud-init フィールド リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 |
|---|---|
| Hostname | 仮想マシンの特定のホスト名を設定します。 |
| Authenticated SSH Keys | 仮想マシンの ~/.ssh/authorized_keys にコピーされるユーザーの公開鍵。 |
| Use custom script | 他のオプションを、カスタム cloud-init スクリプトを貼り付けるフィールドに置き換えます。 |
7.1.2.3. ネットワークフィールド リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 |
|---|---|
| 名前 | ネットワークインターフェイスの名前。 |
| Model | ネットワークインターフェイスカードのモデルを示します。サポートされる値は、e1000、 e1000e、ne2k_pci、pcnet, rtl8139、および virtIO です。 |
| Network | 利用可能な NetworkAttachmentDefinition オブジェクトの一覧。 |
| Type |
利用可能なバインディングメソッドの一覧。デフォルトの Pod ネットワークについては、 |
| MAC Address | ネットワークインターフェイスの MAC アドレス。MAC アドレスが指定されていない場合、セッションの一時アドレスが生成されます。 |
7.1.2.4. ストレージフィールド リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 |
|---|---|
| ソース | 仮想マシンの空のディスクを選択するか、または URL、Container、Attach Cloned Disk、または Attach Disk などの選択可能なオプションから選択します。既存ディスクを選択し、これを仮想マシンに割り当てるには、利用可能な PersistentVolumeClaim (PVC) の一覧から Attach Cloned Disk または Attach Disk を選択します。 |
| 名前 |
ディスクの名前。この名前には、小文字 ( |
| Size (GiB) | ディスクのサイズ (GiB)。 |
| Interface | ディスクデバイスのタイプ。サポートされるインターフェイスは、virtIO、SATA、および SCSI です。 |
| Storage class |
ディスクの作成に使用される |
7.2. 仮想マシンテンプレートの編集 リンクのコピーリンクがクリップボードにコピーされました!
仮想マシンテンプレートは、Web コンソールで YAML エディターの詳細設定を編集するか、または Virtual Machine Template Overview 画面のパラメーターのサブセットを編集して更新することができます。
7.2.1. Web コンソールでの仮想マシンテンプレートの編集 リンクのコピーリンクがクリップボードにコピーされました!
Web コンソールの Virtual Machine Template Overview 画面の仮想マシンテンプレートの選択する値 (select values) は、関連するフィールドの横にある鉛筆アイコンをクリックして編集します。他の値は、CLI を使用して編集できます。
手順
- サイドメニューから Workloads → Virtual Machine Templates をクリックします。
- 仮想マシンテンプレートを選択して、Virtual Machine Template Overview 画面を開きます。
- 鉛筆アイコンをクリックして、該当するフィールドを編集可能にします。
- 関連する変更を加え、Save をクリックします。
仮想マシンテンプレートの編集は、そのテンプレートですでに作成された仮想マシンには影響を与えません。
7.2.2. Web コンソールでの仮想マシンテンプレート YAML 設定の編集 リンクのコピーリンクがクリップボードにコピーされました!
Web コンソールで仮想マシンテンプレートの YAML 設定を編集できます。
すべてのパラメーターが変更可能である訳ではありません。無効な設定で Save をクリックすると、エラーメッセージで変更できないパラメーターが示唆されます。
編集中に YAML 画面から離れると、設定に対して加えた変更が取り消されます。
手順
- Container-native Virtualization コンソールで Workloads → Virtual Machine Templates をクリックします。
- テンプレートを選択します。
- YAML タブをクリックして編集可能な設定を表示します。
- ファイルを編集し、Save をクリックします。
オブジェクトの更新されたバージョン番号を含む、変更が正常に行われたことを示す確認メッセージが表示されます。
7.2.3. 仮想マシンテンプレートへの仮想ディスクの追加 リンクのコピーリンクがクリップボードにコピーされました!
以下の手順を使用して、仮想ディスクを仮想マシンテンプレートに追加します。
手順
- Virtual Machine Templates タブで、仮想マシンテンプレートを選択します。
- Disks タブを選択します。
- Add Disks をクリックして、 Add Disk ウィンドウを開きます。
- Add Disk ウィンドウで、Source、Name、 Size、Interface、および Storage Class を指定します。
- ドロップダウンリストおよびチェックボックスを使用して、ディスク設定を編集します。
- OK をクリックします。
7.2.4. ネットワークインターフェイスの仮想マシンテンプレートへの追加 リンクのコピーリンクがクリップボードにコピーされました!
以下の手順を使用して、ネットワークインターフェイスを仮想マシンテンプレートに追加します。
手順
- Virtual Machine Templates タブで、仮想マシンテンプレートを選択します。
- Network Interfaces タブを選択します。
- Add Network Interface をクリックします。
- Add Network Interface ウィンドウで、ネットワークインターフェイスの Name、Model、Network、 Type、および MAC Address を指定します。
- Add をクリックしてネットワークインターフェイスを追加します。
- 仮想マシンを再起動して、アクセスを有効にします。
- ドロップダウンリストとチェックボックスを編集して、ネットワークインターフェイスを設定します。
- Save Changes をクリックします。
- OK をクリックします。
新規のネットワークインターフェイスは、ユーザーが再起動するまで Create Network Interface 一覧の上部に表示されます。
新規のネットワークインターフェイスには、仮想マシンを再起動するまで Pending VM restart のリンク状態が表示されます。Link State (リンク状態) にカーソルを合わせて詳細情報を表示します。
ネットワークインターフェイスカードが仮想マシンで定義され、ネットワークに接続されている場合は、Link State はデフォルトで Up に設定されます。
7.2.5. 仮想マシンテンプレートの CD-ROM の編集 リンクのコピーリンクがクリップボードにコピーされました!
以下の手順を使用して、仮想マシンの CD-ROM を設定します。
手順
- Virtual Machine Templates タブで、仮想マシンテンプレートを選択します。
- Overview タブを選択します。
CD-ROM 設定を追加または編集するには、CD-ROMs ラベルの右側にある鉛筆アイコンをクリックします。Edit CD-ROM ウィンドウが開きます。
- CD-ROM が編集できない場合、以下のメッセージが表示されます: The virtual machine doesn't have any CD-ROMs attached.
- 利用可能な CD-ROM がある場合は、- をクリックして CD-ROM を削除できます。
Edit CD-ROM ウィンドウで、以下を実行します。
- Media Type のドロップダウンリストから CD-ROM 設定のタイプを選択します。CD-ROM 設定タイプは Container、URL、および Persistent Volume Claim です。
- それぞれの Type に必要な情報を入力します。
- すべての CD-ROM が追加されたら、Save をクリックします。
7.3. 仮想マシンテンプレートの専用リソースの有効化 リンクのコピーリンクがクリップボードにコピーされました!
パフォーマンスを向上させるために、仮想マシンには CPU などのノードの専用リソースを持たせることができます。
7.3.1. 専用リソースについて リンクのコピーリンクがクリップボードにコピーされました!
仮想マシンの専用リソースを有効にする場合、仮想マシンのワークロードは他のプロセスで使用されない CPU でスケジュールされます。専用リソースを使用することで、仮想マシンのパフォーマンスとレイテンシーの予測の精度を向上させることができます。
7.3.2. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
-
CPU マネージャー はノードに設定される必要があります。仮想マシンのワークロードをスケジュールする前に、ノードに
cpumanager=trueラベルが設定されていることを確認します。
7.3.3. 仮想マシンテンプレートの専用リソースの有効化 リンクのコピーリンクがクリップボードにコピーされました!
Web コンソールの Virtual Machine Template Overview ページで仮想マシンテンプレートの専用リソースを有効にすることができます。
手順
- サイドメニューから Workloads → Virtual Machine Templates をクリックします。
- 仮想マシンテンプレートを選択して、Virtual Machine Template Overview ページを開きます。
- Details タブをクリックします。
- Dedicated Resources フィールドの右側にある鉛筆アイコンをクリックして、Dedicated Resources ウィンドウを開きます。
- Schedule this workload with dedicated resources (guaranteed policy) を選択します。
- Save をクリックします。
7.4. 仮想マシンテンプレートの削除 リンクのコピーリンクがクリップボードにコピーされました!
Web コンソールで仮想マシンテンプレートを削除できます。
7.4.1. Web コンソールでの仮想マシンテンプレートの削除 リンクのコピーリンクがクリップボードにコピーされました!
仮想マシンテンプレートを削除すると、仮想マシンはクラスターから永続的に削除されます。
手順
- Container-native Virtualization コンソールで Workloads → Virtual Machine Templates をクリックします。
このペインから仮想マシンテンプレートを削除できます。 これにより、1 つのペインで複数のマシンに対してアクションを実行することがより容易になります。 または、Virtual Machine Template Details ペインから仮想マシンテンプレートを削除することもできます。 この場合、選択されたテンプレートの総合的な詳細情報を確認できます。
-
削除するテンプレートの Options メニュー
をクリックし、Delete Template を選択します。
- テンプレート名をクリックして Virtual Machine Template Details ペインを開き、Actions → Delete Template をクリックします。
-
削除するテンプレートの Options メニュー
- 確認のポップアップウィンドウで、Delete をクリックし、テンプレートを永続的に削除します。
第8章 ライブマイグレーション リンクのコピーリンクがクリップボードにコピーされました!
8.1. 仮想マシンのライブマイグレーション リンクのコピーリンクがクリップボードにコピーされました!
8.1.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- LiveMigration を使用する前に、仮想マシンで使用されるストレージクラスに、共有 ReadWriteMany (RWX) アクセスモードを持つ PersistentVolumeClaim (PVC) があることを確認します。DataVolume のストレージのデフォルト について参照し、ストレージ設定が正しいことを確認します。
8.1.2. ライブマイグレーションについて リンクのコピーリンクがクリップボードにコピーされました!
ライブマイグレーションは、仮想ワークロードまたはアクセスに支障を与えることなく、実行中の仮想マシンインスタンスをクラスター内の別のノードに移行するプロセスです。これは、他のノードに移行する仮想マシンインスタンスを選択する場合は手動プロセスで実行でき、仮想マシンインスタンスに LiveMigrate エビクションストラテジーがあり、これが実行されるノードがメンテナーンス状態の場合には自動プロセスで実行できます。
仮想マシンでは、共有 ReadWriteMany (RWX) アクセスモードを持つ PersistentVolumeClaim (PVC) のライブマイグレーションが必要です。
8.1.3. LiveMigration のアクセスモードの更新 リンクのコピーリンクがクリップボードにコピーされました!
LiveMigration が適切に機能するには、ReadWriteMany (RWX) アクセスモードを使用する必要があります。必要に応じて、以下の手順でアクセスモードを更新します。
手順
RWX アクセスモードを設定するには、以下の
oc patchコマンドを実行します。oc patch -n openshift-cnv \ cm kubevirt-storage-class-defaults \ -p '{"data":{"'$<STORAGE_CLASS>'.accessMode":"ReadWriteMany"}}'$ oc patch -n openshift-cnv \ cm kubevirt-storage-class-defaults \ -p '{"data":{"'$<STORAGE_CLASS>'.accessMode":"ReadWriteMany"}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
8.2. ライブマイグレーションの制限およびタイムアウト リンクのコピーリンクがクリップボードにコピーされました!
ライブマイグレーションの制限およびタイムアウトは、移行プロセスがクラスターに負担をかけないようにするために適用されます。kubevirt-config 設定ファイルを編集してこれらの設定を行います。
8.2.1. ライブマイグレーションの制限およびタイムアウトの設定 リンクのコピーリンクがクリップボードにコピーされました!
更新された key:value フィールドを openshift-cnv namespace にある kubevirt-config 設定ファイルに追加することによってライブマイグレーションの制限およびタイムアウトを設定します。
手順
kubevirt-config設定ファイルを編集し、必要なライブマイグレーションパラメーターを追加します。以下の例は、デフォルト値を示しています。oc edit configmap kubevirt-config -n openshift-cnv
$ oc edit configmap kubevirt-config -n openshift-cnvCopy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow
8.2.2. クラスター全体のライブマイグレーションの制限およびタイムアウト リンクのコピーリンクがクリップボードにコピーされました!
| パラメーター | 説明 | デフォルト |
|---|---|---|
|
| クラスターで並行して実行される移行の数。 | 5 |
|
| ノードごとのアウトバウンドの移行の最大数。 | 2 |
|
| それぞれの移行の帯域幅 (MiB/s)。 | 64Mi |
|
|
マイグレーションが (メモリー GiB あたりの秒単位の) この時間内に終了しなかった場合、マイグレーションは取り消されます。たとえば、6GiB メモリーを持つ仮想マシンインスタンスは、4800 秒内にマイグレーションを完了しない場合にタイムアウトします。 | 800 |
|
| マイグレーションは、メモリーコピーの進展が (秒単位の) この時間内に見られない場合に取り消されます。 | 150 |
8.3. 仮想マシンインスタンスの別のノードへの移行 リンクのコピーリンクがクリップボードにコピーされました!
Web コンソールまたは CLI のいずれかで仮想マシンインスタンスのライブマイグレーションを手動で開始します。
8.3.1. Web コンソールでの仮想マシンインスタンスのライブマイグレーションの開始 リンクのコピーリンクがクリップボードにコピーされました!
実行中の仮想マシンインスタンスをクラスター内の別のノードに移行します。
Migrate Virtual Machine アクションはすべてのユーザーに対して表示されますが、仮想マシンの移行を開始できるのは管理者ユーザーのみとなります。
手順
- Container-native Virtualization コンソールで Workloads → Virtual Machinesをクリックします。
この画面からマイグレーションを開始できます。 これにより、1 つの画面で複数のマシンに対してアクションを実行することがより容易になります。 または、Virtual Machine Details 画面から仮想マシンを停止することもできます。 この場合、選択された仮想マシンの総合的な詳細情報を確認できます。
-
仮想マシンの末尾の Options メニュー
をクリックし、Migrate Virtual Machine を選択します。
- 仮想マシン名をクリックし、Virtual Machine Details 画面を開き、Actions → Migrate Virtual Machine をクリックします。
-
仮想マシンの末尾の Options メニュー
- Migrate をクリックして、仮想マシンを別のノードに移行します。
8.3.2. CLI での仮想マシンインスタンスのライブマイグレーションの開始 リンクのコピーリンクがクリップボードにコピーされました!
クラスターに VirtualMachineInstanceMigration オブジェクトを作成し、仮想マシンインスタンスの名前を参照して、実行中の仮想マシンインスタンスのライブマイグレーションを開始します。
手順
移行する仮想マシンインスタンスの
VirtualMachineInstanceMigration設定ファイルを作成します。vmi-migrate.yamlはこの例になります。Copy to Clipboard Copied! Toggle word wrap Toggle overflow クラスターにオブジェクトを作成します。
oc create -f vmi-migrate.yaml
$ oc create -f vmi-migrate.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
VirtualMachineInstanceMigration オブジェクトは、仮想マシンインスタンスのライブマイグレーションをトリガーします。このオブジェクトは、手動で削除されない場合、仮想マシンインスタンスが実行中である限りクラスターに存在します。
8.4. 仮想マシンインスタンスのライブマイグレーションのモニター リンクのコピーリンクがクリップボードにコピーされました!
Web コンソールまたは CLI のいずれかで仮想マシンインスタンスのライブマイグレーションの進捗をモニターできます。
8.4.1. Web コンソールでの仮想マシンインスタンスのライブマイグレーションのモニター リンクのコピーリンクがクリップボードにコピーされました!
移行期間中、仮想マシンのステータスは Migrating になります。このステータスは Virtual Machines 一覧に表示されるか、または移行中の仮想マシンの Virtual Machine Details 画面に表示されます。
手順
- Container-native Virtualization コンソールで Workloads → Virtual Machinesをクリックします。
8.4.2. CLI での仮想マシンインスタンスのライブマイグレーションのモニター リンクのコピーリンクがクリップボードにコピーされました!
仮想マシンの移行のステータスは、VirtualMachineInstance 設定の Status コンポーネントに保存されます。
手順
移行中の仮想マシンインスタンスで
oc describeコマンドを使用します。oc describe vmi vmi-fedora
$ oc describe vmi vmi-fedoraCopy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow
8.5. 仮想マシンインスタンスのライブマイグレーションの取り消し リンクのコピーリンクがクリップボードにコピーされました!
仮想マシンインスタンスを元のノードに残すためにライブマイグレーションを取り消すことができます。
Web コンソールまたは CLI のいずれかでライブマイグレーションを取り消します。
8.5.1. Web コンソールでの仮想マシンインスタンスのライブマイグレーションの取り消し リンクのコピーリンクがクリップボードにコピーされました!
仮想マシンインスタンスのライブマイグレーションは、 Workloads → Virtual Machines 画面の各仮想マシンにある Options メニュー
を使用するか、または Virtual Machine Details 画面の Actions メニューからキャンセルできます。
手順
- Container-native Virtualization コンソールで Workloads → Virtual Machinesをクリックします。
この画面から移行を取り消すことができます。 これにより、1 つの画面で複数のマシンに対してアクションを実行することがより容易になります。 または、Virtual Machine Details 画面から仮想マシンを停止することもできます。 この場合、選択された仮想マシンの総合的な詳細情報を確認できます。
-
仮想マシンの末尾の Options メニュー
をクリックし、Cancel Virtual Machine Migration を選択します。
- 仮想マシン名をクリックして Virtual Machine Details 画面を開き、Actions → Cancel Virtual Machine Migration をクリックします。
-
仮想マシンの末尾の Options メニュー
- Cancel Migration をクリックして仮想マシンのライブマイグレーションを取り消します。
8.5.2. CLI での仮想マシンインスタンスのライブマイグレーションの取り消し リンクのコピーリンクがクリップボードにコピーされました!
移行に関連付けられた VirtualMachineInstanceMigration オブジェクトを削除して、仮想マシンインスタンスのライブマイグレーションを取り消します。
手順
ライブマイグレーションをトリガーした
VirtualMachineInstanceMigrationオブジェクトを削除します。 この例では、migration-jobが使用されています。oc delete vmim migration-job
$ oc delete vmim migration-jobCopy to Clipboard Copied! Toggle word wrap Toggle overflow
8.6. 仮想マシンのエビクションストラテジーの設定 リンクのコピーリンクがクリップボードにコピーされました!
LiveMigrate エビクションストラテジーは、ノードがメンテナーンス状態になるか、ドレイン (解放) される場合に仮想マシンインスタンスが中断されないようにします。このエビクションストラテジーを持つ仮想マシンインスタンスのライブマイグレーションが別のノードに対して行われます。
8.6.1. LiveMigration エビクションストラテジーでのカスタム仮想マシンの設定 リンクのコピーリンクがクリップボードにコピーされました!
LiveMigration エビクションストラテジーはカスタム仮想マシンでのみ設定する必要があります。共通テンプレートには、デフォルトでこのエビクションストラテジーが設定されています。
手順
evictionStrategy: LiveMigrateオプションを、仮想マシン設定ファイルのspecセクションに追加します。この例では、oc editを使用してVirtualMachine設定ファイルの関連するスニペットを更新します。oc edit vm <custom-vm> -n <my-namespace>
$ oc edit vm <custom-vm> -n <my-namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更新を有効にするために仮想マシンを再起動します。
virtctl restart <custom-vm> -n <my-namespace>
$ virtctl restart <custom-vm> -n <my-namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第9章 ノードのメンテナーンス リンクのコピーリンクがクリップボードにコピーされました!
9.1. TLS 証明書の手動更新 リンクのコピーリンクがクリップボードにコピーされました!
Container-native Virtualization コンポーネントの TLS 証明書はインストール時に作成され、1 年間有効になります。これらの証明書は期限切れになる前に手動で更新する必要があります。
9.1.1. TLS 証明書の更新 リンクのコピーリンクがクリップボードにコピーされました!
Container-native Virtualization の TLS 証明書を更新するには、rotate-certs スクリプトをダウンロードし、実行します。このスクリプトは、GitHub の kubevirt/hyperconverged-cluster-operator リポジトリーから入手できます。
証明書を更新すると、以下の操作の影響が確認されます。
- 移行はキャンセルされます
- イメージのアップロードはキャンセルされます
- VNC およびコンソールの接続が閉じられる。
前提条件
-
cluster-admin権限を持つユーザーとしてクラスターにログインしていることを確認します。このスクリプトは、アクティブセッションをクラスターに対して使用し、openshift-cnvnamespace の証明書を更新します。
手順
GitHub から
rotate-certs.shスクリプトをダウンロードします。curl -O https://raw.githubusercontent.com/kubevirt/hyperconverged-cluster-operator/master/tools/rotate-certs.sh
$ curl -O https://raw.githubusercontent.com/kubevirt/hyperconverged-cluster-operator/master/tools/rotate-certs.shCopy to Clipboard Copied! Toggle word wrap Toggle overflow スクリプトが実行可能であることを確認します。
chmod +x rotate-certs.sh
$ chmod +x rotate-certs.shCopy to Clipboard Copied! Toggle word wrap Toggle overflow スクリプトを実行します。
./rotate-certs.sh -n openshift-cnv
$ ./rotate-certs.sh -n openshift-cnvCopy to Clipboard Copied! Toggle word wrap Toggle overflow
TLS 証明書は更新され、1 年間有効になります。
9.2. ノードのメンテナーンスモード リンクのコピーリンクがクリップボードにコピーされました!
9.2.1. ノードのメンテナーンスモードについて リンクのコピーリンクがクリップボードにコピーされました!
ノードがメンテナーンス状態になると、ノードにはスケジュール対象外のマークが付けられ、ノードからすべての仮想マシンおよび Pod がドレイン (解放) されます。LiveMigrate エビクションストラテジーを持つ仮想マシンインスタンスのライブマイグレーションは、サービスが失われることなく実行されます。このエビクションストラテジーはデフォルトで共通テンプレートから作成される仮想マシンで設定されますが、カスタム仮想マシンの場合には手動で設定される必要があります。
エビクションストラテジーのない仮想マシンインスタンスは、ノードで削除され、別のノードで再作成されます。
仮想マシンでは、共有 ReadWriteMany (RWX) アクセスモードを持つ PersistentVolumeClaim (PVC) のライブマイグレーションが必要です。
9.3. ノードのメンテナーンスモードへの設定 リンクのコピーリンクがクリップボードにコピーされました!
9.3.1. ノードのメンテナーンスモードについて リンクのコピーリンクがクリップボードにコピーされました!
ノードがメンテナーンス状態になると、ノードにはスケジュール対象外のマークが付けられ、ノードからすべての仮想マシンおよび Pod がドレイン (解放) されます。LiveMigrate エビクションストラテジーを持つ仮想マシンインスタンスのライブマイグレーションは、サービスが失われることなく実行されます。このエビクションストラテジーはデフォルトで共通テンプレートから作成される仮想マシンで設定されますが、カスタム仮想マシンの場合には手動で設定される必要があります。
エビクションストラテジーのない仮想マシンインスタンスは、ノードで削除され、別のノードで再作成されます。
仮想マシンでは、共有 ReadWriteMany (RWX) アクセスモードを持つ PersistentVolumeClaim (PVC) のライブマイグレーションが必要です。
Web コンソールまたは CLI のいずれかでノードをメンテナーンス状態にします。
9.3.2. Web コンソールでのノードのメンテナーンスモードへの設定 リンクのコピーリンクがクリップボードにコピーされました!
Compute → Nodes 一覧で各ノードにある Options メニュー
を使用するか、または Node Details 画面の Actions コントロールを使用してノードをメンテナーンスモードに設定します。
手順
- Container-native Virtualization コンソールで Compute → Nodes をクリックします。
この画面からノードをメンテナーンスモードに設定できます。 これにより、1 つの画面で複数のノードに対してアクションを実行することがより容易になります。 または、Node Details 画面からノードをメンテナーンスモードに設定することもできます。 この場合、選択されたノードの総合的な詳細情報を確認できます。
-
ノードの末尾の Options メニュー
をクリックし、Start Maintenance を選択します。
- ノード名をクリックし、Node Details 画面を開いて Actions → Stat Maintenance をクリックします。
-
ノードの末尾の Options メニュー
- 確認ウィンドウで Start Maintenance をクリックします。
ノードは liveMigration エビクションストラテジーを持つ仮想マシンインスタンスのライブマイグレーションを行い、このノードはスケジュール対象外となります。このノードの他のすべての Pod および仮想マシンは削除され、別のノードで再作成されます。
9.3.3. CLI でのノードのメンテナーンスモードへの設定 リンクのコピーリンクがクリップボードにコピーされました!
ノード名、およびこれをメンテナーンスモードに設定する理由を参照する NodeMaintenance カスタムリソース (CR) オブジェクトを作成し、ノードをメンテナーンスモードに設定します。
手順
ノードメンテナーンス CR 設定を作成します。この例では、
node02-maintenance.yamlという CR を使用します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow NodeMaintenanceオブジェクトをクラスターに作成します。oc apply -f <node02-maintenance.yaml>
$ oc apply -f <node02-maintenance.yaml>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
ノードは liveMigration エビクションストラテジーを持つ仮想マシンインスタンスのライブマイグレーションを実行し、これがスケジュール対象外になるようにノードにテイントを設定します。このノードの他のすべての Pod および仮想マシンは削除され、別のノードで再作成されます。
追加リソース:
9.4. メンテナーンスモードからのノードの再開 リンクのコピーリンクがクリップボードにコピーされました!
ノードを再開することにより、ノードをメンテナーンスモードから切り替え、再度スケジュール可能な状態にします。
Web コンソールまたは CLI のいずれかでノードをメンテナーンスモードから再開します。
9.4.1. Web コンソールでのメンテナーンスモードからのノードの再開 リンクのコピーリンクがクリップボードにコピーされました!
Options メニュー
(Compute → Nodes 一覧の各ノードにある) を使用するか、または Node Details 画面の Actions コントロールを使用してノードをメンテナーンスモードから再開します。
手順
- Container-native Virtualization コンソールで Compute → Nodes をクリックします。
この画面からノードを再開できます。 これにより、1 つの画面で複数のノードに対してアクションを実行することがより容易になります。 または、Node Details 画面からノードを再開することもできます。 この場合、選択されたノードの総合的な詳細情報を確認できます。
-
ノードの末尾の Options メニュー
をクリックし、Stop Maintenance を選択します。
- ノード名をクリックし、Node Details 画面を開いて Actions → Stop Maintenance をクリックします。
-
ノードの末尾の Options メニュー
- 確認ウィンドウで Stop Maintenance をクリックします。
ノードはスケジュール可能な状態になりますが、メンテナーンス前にノード上で実行されていた仮想マシンインスタンスはこのノードに自動的に戻されません。
9.4.2. CLI でのメンテナーンスモードからのノードの再開 リンクのコピーリンクがクリップボードにコピーされました!
ノードの NodeMaintenance オブジェクトを削除することによって、メンテナーンスモードからノードを再開し、これを再度スケジュール可能な状態にします。
手順
NodeMaintenanceオブジェクトを見つけます。oc get nodemaintenance
$ oc get nodemaintenanceCopy to Clipboard Copied! Toggle word wrap Toggle overflow オプション:
NodeMaintenanceオブジェクトを検査し、これが正しいノードに関連付けられていることを確認します。oc describe nodemaintenance <node02-maintenance>
$ oc describe nodemaintenance <node02-maintenance>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow NodeMaintenanceオブジェクトを削除します。oc delete nodemaintenance <node02-maintenance>
$ oc delete nodemaintenance <node02-maintenance>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第10章 ノードのネットワーク リンクのコピーリンクがクリップボードにコピーされました!
10.1. ノードのネットワーク状態の確認 リンクのコピーリンクがクリップボードにコピーされました!
ノードのネットワーク状態は、クラスター内のすべてのノードのネットワーク設定です。
10.1.1. nmstate について リンクのコピーリンクがクリップボードにコピーされました!
Container-native Virtualization は nmstate を使用してノードネットワークの状態を報告し、設定します。これにより、単一の設定マニフェストをクラスターに適用して、すべてのノードに Linux ブリッジを作成するなどして、ネットワークポリシーの設定を変更することができます。
ノードのネットワークは、以下のオブジェクトによって監視され更新されます。
NodeNetworkState- そのノード上のネットワークの状態を報告します。
NodeNetworkConfigurationPolicy-
ノードで要求されるネットワーク設定について説明します。
NodeNetworkConfigurationPolicyマニフェストをクラスターに適用して、インターフェイスの追加および削除など、ノードネットワーク設定を更新します。 NodeNetworkConfigurationEnactment- 各ノードに制定されたネットワークポリシーを報告します。
10.1.2. ノードのネットワーク状態の表示 リンクのコピーリンクがクリップボードにコピーされました!
NodeNetworkState オブジェクトはクラスター内のすべてのノードにあります。このオブジェクトは定期的に更新され、ノードのネットワークの状態を取得します。
手順
クラスターのすべての
NodeNetworkStateオブジェクトを一覧表示します。oc get nns
$ oc get nnsCopy to Clipboard Copied! Toggle word wrap Toggle overflow NodeNetworkStateを検査して、そのノードにネットワークを表示します。この例の出力は、明確にするために編集されています。oc get nns node01 -o yaml
$ oc get nns node01 -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow
10.2. ノードのネットワーク設定の更新 リンクのコピーリンクがクリップボードにコピーされました!
NodeNetworkConfigurationPolicy マニフェストをクラスターに適用して、ノードからのインターフェイスの追加または削除など、ノードネットワーク設定を更新できます。
10.2.1. nmstate について リンクのコピーリンクがクリップボードにコピーされました!
Container-native Virtualization は nmstate を使用してノードネットワークの状態を報告し、設定します。これにより、単一の設定マニフェストをクラスターに適用して、すべてのノードに Linux ブリッジを作成するなどして、ネットワークポリシーの設定を変更することができます。
ノードのネットワークは、以下のオブジェクトによって監視され更新されます。
NodeNetworkState- そのノード上のネットワークの状態を報告します。
NodeNetworkConfigurationPolicy-
ノードで要求されるネットワーク設定について説明します。
NodeNetworkConfigurationPolicyマニフェストをクラスターに適用して、インターフェイスの追加および削除など、ノードネットワーク設定を更新します。 NodeNetworkConfigurationEnactment- 各ノードに制定されたネットワークポリシーを報告します。
10.2.2. ノード上でのインターフェイスの作成 リンクのコピーリンクがクリップボードにコピーされました!
NodeNetworkConfigurationPolicy マニフェストをクラスターに適用してクラスター内のノード上にインターフェイスを作成します。マニフェストには、インターフェイスの要求された設定の詳細が含まれます。
デフォルトでは、マニフェストはクラスター内のすべてのノードに適用されます。インターフェイスを特定ノードに追加するには、ノードセレクターの spec: nodeSelector パラメーターおよび適切な <key>:<value> を追加します。
手順
NodeNetworkConfigurationPolicyマニフェストを作成します。以下の例は、すべてのワーカーノードで Linux ブリッジを設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Polilcy を作成します。
oc apply -f <br1-eth1-policy.yaml>
$ oc apply -f <br1-eth1-policy.yaml>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Policy マニフェストのファイル名。
10.2.3. ノード上でのポリシー更新の確認 リンクのコピーリンクがクリップボードにコピーされました!
NodeNetworkConfigurationPolicy マニフェストは、クラスターのノードについて要求されるネットワーク設定を記述します。Policy オブジェクトには、要求されたネットワーク設定と、クラスター全体での Policy の実行ステータスが含まれます。
Policy を適用する際に、NodeNetworkConfigurationEnactment がクラスター内のすべてのノードについて作成されます。Enactment は、そのノードでの Policy の実行ステータスを表す読み取り専用オブジェクトです。Policy がノードに適用されない場合、そのノードの Enactment にはトラブルシューティングのためのトレースバックが含まれます。
手順
Policy がクラスターに適用されていることを確認するには、Policy とそのステータスを一覧表示します。
oc get nncp
$ oc get nncpCopy to Clipboard Copied! Toggle word wrap Toggle overflow (オプション) Policy の設定に想定されている以上の時間がかかる場合は、特定の Policy の要求される状態とステータスの状態を検査できます。
oc get nncp <policy> -o yaml
$ oc get nncp <policy> -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow (オプション) Policy のすべてのノード上での設定に想定されている以上の時間がかかる場合は、クラスターの Enactment のステータスを一覧表示できます。
oc get nnce
$ oc get nnceCopy to Clipboard Copied! Toggle word wrap Toggle overflow (オプション) 特定の Enactment の設定 (失敗した設定のエラーレポートを含む) を表示するには、以下を実行します。
oc get nnce <node>.<policy> -o yaml
$ oc get nnce <node>.<policy> -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
10.2.4. ノードからインターフェイスの削除 リンクのコピーリンクがクリップボードにコピーされました!
NodeNetworkConfigurationPolicy オブジェクトを編集してノードからインターフェイスを削除し、インターフェイスの state を absent に設定します。
インターフェイスを追加した Policy を削除しても、ノード上のネットワークポリシーの設定は変更されません。NodeNetworkConfigurationPolicy はクラスターのオブジェクトですが、これは要求される設定のみを表します。
同様に、インターフェイスを削除しても Policy は削除されません。
手順
インターフェイスの作成に使用する
NodeNetworkConfigurationPolicyマニフェストを更新します。以下の例では、Linux ブリッジが削除されます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ノード上で Policy を更新し、インターフェイスを削除します。
oc apply -f <br1-eth1-policy.yaml>
$ oc apply -f <br1-eth1-policy.yaml>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Policy マニフェストのファイル名。
10.2.5. インターフェイスの削除後のノードネットワーク設定の復元 リンクのコピーリンクがクリップボードにコピーされました!
ノードからインターフェイスを削除しても、ノードのネットワーク設定は以前の状態に自動的に復元されません。インターフェイスを削除した後には、クラスター全体で、以前にインターフェイスに割り当てられたか、または以前のインターフェイスの下位に置かれたノード NIC は down 状態になります。新規 NodeNetworkConfigurationPolicy マニフェストをクラスターに適用した後に NIC を復元します。
手順
NIC および必要な状態の
upを指定するNodeNetworkConfigurationPolicyマニフェストを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow マニフェストをクラスターに適用します。
oc apply -f <eth1.yaml>
$ oc apply -f <eth1.yaml>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Policy マニフェストのファイル名。
10.2.6. 例: Linux ブリッジインターフェイス NodeNetworkConfigurationPolicy リンクのコピーリンクがクリップボードにコピーされました!
NodeNetworkConfigurationPolicy マニフェストをクラスターに適用してクラスター内のノード上に Linux ブリッジインターフェイスを作成します。
以下の YAML ファイルは、Linux ブリッジインターフェイスのマニフェストの例です。これには、独自の情報で置き換える必要のあるサンプルの値が含まれます。
- 1
- Policy の名前。
- 2
- オプション。
nodeSelectorを含めない場合、ポリシーはクラスター内のすべてのノードに適用されます。 - 3
- この例では、
hostnameノードセレクターを使用します。 - 4
- インターフェイスの名前。
- 5
- オプション。人間が判読できるインターフェイスの説明。
- 6
- インターフェイスのタイプ。この例では、ブリッジを作成します。
- 7
- 作成後のインターフェイスの要求された状態。
- 8
- オプション。
dhcpを使用しない場合は、静的 IP を設定するか、IP アドレスなしでインターフェイスを出ることができます。 - 9
- この例では
ipv4を有効にします。 - 10
- この例では
stpを無効にします。 - 11
- ブリッジが接続されるノードの NIC。
10.2.7. 例: VLAN インターフェイス NodeNetworkConfigurationPolicy リンクのコピーリンクがクリップボードにコピーされました!
NodeNetworkConfigurationPolicy マニフェストをクラスターに適用してクラスター内のノード上に VLAN インターフェイスを作成します。
以下の YAML ファイルは、VLAN インターフェイスのマニフェストの例です。これには、独自の情報で置き換える必要のあるサンプルの値が含まれます。
10.2.8. 例: ボンドインターフェイス NodeNetworkConfigurationPolicy リンクのコピーリンクがクリップボードにコピーされました!
NodeNetworkConfigurationPolicy マニフェストをクラスターに適用してノード上にボンドインターフェイスを作成します。
Container-native Virtualization は以下のボンドモードのみをサポートします。
-
mode=1 active-backup
-
mode=5 balance-tlb
- mode=6 balance-alb
以下の YAML ファイルは、ボンドインターフェイスのマニフェストの例です。これには、独自の情報で置き換える必要のあるサンプルの値が含まれます。
- 1
- Policy の名前。
- 2
- オプション。
nodeSelectorを含めない場合、ポリシーはクラスター内のすべてのノードに適用されます。 - 3
- この例では、
hostnameノードセレクターを使用します。 - 4
- インターフェイスの名前。
- 5
- オプション。人間が判読できるインターフェイスの説明。
- 6
- インターフェイスのタイプ。この例では、ボンドを作成します。
- 7
- 作成後のインターフェイスの要求された状態。
- 8
- オプション。
dhcpを使用しない場合は、静的 IP を設定するか、IP アドレスなしでインターフェイスを出ることができます。 - 9
- この例では
ipv4を有効にします。 - 10
- ボンドのドライバーモード。この例では、アクティブなバックアップモードを使用します。
- 11
- オプション。この例では、miimon を使用して 140ms ごとにボンドリンクを検査します。
- 12
- ボンド内の下位ノードの NIC。
- 13
- オプション。ボンドの Maximum transmission unit (MTU)指定がない場合、この値はデフォルトで
1500に設定されます。
10.3. ノードのネットワーク設定のトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
ノードのネットワーク設定で問題が発生した場合には、Policy が自動的にロールバックされ、Enactment レポートは失敗します。これには、以下のような問題が含まれます。
- ホストで設定を適用できません。
- ホストはデフォルトゲートウェイへの接続を失います。
- ホストは API サーバーへの接続を失います。
10.3.1. 正確でない NodeNetworkConfigurationPolicy 設定のトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
NodeNetworkConfigurationPolicy を適用し、クラスター全体でノードのネットワーク設定への変更を適用することができます。正確でない設定を適用する場合、以下の例を使用して、失敗したネットワークポリシーのトラブルシューティングと修正を行うことができます。
この例では、Linux ブリッジ Policy は 3 つのマスターノードと 3 つのワーカーノードを持つクラスターのサンプルに適用されます。Policy は正しくないインターフェイスを参照するために、適用することができません。エラーを確認するには、利用可能な nmstate リソースを調べます。その後に、正しい設定で Policy を更新できます。
手順
Policy を作成し、これをクラスターに適用します。以下の例では、
ens01インターフェイスに単純なブリッジを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc apply -f ens01-bridge-testfail.yaml
$ oc apply -f ens01-bridge-testfail.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow nodenetworkconfigurationpolicy.nmstate.io/ens01-bridge-testfail created
nodenetworkconfigurationpolicy.nmstate.io/ens01-bridge-testfail createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して Policy のステータスを確認します。
oc get nncp
$ oc get nncpCopy to Clipboard Copied! Toggle word wrap Toggle overflow この出力は、Policy が失敗したことを示しています。
NAME STATUS ens01-bridge-testfail FailedToConfigure
NAME STATUS ens01-bridge-testfail FailedToConfigureCopy to Clipboard Copied! Toggle word wrap Toggle overflow ただし、Policy のステータスのみでは、すべてのノードで失敗したか、またはノードのサブセットで失敗したかを確認することはできません。
Enactment を一覧表示し、Policy がいずれかのノードで成功したかどうかを確認します。Policy がサブセットに対してのみ失敗した場合は、問題は特定のノード設定にあることにあることが示唆されます。Policy がすべてのノードで失敗した場合は、問題は Policy に関連したものであることが示唆されます。
oc get nnce
$ oc get nnceCopy to Clipboard Copied! Toggle word wrap Toggle overflow この出力は、Policy がすべてのノードで失敗したことを示しています。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 失敗した Enactment のいずれかを表示し、トレースバックを確認します。以下のコマンドは、出力ツール
jsonpathを使用して出力をフィルターします。oc get nnce worker-1.ens01-bridge-testfail -o jsonpath='{.status.conditions[?(@.type=="Failing")].message}'$ oc get nnce worker-1.ens01-bridge-testfail -o jsonpath='{.status.conditions[?(@.type=="Failing")].message}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは、簡潔にするために編集されている大きなトレースバックを返します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow NmstateVerificationErrorは、desiredPolicy 設定、ノード上の Policy のcurrent設定、および一致しないパラメーターを強調表示するdifferenceを一覧表示します。この例では、portはdifferenceに組み込まれ、これは問題が Policy のポート設定に関連するものであることを示唆します。Policy が適切に設定されていることを確認するには、
NodeNetworkStateを要求して、1 つまたはすべてのノードのネットワーク設定を表示します。以下のコマンドは、master-1ノードのネットワーク設定を返します。oc get nns master-1 -o yaml
$ oc get nns master-1 -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力は、ノード上のインターフェイス名は
ens1であるものの、失敗した Policy がens01を誤って使用していることを示します。- ipv4: ... name: ens1 state: up type: ethernet- ipv4: ... name: ens1 state: up type: ethernetCopy to Clipboard Copied! Toggle word wrap Toggle overflow 既存の Policy を編集してエラーを修正します。
oc edit nncp ens01-bridge-testfail
$ oc edit nncp ens01-bridge-testfailCopy to Clipboard Copied! Toggle word wrap Toggle overflow ... port: - name: ens1... port: - name: ens1Copy to Clipboard Copied! Toggle word wrap Toggle overflow Policy を保存して修正を適用します。
Policy のステータスをチェックして、更新が正常に行われたことを確認します。
oc get nncp
$ oc get nncpCopy to Clipboard Copied! Toggle word wrap Toggle overflow NAME STATUS ens01-bridge-testfail SuccessfullyConfigured
NAME STATUS ens01-bridge-testfail SuccessfullyConfiguredCopy to Clipboard Copied! Toggle word wrap Toggle overflow
更新された Policy は、クラスターのすべてのノードで正常に設定されました。
第11章 ロギング、イベント、およびモニターリング リンクのコピーリンクがクリップボードにコピーされました!
11.1. 仮想マシンログの表示 リンクのコピーリンクがクリップボードにコピーされました!
11.1.1. 仮想マシンのログについて リンクのコピーリンクがクリップボードにコピーされました!
ログは、OpenShift Container Platform ビルド、デプロイメントおよび Pod について収集されます。Container-native Virtualization では、仮想マシンのログは Web コンソールまたは CLI のいずれかで仮想マシンランチャー Pod から取得されます。
-f オプションは、リアルタイムでログ出力をフォローします。 これは進捗のモニターおよびエラーの確認に役立ちます。
ランチャー Pod の起動が失敗する場合、--previous オプションを使用して最後の試行時のログを確認します。
ErrImagePull および ImagePullBackOff エラーは、誤ったデプロイメント設定または参照されるイメージに関する問題によって引き起こされる可能性があります。
11.1.2. CLI での仮想マシンログの表示 リンクのコピーリンクがクリップボードにコピーされました!
仮想マシンランチャー Pod から仮想マシンログを取得します。
手順
以下のコマンドを実行します。
oc logs <virt-launcher-name>
$ oc logs <virt-launcher-name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
11.1.3. Web コンソールでの仮想マシンログの表示 リンクのコピーリンクがクリップボードにコピーされました!
関連付けられた仮想マシンランチャー Pod から仮想マシンログを取得します。
手順
- Container-native Virtualization コンソールで Workloads → Virtual Machinesをクリックします。
- 仮想マシンをクリックし、Virtual Machine Details パネルを開きます。
-
Overview タブで、POD セクションの
virt-launcher-<name>Pod をクリックします。 - Logs をクリックします。
11.2. イベントの表示 リンクのコピーリンクがクリップボードにコピーされました!
11.2.1. 仮想マシンイベントについて リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform イベントは、namespace 内の重要なライフサイクル情報のレコードであり、リソースのスケジュール、作成、および削除に関する問題のモニターおよびトラブルシューティングに役立ちます。
Container-native Virtualization は、仮想マシンおよび仮想マシンインスタンスについてのイベントを追加します。これらは Web コンソールまたは CLI のいずれかで表示できます。
OpenShift Container Platform クラスター内のシステムイベント情報の表示 も参照してください。
11.2.2. Web コンソールでの仮想マシンのイベントの表示 リンクのコピーリンクがクリップボードにコピーされました!
実行中の仮想マシンのストリームイベントは、Web コンソールの Virtual Machine Details パネルから確認できます。
▮▮ ボタンはイベントストリームを一時停止します。
▶ ボタンは一時停止されたイベントストリームを継続します。
手順
- サイドメニューから Workloads → Virtual Machines をクリックします。
- 仮想マシンを選択します。
- Events をクリックして、仮想マシンのすべてのイベントを表示します。
11.2.3. CLI での namespace イベントの表示 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform クライアントを使用して namespace のイベントを取得します。
手順
namespace で、
oc getコマンドを使用します。oc get events
$ oc get eventsCopy to Clipboard Copied! Toggle word wrap Toggle overflow
11.2.4. CLI でのリソースイベントの表示 リンクのコピーリンクがクリップボードにコピーされました!
イベントはリソース説明に組み込むこともできます。 これは OpenShift Container Platform クライアントを使用して取得できます。
手順
namespace で、
oc describeコマンドを使用します。以下の例は、仮想マシン、仮想マシンインスタンス、および仮想マシンの virt-launcher Pod のイベント取得する方法を示しています。oc describe vm <vm> oc describe vmi <vmi> oc describe pod virt-launcher-<name>
$ oc describe vm <vm> $ oc describe vmi <vmi> $ oc describe pod virt-launcher-<name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
11.3. 仮想マシンのワークロードに関する情報の表示 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform Web コンソールで Virtual Machines ダッシュボードを使用して、仮想マシンについての概要を表示できます。
11.3.1. Virtual Machines ダッシュボードについて リンクのコピーリンクがクリップボードにコピーされました!
Workloads → Virtual Machines ページに移動し、仮想マシンを選択して、OpenShift Container Platform Web コンソールから Virtual Machines ダッシュボードにアクセスします。
ダッシュボードには、以下のカードが含まれます。
Details: 以下を含む、仮想マシンについての識別情報を提供します。
- 名前
- namespace
- 作成日
- ノード名
- IP アドレス
Inventory: 以下を含む、仮想マシンのリソースを一覧表示します。
- ネットワークインターフェイスコントローラー (NIC)
- ディスク
Status には、以下が含まれます。
- 仮想マシンの現在の状態
- QEMU ゲストエージェントが仮想マシンにインストールされているかどうかを示す注記
Utilization: 以下の使用状況についてのデータを表示するチャートが含まれます。
- CPU
- メモリー
- Filesystem
- ネットワーク転送
ドロップダウンリストを使用して、使用状況データの期間を選択します。選択できるオプションは、1 Hour、6 Hours、および 24 Hours です。
- Events: 過去 1 時間における仮想マシンのアクティビティーについてのメッセージを一覧表示します。追加のイベントを表示するには、View all をクリックします。
11.4. 仮想マシンの正常性のモニターリング リンクのコピーリンクがクリップボードにコピーされました!
以下の手順を使用して liveness および readiness プローブを作成し、仮想マシンの正常性監視します。
11.4.1. liveness および readiness プローブ リンクのコピーリンクがクリップボードにコピーされました!
VirtualMachineInstance (VMI) が失敗すると、liveness プローブは VMI を停止します。次に、VirtualMachine などのコントローラーが他の VMI を起動し、仮想マシンの応答を復元します。
readiness プローブは、サービスとエンドポイントに対して VirtualMachineInstance がサービスからトラフィックを受信できることを示します。readiness プローブが失敗すると、VirtualMachineInstance はプローブが復旧するまで、該当のエンドポイントから削除されます。
11.4.2. HTTP liveness プローブの定義 リンクのコピーリンクがクリップボードにコピーされました!
以下の手順では、HTTP liveness プローブを定義する設定ファイルの例について説明します。
手順
以下のコードブロックをサンプルとして使用し、YAML 設定ファイルをカスタマイズして HTTP liveness プローブを作成します。この例では、以下のようになります。
-
初回の
120秒の遅延後に VirtualMachineInstance のポート1500をクエリーするspec.livenessProbe.httpGetを使用してプローブを設定します。 VirtualMachineInstance は、
cloud-initを使用して、ポート1500に最小限の HTTP サーバーをインストールし、実行します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
初回の
以下のコマンドを実行して VirtualMachineInstance を作成します。
oc create -f <file name>.yaml
$ oc create -f <file name>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
11.4.3. TCP liveness プローブの定義 リンクのコピーリンクがクリップボードにコピーされました!
以下の手順では、TCP liveness プローブを定義する設定ファイルの例について説明します。
手順
このコードブロックをサンプルとして使用し、YAML 設定ファイルをカスタマイズして TCP liveness プローブを作成します。この例では、以下のようになります。
-
初回の
120秒の遅延後に VirtualMachineInstance のポート1500をクエリーするspec.livenessProbe.tcpSocketを使用してプローブを設定します。 VirtualMachineInstance は、
cloud-initを使用して、ポート1500に最小限の HTTP サーバーをインストールし、実行します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
初回の
以下のコマンドを実行して VirtualMachineInstance を作成します。
oc create -f <file name>.yaml
$ oc create -f <file name>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
11.4.4. readiness プローブの定義 リンクのコピーリンクがクリップボードにコピーされました!
以下の手順では、readiness プローブを定義する設定ファイルの例について説明します。
手順
YAML 設定ファイルをカスタマイズして readiness プローブを作成します。readiness プローブは liveness プローブと同じように設定されます。ただし、この例では以下の違いに注意してください。
-
readiness プローブは、異なる仕様名を使用して保存されます。たとえば、readiness プローブを
spec.livenessProbe.<type-of-probe>としてではなく、spec.readinessProbeとして作成します。 readiness プローブを作成する場合、プローブが複数回失敗または成功する場合に備えて
readyとnon-ready状態の間で切り換えられるようにfailureThresholdおよびsuccessThresholdをオプションで設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
readiness プローブは、異なる仕様名を使用して保存されます。たとえば、readiness プローブを
以下のコマンドを実行して VirtualMachineInstance を作成します。
oc create -f <file name>.yaml
$ oc create -f <file name>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
11.5. OpenShift Container Platform Dashboard を使用したクラスター情報の取得 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform Web コンソールから Home > Dashboards > Overview をクリックしてクラスターについてのハイレベルな情報をキャプチャーする OpenShift Container Platform ダッシュボードにアクセスします。
OpenShift Container Platform ダッシュボードは、個別のダッシュボード カード でキャプチャーされるさまざまなクラスター情報を提供します。
11.5.1. OpenShift Container Platform ダッシュボードページについて リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform ダッシュボードは以下のカードで設定されます。
Details は、クラスターの詳細情報の概要を表示します。
ステータスには、ok、error、warning、in progress、および unknown が含まれます。リソースでは、カスタムのステータス名を追加できます。
- クラスター
- プロバイダー
- バージョン
Cluster Inventory は、リソースの数および関連付けられたステータスの詳細を表示します。これは、問題の解決に介入が必要な場合に役立ちます。以下についての情報が含まれます。
- ノード数
- Pod 数
- 永続ストレージボリューム要求 (Persistent Storage Volume Claim)
- 仮想マシン (Container-native Virtualization がインストールされている場合に利用可能)
- クラスター内のベアメタルホスト。これらはステータス別に一覧表示されます (metal3 環境でのみ利用可能)。
- Cluster Health では、関連するアラートおよび説明を含む、クラスターの現在の健全性についてのサマリーを表示します。Container-native Virtualization がインストールされている場合は、Container-native Virtualization の全体的な健全性も診断されます。複数のサブシステムが存在する場合は、See All をクリックして、各サブシステムのステータスを表示します。
Cluster Capacity チャートは、管理者が追加リソースがクラスターで必要になるタイミングを把握するのに役立ちます。このチャートには、現在の消費量を表示する内側の円が含まれ、外側の円には、以下の情報を含む、リソースに対して設定されたしきい値が表示されます。
- CPU 時間
- メモリー割り当て
- 消費されるストレージ
- 消費されるネットワークリソース
- Cluster Utilization は指定された期間における各種リソースの容量を表示します。これは、管理者がリソースの高い消費量の規模および頻度を理解するのに役立ちます。
- Events は、Pod の作成または別のホストへの仮想マシンの移行などのクラスター内の最近のアクティビティーに関連したメッセージを一覧表示します。
- Top Consumers は、管理者がクラスターリソースが消費される状況を把握するのに役立ちます。リソースをクリックし、指定されたクラスターリソース (CPU、メモリー、またはストレージ) の最大量を消費する Pod およびノードを一覧表示する詳細ページに切り替えます。
11.6. OpenShift Container Platform クラスターモニターリング、ロギング、および Telemetry リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform は、クラスターレベルでモニターするための各種のリソースを提供します。
11.6.1. OpenShift Container Platform クラスターモニターリングについて リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform には、Prometheus オープンソースプロジェクトおよびその幅広いエコシステムをベースとする事前に設定され、事前にインストールされた自己更新型のモニターリングスタックが同梱されます。これはクラスターのモニタリング機能を提供し、クラスター管理者に問題の発生を即時に通知するアラートのセットと Grafana ダッシュボードのセットを提供します。クラスターモニタリングスタックは、OpenShift Container Platform クラスターのモニタリング用のみにサポートされています。
今後の OpenShift Container Platform の更新との互換性を確保するために、指定されたモニターリングスタックのオプションのみを設定することがサポートされます。
11.6.2. クラスターロギングコンポーネント リンクのコピーリンクがクリップボードにコピーされました!
クラスターロギングコンポーネントは Elasticsearch、Fluentd、Kibana (EFK) に基づいています。コレクターの Fluentd は、OpenShift Container Platform クラスターの各ノードにデプロイされます。これはすべてのノードおよびコンテナーのログを収集し、それらを Elasticsearch (ES) に書き込みます。Kibana は、ユーザーおよび管理者が集計されたデータを使って高度な視覚化およびダッシュボードを作成できる中央の Web UI です。
現時点で、5 種類のクラスターロギングコンポーネントがあります。
- logStore: これはログが保存される場所です。現在の実装は Elasticsearch です。
- collection: これは、ノードからログを収集し、それらをフォーマットし、logStore に保存するコンポーネントです。現在の実装は Fluentd です。
- visualization: これは、ログ、グラフ、チャートなどを表示するために使用される UI コンポーネントです。現在の実装は Kibana です。
- curation: これは期間に基づいてログをトリミングするコンポーネントです。現在の実装は Curator です。
クラスターロギングについての詳細は、OpenShift Container Platform クラスターロギング のドキュメントを参照してください。
11.6.3. Telemetry について リンクのコピーリンクがクリップボードにコピーされました!
Telemetry は厳選されたクラスターモニタリングメトリクスのサブセットを Red Hat に送信します。これらのメトリクスは継続的に送信され、以下について記述します。
- OpenShift Container Platform クラスターのサイズ
- OpenShift Container Platform コンポーネントの健全性およびステータス
- 実行されるアップグレードの正常性およびステータス
- OpenShift Container Platform のコンポーネントおよび機能についての使用情報 (一部の制限された情報)
- クラスターモニターリングコンポーネントによってレポートされるアラートについてのサマリー情報
Red Hat では、リアルタイムでクラスターの健全性をモニターし、お客様に影響を与える問題に随時対応するためにこのデータの継続的なストリームを使用します。またこれにより、Red Hat がサービスへの影響を最小限に抑えつつつアップグレードエクスペリエンスの継続的な改善に向けた OpenShift Container Platform のアップグレードの展開を可能にします。
このデバッグ情報は、サポートケースでレポートされるデータへのアクセスと同じ制限が適用された状態で Red Hat サポートおよびエンジニアリングチームが利用できます。接続クラスターのすべての情報は、OpenShift Container Platform をより使用しやすく、より直感的に使用できるようにするために Red Hat によって使用されます。この情報のいずれもサードパーティーと共有されることはありません。
11.6.3.1. Telemetry で収集される情報 リンクのコピーリンクがクリップボードにコピーされました!
Telemetry によって収集される主な情報には、以下が含まれます。
- クラスターごとに利用可能な更新の数
- 更新に使用されるチャネルおよびイメージリポジトリー
- 更新中に発生するエラーの数
- 実行中の更新の進捗情報
- クラスターごとのマシン数
- CPU コアの数およびマシンの RAM のサイズ
- etcd クラスターのメンバー数、および現在 etcd クラスターに保存されているオブジェクトの数
- マシンタイプ (インフラまたはマスター) ごとに使用される CPU コアおよび RAM の数
- クラスターごとに使用される CPU コアおよび RAM の数
- クラスター内での実行中の仮想マシンインスタンスの数
- クラスターごとの OpenShift Container Platform フレームワークコンポーネントの使用
- OpenShift Container Platform クラスターのバージョン
- クラスターにインストールされている OpenShift Container Platform フレームワークコンポーネントの健全性、状態、およびステータス。 たとえば、クラスターバージョン Operator、クラスターモニターリング、イメージレジストリー、およびロギング用の Elasticsearch がこれらのコンポーネントに含まれます。
- インストール時に生成される一意でランダムな識別子
- Amazon Web Services などの OpenShift Container Platform がデプロイされているプラットフォームの名前
Telemetry は、ユーザー名、パスワード、またはユーザーリソースの名前またはアドレスなどの識別情報を収集しません。
11.6.4. CLI のトラブルシューティングおよびデバッグコマンド リンクのコピーリンクがクリップボードにコピーされました!
oc クライアントのトラブルシューティングおよびデバッグコマンドの一覧については、OpenShift Container Platform CLI ツール のドキュメントを参照してください。
11.7. Red Hat サポート向けの Container-native Virtualization データの収集 リンクのコピーリンクがクリップボードにコピーされました!
サポートケースを作成する際、ご使用のクラスターについてのデバッグ情報を Red Hat サポートに提供していただくと Red Hat のサポートに役立ちます。
must-gather ツールを使用すると、仮想マシンおよび Container-native Virtualization に関連する他のデータを含む、 OpenShift Container Platform クラスターについての診断情報を収集できます。
迅速なサポートを得るには、OpenShift Container Platform と container-native virtualization の両方についての診断情報を提供してください。
Container-native Virtualization はテクノロジープレビュー機能です。テクノロジープレビュー機能は Red Hat の実稼働環境でのサービスレベルアグリーメント (SLA) ではサポートされていないため、Red Hat では実稼働環境での使用を推奨していません。Red Hat は実稼働環境でこれらを使用することを推奨していません。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲についての詳細は、https://access.redhat.com/ja/support/offerings/techpreview/ を参照してください。
11.7.1. must-gather ツールについて リンクのコピーリンクがクリップボードにコピーされました!
oc adm must-gather CLI コマンドは、以下のような問題のデバッグに必要となる可能性のあるクラスターからの情報を収集します。
- リソース定義
- 監査ログ
- サービスログ
--image 引数を指定してコマンドを実行する際にイメージを指定できます。イメージを指定する際、ツールはその機能または製品に関連するデータを収集します。
oc adm must-gather を実行すると、新しい Pod がクラスターに作成されます。データは Pod で収集され、must-gather.local で始まる新規ディレクトリーに保存されます。このディレクトリーは、現行の作業ディレクトリーに作成されます。
11.7.2. Container-native Virtualization データの収集について リンクのコピーリンクがクリップボードにコピーされました!
oc adm must-gather CLI コマンドを使用してクラスターについての情報を収集できます。これには、Container-native Virtualization に関連する機能およびオブジェクトが含まれます。
- Hyperconverged Cluster Operator namespace(および子オブジェクト)
- Container-native Virtualization リソースに属するすべての namespace (およびそれらの子オブジェクト)
- すべての Container-native Virtualization カスタムリソース定義 (CRD)
- 仮想マシンを含むすべての namespace
- すべての仮想マシン定義
must-gather を使用して Container-native Virtualization データを収集するには、Container-Native Virtualization イメージ --image=registry.redhat.io/container-native-virtualization/cnv-must-gather-gather-rhel8 を指定する必要があります。
11.7.3. 特定の機能に関するデータ収集 リンクのコピーリンクがクリップボードにコピーされました!
oc adm must-gather CLI コマンドを --image または --image-stream 引数と共に使用して、特定に機能についてのデバッグ情報を収集できます。must-gather ツールは複数のイメージをサポートするため、単一のコマンドを実行して複数の機能についてのデータを収集できます。
特定の機能データに加えてデフォルトの must-gather データを収集するには、--image-stream=openshift/must-gather 引数を追加します。
前提条件
-
cluster-adminロールを持つユーザーとしてクラスターにアクセスできる。 -
OpenShift Container Platform CLI (
oc) がインストールされている。
手順
-
must-gatherデータを保存するディレクトリーに移動します。 oc adm must-gatherコマンドを 1 つまたは複数の--imageまたは--image-stream引数と共に実行します。たとえば、以下のコマンドは、デフォルトのクラスターデータと {VirtProductName} に固有の情報の両方を収集します。oc adm must-gather \ --image-stream=openshift/must-gather \ --image=registry.redhat.io/container-native-virtualization/cnv-must-gather-rhel8
$ oc adm must-gather \ --image-stream=openshift/must-gather \1 --image=registry.redhat.io/container-native-virtualization/cnv-must-gather-rhel82 Copy to Clipboard Copied! Toggle word wrap Toggle overflow must-gatherツールを追加の引数と共に使用し、クラスターロギングおよびクラスター内の Cluster Logging Operator に関連するデータを収集できます。クラスターロギングの場合、以下のコマンドを実行します。oc adm must-gather --image=$(oc -n openshift-logging get deployment.apps/cluster-logging-operator \ -o jsonpath='{.spec.template.spec.containers[?(@.name == "cluster-logging-operator")].image}')$ oc adm must-gather --image=$(oc -n openshift-logging get deployment.apps/cluster-logging-operator \ -o jsonpath='{.spec.template.spec.containers[?(@.name == "cluster-logging-operator")].image}')Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例11.1 クラスターロギングの
must-gatherの出力例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 作業ディレクトリーに作成された
must-gatherディレクトリーから圧縮ファイルを作成します。たとえば、Linux オペレーティングシステムを使用するコンピューターで以下のコマンドを実行します。tar cvaf must-gather.tar.gz must-gather.local.5421342344627712289/
$ tar cvaf must-gather.tar.gz must-gather.local.5421342344627712289/1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
must-gather-local.5421342344627712289/を実際のディレクトリー名に置き換えてください。
- 圧縮ファイルを Red Hat カスタマーポータル で作成したサポートケースに添付します。