18.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 を作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc create namespace qos-example
$ oc create namespace qos-example
1 - 1
- この例では
qos-example
namespace を使用します。
出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow namespace/qos-example created
namespace/qos-example created
Pod
リソースを作成します。Pod
リソースを定義する YAML ファイルを作成します。qos-example.yaml
ファイルの例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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]
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
1 resources: limits: memory: "200Mi"
2 cpu: "1"
3 requests: memory: "200Mi"
4 cpu: "1"
5 securityContext: allowPrivilegeEscalation: false capabilities: drop: [ALL]
- 1
- この例では、パブリック
hello-openshift
イメージを使用します。 - 2
- メモリー制限を 200 MB に設定します。
- 3
- CPU 制限を 1 CPU に設定します。
- 4
- メモリー要求を 200 MB に設定します。
- 5
- CPU 要求を 1 CPU に設定します。注記
コンテナーのメモリー制限を指定しても、メモリー要求を指定しなかった場合、OpenShift Container Platform によって制限に合わせてメモリー要求が自動的に割り当てられます。同様に、コンテナーの CPU 制限を指定しても、CPU 要求を指定しなかった場合、OpenShift Container Platform によって制限に合わせて CPU 要求が自動的に割り当てられます。
次のコマンドを実行して、
Pod
リソースを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc apply -f qos-example.yaml --namespace=qos-example
$ oc apply -f qos-example.yaml --namespace=qos-example
出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pod/qos-demo created
pod/qos-demo created
検証
次のコマンドを実行して、Pod の
qosClass
値を表示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get pod qos-demo --namespace=qos-example --output=yaml | grep qosClass
$ oc get pod qos-demo --namespace=qos-example --output=yaml | grep qosClass
出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow qosClass: Guaranteed
qosClass: Guaranteed