6.3.6. ノード上でのスワップメモリー使用の許可
クラスターノード上のワークロードにスワップメモリーの使用を許可できます。
ノード上のスワップメモリーのサポートは、テクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
スワップメモリーの有効化は、Container-native Virtualization (CNV) ユーザーまたはユースケースでのみ使用できます。
スワップメモリーを有効にすると、ワークロードのパフォーマンスとリソース不足の処理に悪影響を与える可能性があります。コントロールプレーンノードでスワップメモリーを有効化しないでください。
スワップメモリーを有効にするには、kubeletconfig カスタムリソース (CR) を作成して、swapbehavior パラメーターを設定します。制限付きまたは無制限のスワップメモリーを設定できます。
制限付き:
LimitedSwap値を使用して、使用できるスワップメモリーワークロード量を制限します。OpenShift Container Platform によって管理されていないノード上のワークロードは、引き続きスワップメモリーを使用できます。LimitedSwapの動作は、ノードが Linux コントロールグループ バージョン 1 (cgroups v1) またはバージョン 2 (cgroup v 2) で実行されているかどうかによって異なります。- cgroup v2: OpenShift Container Platform ワークロードは、設定されている場合、Pod のメモリー制限まで、メモリーとスワップの任意の組み合わせを使用できます。
- cgroup v1: OpenShift Container Platform ワークロードはスワップメモリーを使用できません。
-
制限なし:
UnlimitedSwap値を使用して、ワークロードがシステム制限まで、要求したスワップメモリーを使用できるようにします。
この設定がないと、スワップメモリーが存在する場合は kubelet が開始されないため、ノードでスワップメモリーを有効にする前に、OpenShift Container Platform でスワップメモリーを有効にする必要があります。ノードにスワップメモリーが存在しない場合、OpenShift Container Platform でスワップメモリーを有効にしても効果はありません。
前提条件
- バージョン 4.10 以降を使用する OpenShift Container Platform クラスターが実行中である。
- クラスターが cgroup v2 を使用するように設定されている。スワップメモリーは、cgroup v1 を使用するクラスターのノードではサポートされていません。
- 管理者権限を持つユーザーとしてクラスターにログインしている。
クラスターで
TechPreviewNoUpgrade機能セットを有効にしている (ノードクラスターの操作 フィーチャーゲートを使用した機能の有効化 を参照)。 注記TechPreviewNoUpgrade機能セットを有効にすると元に戻すことができなくなり、マイナーバージョンの更新ができなくなります。これらの機能セットは、実稼働クラスターでは推奨されません。-
ノードで cgroup v2 が有効になっている場合は、
swapaccount=1カーネル引数を設定して、ノードでスワップアカウンティングを有効にする必要があります。
手順
スワップメモリーを許可するマシン設定プールにカスタムラベルを適用します。
$ oc label machineconfigpool worker kubelet-swap=enabledカスタムリソース (CR) を作成し、スワップ設定を有効にして設定します。
apiVersion: machineconfiguration.openshift.io/v1 kind: KubeletConfig metadata: name: swap-config spec: machineConfigPoolSelector: matchLabels: kubelet-swap: enabled kubeletConfig: failSwapOn: false memorySwap: swapBehavior: LimitedSwap #...各項目の説明:
failSwapOn-
falseに設定すると、関連付けられたノードでスワップメモリーを使用できるようになります。スワップメモリーの使用を無効にするには、trueに設定します。 swapBehavior- オプション: OpenShift Container Platform Pod のスワップメモリーの動作を指定します。
- マシンでスワップメモリーを有効にします。