3.7. 既知の問題
- シングルスタックの IPv6 クラスターで OpenShift Virtualization は実行できません。(BZ#2193267)
異なる SELinux コンテキストで 2 つの Pod を使用すると、
ocs-storagecluster-cephfs
ストレージクラスの VM が移行に失敗し、VM のステータスがPaused
に変わります。これは、両方の Pod がReadWriteMany
CephFS の共有ボリュームに同時にアクセスしようとするためです。(BZ#2092271)-
回避策として、
ocs-storagecluster-ceph-rbd
ストレージクラスを使用して、Red Hat Ceph Storage を使用するクラスターで VM をライブマイグレーションします。
-
回避策として、
OpenShift Virtualization 4.10.5 に更新すると、一部の仮想マシン (VM) がライブマイグレーションループでスタックします。これは、仮想マシンマニフェストの
spec.volumes.containerDisk.path
フィールドが相対パスに設定されている場合に発生します。-
回避策として、仮想マシンマニフェストを削除して再作成し、
spec.volumes.containerDisk.path
フィールドの値を絶対パスに設定します。その後、OpenShift Virtualization を更新できます。
-
回避策として、仮想マシンマニフェストを削除して再作成し、
単一ノードに 50 を超えるイメージが含まれている場合、Pod のスケジューリングがノード間で不均衡になる可能性があります。これは、ノード上のイメージのリストがデフォルトで 50 に短縮されているためです。(BZ#1984442)
-
回避策として、
KubeletConfig
オブジェクトを編集し、nodeStatusMaxImages
の値を-1
に設定することで、イメージの制限を無効にすることができます。
-
回避策として、
42 文字を超える完全修飾ドメイン名 ( FQDN) を持つノードがあるクラスターに ホストパスプロビジョナー をデプロイする場合、プロビジョナーは PVC をバインドできません。(BZ#2057157)
エラーメッセージの例
E0222 17:52:54.088950 1 reflector.go:138] k8s.io/client-go/informers/factory.go:134: Failed to watch *v1beta1.CSIStorageCapacity: failed to list *v1beta1.CSIStorageCapacity: unable to parse requirement: values[0][csi.storage.k8s.io/managed-by]: Invalid value: "external-provisioner-<node_FQDN>": must be no more than 63 characters 1
- 1
- エラーメッセージの最大文字数は 63 文字ですが、これにはノードの FQDN の先頭に付く
external-provisioner-
の文字列が含まれます。
回避策として、以下のコマンドを実行して、ホストパスプロビジョナー CSI ドライバーの
storageCapacity
オプションを無効にします。$ oc patch csidriver kubevirt.io.hostpath-provisioner --type merge --patch '{"spec": {"storageCapacity": false}}'
OpenShift Container Platform クラスターが OVN-Kubernetes をデフォルトの Container Network Interface (CNI) プロバイダーとして使用する場合、OVN-Kubernetes のホストネットワークトポロジーの変更により、Linux ブリッジまたはボンディングデバイスをホストのデフォルトインターフェイスに割り当てることはできません。(BZ#1885605)
- 回避策として、ホストに接続されたセカンダリーネットワークインターフェイスを使用するか、OpenShift SDN デフォルト CNI プロバイダーに切り替えることができます。
ライブマイグレーションを実行できない仮想マシンを実行すると、OpenShift Container Platform クラスターのアップグレードがブロックされる可能性があります。これには、hostpath-provisioner ストレージまたは SR-IOV ネットワークインターフェイスを使用する仮想マシンが含まれます。
回避策として、仮想マシンを再設定し、クラスターのアップグレード時にそれらの電源をオフにするようにできます。仮想マシン設定ファイルの
spec
セクションで、以下を実行します。evictionStrategy
およびrunStrategy
フィールドを変更します。-
evictionStrategy: LiveMigrate
フィールドを削除します。エビクションストラテジーの設定方法についての詳細は、仮想マシンのエビクションストラテジーの設定 を参照してください。 -
runStrategy
フィールドをAlways
に設定します。
-
以下のコマンドを実行して、デフォルトの CPU モデルを設定します。
注記ライブマイグレーションをサポートする仮想マシンを起動する前に、この変更を行う必要があります。
$ oc annotate --overwrite -n openshift-cnv hyperconverged kubevirt-hyperconverged kubevirt.kubevirt.io/jsonpatch='[ { "op": "add", "path": "/spec/configuration/cpuModel", "value": "<cpu_model>" 1 } ]'
- 1
<cpu-model>
を実際の CPU モデルの値に置き換えます。すべてのノードにoc describe node <node>
を実行し、cpu-model-<name>
ラベルを確認してこの値を判別できます。すべてのノードに存在する CPU モデルを選択します。
Red Hat Ceph Storage または Red Hat OpenShift Data Foundation Storage を使用する場合は、一度に 100 台以上の仮想マシンのクローンを作成できない場合があります。(BZ#1989527)
回避策として、ストレージプロファイルマニフェストに
spec.cloneStrategy: copy
を設定して、ホスト支援コピーを実行できます。以下に例を示します。apiVersion: cdi.kubevirt.io/v1beta1 kind: StorageProfile metadata: name: <provisioner_class> # ... spec: claimPropertySets: - accessModes: - ReadWriteOnce volumeMode: Filesystem cloneStrategy: copy 1 status: provisioner: <provisioner> storageClass: <provisioner_class>
- 1
- デフォルトのクローン作成方法は、
copy
として設定されます。
場合によっては、複数の仮想マシンが読み取り/書き込みモードで同じ PVC をマウントできるため、データが破損する可能性があります。(BZ#1992753)
- 回避策として、複数の仮想マシンで読み取り/書き込みモードで単一の PVC を使用しないでください。
Pod Disruption Budget (PDB) は、移行可能な仮想マシンイメージについての Pod の中断を防ぎます。PDB が Pod の中断を検出する場合、
openshift-monitoring
はLiveMigrate
エビクションストラテジーを使用する仮想マシンイメージに対して 60 分ごとにPodDisruptionBudgetAtLimit
アラートを送信します。(BZ#2026733)- 回避策として、アラートをサイレンスにします。
大規模なクラスターでは、OpenShift Virtualization MAC プールマネージャーの起動に時間がかかりすぎる可能性があり、OpenShift Virtualization が準備状態にならない可能性があります。(BZ#2035344)
回避策として、MAC プーリング機能が必要ない場合には、以下のコマンドを実行してこのサブコンポーネントを無効にします。
$ oc annotate --overwrite -n openshift-cnv hco kubevirt-hyperconverged 'networkaddonsconfigs.kubevirt.io/jsonpatch=[ { "op": "replace" "path": "/spec/kubeMacPool" "value": null } ]'
OpenShift Virtualization は、Pod によって使用されるサービスアカウントトークンをその特定の Pod にリンクします。OpenShift Virtualization は、トークンが含まれるディスクイメージを作成してサービスアカウントボリュームを実装します。仮想マシンを移行すると、サービスアカウントボリュームが無効になります。(BZ#2037611)
- 回避策として、サービスアカウントではなくユーザーアカウントを使用してください。ユーザーアカウントトークンは特定の Pod にバインドされていないためです。
- シャットダウン中に仮想マシンがクラッシュしたりハングアップしたりした場合に、新しいシャットダウン要求は仮想マシンを停止しません。(BZ#2040766)
ドライバーをインストールする前に仲介デバイスを有効にするように
HyperConverged
カスタムリソース (CR) を設定する場合は、仲介デバイスの有効化は発生しません。この問題は更新によってトリガーされます。たとえば、NVIDIA ドライバーをインストールするdaemonset
の前にvirt-handler
を更新した場合、ノードは仮想マシン GPU を提供することができません。(BZ#2046298)回避策として、以下を実施します。
-
HyperConverged
CR からmediatedDevicesConfiguration
およびpermittedHostDevices
を削除します。 -
使用する設定で、
mediatedDevicesConfiguration
およびpermittedHostDevices
スタンザの両方を更新します。
-
- 仮想マシンウィザードの YAML サンプルはハードコーディングされており、常に最新のアップストリーム変更が含まれるわけではありません。(BZ#2055492)
csi-clone
クローンストラテジーを使用して 100 台以上の仮想マシンのクローンを作成する場合、Ceph CSI はクローンをパージしない可能性があります。クローンの手動削除も失敗する可能性があります。(BZ#2055595)-
回避策として、
ceph-mgr
を再起動して仮想マシンのクローンをパージすることができます。
-
回避策として、
非特権ユーザーは、
VM Network Interfaces
タブの Add Network Interface ボタンを使用できません。(BZ#2056420)- 回避策として、非特権ユーザーは、仮想マシンウィザードを使用して仮想マシンを作成する間に追加のネットワークインターフェイスを追加できます。
非特権ユーザーは、RBAC ルールにより仮想マシンにディスクを追加できません。(BZ#2056421)
- 回避策として、特定のユーザーがディスクを追加できるように RBAC ルールを手動で追加します。
Web コンソールには、カスタム namespace にデプロイされた仮想マシンテンプレートが表示されません。Web コンソールには、デフォルトの namespace にデプロイされたテンプレートしか表示されません。(BZ#2054650)
- 回避策として、カスタム namespace にテンプレートをデプロイすることは避けてください。
Single Node OpenShift (SNO) クラスターでは、VMI の
spec.evictionStrategy
フィールドがLiveMigrate
に設定されている場合、クラスターの更新が失敗します。ライブマイグレーションを成功させるには、クラスターに複数のワーカー ノードが必要です。(BZ#2073880)次の 2 つの回避策があります。
-
仮想マシン宣言から
spec.evictionStrategy
フィールドを削除します。 - OpenShift Container Platform を更新する前に、仮想マシンを手動で停止します。
-
仮想マシン宣言から