19.2. Guaranteed QoS クラスを持つ Pod の作成
高パフォーマンスのワークロード向けに、quality of service (QoS) クラスが Guaranteed の Pod を作成できます。QoS クラスが Guaranteed の Pod を設定すると、その Pod は指定された CPU とメモリーリソースに優先的にアクセスできます。
QoS クラスが Guaranteed の Pod を作成するには、次の仕様を適用する必要があります。
- Pod 内の各コンテナーのメモリー制限フィールドとメモリー要求フィールドに同じ値を設定します。
- Pod 内の各コンテナーの CPU 制限フィールドと CPU 要求フィールドに同じ値を設定します。
一般的に、QoS クラスが Guaranteed の Pod はノードから削除されません。唯一の例外は、予約済みリソースを超えたシステムデーモンによってリソース競合が発生した場合です。このシナリオでは、kubelet は、ノードの安定性を維持するために最も優先度の低い Pod から順番に Pod を削除する可能性があります。
前提条件
-
cluster-adminロールを持つユーザーとしてクラスターにアクセスできる。 -
OpenShift CLI (
oc)。
手順
次のコマンドを実行して、Pod の namespace を作成します。
$ oc create namespace qos-exampleqos-example:
qos-example のサンプル名前空間を指定します。出力例
namespace/qos-example created
Podリソースを作成します。Podリソースを定義する YAML ファイルを作成します。qos-example.yamlファイルの例apiVersion: v1 kind: Pod metadata: name: qos-demo namespace: qos-example spec: securityContext: runAsNonRoot: true seccompProfile: type: RuntimeDefault containers: - name: qos-demo-ctr image: quay.io/openshifttest/hello-openshift:openshift resources: limits: memory: "200Mi" cpu: "1" requests: memory: "200Mi" cpu: "1" securityContext: allowPrivilegeEscalation: false capabilities: drop: [ALL]ここでは、以下のようになります。
仕様コンテナーイメージ-
hello-openshiftイメージなどの公開イメージを指定します。 spec.containers.resources.limits.memory- メモリー制限を 200MB に指定します。
spec.containers.resources.limits.cpu- CPU 数を 1 に制限することを指定します。
仕様.コンテナー.リソース.リクエスト.メモリー- 200MB のメモリー要求を指定します。
spec.containers.resources.requests.cpuCPU 要求数として 1 を指定します。
注記コンテナーのメモリー制限を指定しても、メモリー要求を指定しなかった場合、OpenShift Container Platform によって制限に合わせてメモリー要求が自動的に割り当てられます。同様に、コンテナーの CPU 制限を指定しても、CPU 要求を指定しなかった場合、OpenShift Container Platform によって制限に合わせて CPU 要求が自動的に割り当てられます。
次のコマンドを実行して、
Podリソースを作成します。$ oc apply -f qos-example.yaml --namespace=qos-example出力例
pod/qos-demo created
検証
次のコマンドを実行して、Pod の
qosClass値を表示します。$ oc get pod qos-demo --namespace=qos-example --output=yaml | grep qosClass出力例
qosClass: Guaranteed