5.5. より高い仮想マシンワークロード密度の設定
仮想マシンの数を増やすには、メモリー (RAM) の量をオーバーコミットして、クラスター内の仮想マシンワークロード密度を高く設定します。
より高いワークロード密度を設定する機能は、テクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
次のワークロードは、高いワークロード密度に特に適しています。
- 多数の類似ワークロード
- 過少使用されたワークロード
メモリーがオーバーコミットされると、ワークロード密度が高くなりますが、使用率の高いシステムのワークロードパフォーマンスが低下する可能性もあります。
5.5.1. wasp-agent を使用して仮想マシンワークロード密度を高く設定する リンクのコピーリンクがクリップボードにコピーされました!
wasp-agent
コンポーネントにより、OpenShift Container Platform クラスターはスワップリソースを仮想マシンワークロードに割り当てることができます。スワップの使用は、ワーカーノードでのみサポートされます。
スワップリソースは、Burstable
Quality of Service (QoS) クラスの仮想マシンワークロード (VM Pod) にのみ割り当てることができます。Guaranteed
QoS クラスの仮想マシン Pod と、仮想マシンに属していない任意の QoS クラスの Pod は、リソースをスワップできません。
QoS クラスの説明は、Configure Quality of Service for Pods (Kubernetes ドキュメント) を参照してください。
前提条件
-
oc
ツールが利用できる。 - cluster-admin ロールでクラスターにログイン済みである。
- メモリーのオーバーコミット率が定義済みである。
- ノードはワーカープールに属している。
手順
次のコマンドを入力して、特権サービスアカウントを作成します。
oc adm new-project wasp
$ oc adm new-project wasp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc create sa -n wasp wasp
$ oc create sa -n wasp wasp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc create clusterrolebinding wasp --clusterrole=cluster-admin --serviceaccount=wasp:wasp
$ oc create clusterrolebinding wasp --clusterrole=cluster-admin --serviceaccount=wasp:wasp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc adm policy add-scc-to-user -n wasp privileged -z wasp
$ oc adm policy add-scc-to-user -n wasp privileged -z wasp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記wasp-agent
コンポーネントは、OCI フックをデプロイして、ノードレベルでコンテナーのスワップ使用を有効にします。低レベルの性質上、DaemonSet
オブジェクトには特権が必要です。次のように
DaemonSet
オブジェクトを作成してwasp-agent
をデプロイします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow スワップを許可するように
kubelet
サービスを設定します。例に示すように、
KubeletConfiguration
ファイルを作成します。KubeletConfiguration
ファイルの例Copy to Clipboard Copied! Toggle word wrap Toggle overflow クラスターが既存の
KubeletConfiguration
ファイルをすでに使用している場合は、spec
セクションに以下を追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行します。
$ oc wait mcp worker --for condition=Updated=True
$ oc wait mcp worker --for condition=Updated=True
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
次のとおり、スワップをプロビジョニングするための
MachineConfig
オブジェクトを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 最悪のシナリオに備えて十分なスワップ領域を確保するには、オーバーコミットされた RAM と同量以上のスワップ領域をプロビジョニングしておく必要があります。次の式を使用して、ノードにプロビジョニングするスワップ領域の量を計算します。
NODE_SWAP_SPACE = NODE_RAM * (MEMORY_OVER_COMMIT_PERCENT / 100% - 1)
NODE_SWAP_SPACE = NODE_RAM * (MEMORY_OVER_COMMIT_PERCENT / 100% - 1)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下に例を示します。
NODE_SWAP_SPACE = 16 GB * (150% / 100% - 1) = 16 GB * (1.5 - 1) = 16 GB * (0.5) = 8 GB
NODE_SWAP_SPACE = 16 GB * (150% / 100% - 1) = 16 GB * (1.5 - 1) = 16 GB * (0.5) = 8 GB
Copy to Clipboard Copied! Toggle word wrap Toggle overflow アラートルールを次のようにデプロイします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OpenShift Container Platform Web コンソールを使用して、または CLI で HyperConverged カスタムリソース(CR)ファイルを編集して、メモリーのオーバーコミットを使用するように OpenShift Virtualization を設定します。
Web コンソール
-
OpenShift Container Platform Web コンソールで、Virtualization
Overview Settings General settings Memory density に移動します。 - Enable memory density をオンに設定します。
-
OpenShift Container Platform Web コンソールで、Virtualization
CLI
より高いメモリー密度を有効にし、オーバーコミットレートを設定するように OpenShift Virtualization を設定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 正常な出力
hyperconverged.hco.kubevirt.io/kubevirt-hyperconverged patched
hyperconverged.hco.kubevirt.io/kubevirt-hyperconverged patched
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
注記すべての設定を適用すると、すべての
MachineConfigPool
ロールアウトの完了後にのみスワップ機能が完全に利用可能になります。
検証
wasp-agent
のデプロイメントを確認するには、次のコマンドを実行します。oc rollout status ds wasp-agent -n wasp
$ oc rollout status ds wasp-agent -n wasp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow デプロイメントが成功すると、次のメッセージが表示されます。
daemon set "wasp-agent" successfully rolled out
daemon set "wasp-agent" successfully rolled out
Copy to Clipboard Copied! Toggle word wrap Toggle overflow スワップが正しくプロビジョニングされていることを確認するには、次の手順を実行します。
以下のコマンドを実行します。
oc get nodes -l node-role.kubernetes.io/worker
$ oc get nodes -l node-role.kubernetes.io/worker
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 提供されたリストからノードを選択し、次のコマンドを実行します。
oc debug node/<selected-node> -- free -m
$ oc debug node/<selected-node> -- free -m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow スワップが正しくプロビジョニングされている場合、次のようにゼロより大きい値が表示されます。
Expand total
used
free
shared
buff/cache
available
Mem:
31846
23155
1044
6014
14483
8690
Swap:
8191
2337
5854
次のコマンドを実行して、OpenShift Virtualization のメモリーオーバーコミットメント設定を確認します。
oc -n openshift-cnv get HyperConverged/kubevirt-hyperconverged -o jsonpath='{.spec.higherWorkloadDensity}{"\n"}'
$ oc -n openshift-cnv get HyperConverged/kubevirt-hyperconverged -o jsonpath='{.spec.higherWorkloadDensity}{"\n"}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
{"memoryOvercommitPercentage":150}
{"memoryOvercommitPercentage":150}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 返される値は、以前に設定した値と一致する必要があります。