OpenShiftでリソースクォータを設定
0.はじめに
OpenShift Container Platform(以下、OCP)入門者向けに、リソースクォータの設定方法を解説します。
OpenShiftにおけるリソースクォータは、プロジェクト(名前空間)内で使用できるリソース量を制限する設定です。
これにより、クラスターのリソースを効率的に利用し、過剰な消費や競合を防ぐことができます。
では、次の章から具体的な解説を進めます!
1.リソースクォータの主な種類
-
コンピューターリソースの制限:
- CPUやメモリ、一時ストレージの総量を制限します。
-
ストレージリソースの制限:
- 永続ボリュームクレーム(PVC)の総数や容量を制限します。
-
オブジェクトカウントの制限:
- Pod、サービス、シークレットなどのオブジェクト数を制限します。
2.リソースクォータの設定手順
以下に、プロジェクトを作成してリソースクォータを設定する例を示します。
1. プロジェクト作成
リソースクォータを適用する新しいプロジェクトを作成します。
oc new-project quota-demo
実行結果の例:
Now using project "quota-demo" on server "https://api.openshift.example.com:6443".
2. リソースクォータの作成
以下のコマンドで、CPU、メモリ、Pod数の上限を設定します。
oc create quota custom-quota --hard=cpu=2,memory=10Gi,pods=5
実行結果の例:
resourcequota/custom-quota created
-
cpu=2
: プロジェクト全体で使用できるCPUの上限は2コア。 -
memory=10Gi
: プロジェクト全体で使用できるメモリの上限は10GiB。 -
pods=5
: プロジェクト内で作成可能なPod数の上限は5。
3. リソースクォータの確認
設定したリソースクォータを一覧表示します。
oc get quota
実行結果の例:
NAME AGE
custom-quota 5m
4. リソースクォータの詳細確認
詳細なリソース使用状況と制限値を確認します。
oc describe quota custom-quota
実行結果の例:
Name: custom-quota
Namespace: quota-demo
Scopes: <none>
Resource Used Hard
-------- ---- ----
cpu 0 2
memory 0 10Gi
pods 0 5
5. Podの作成を試みる
次のコマンドで、リソースクォータ制限の影響を確認します。
oc run nginx --image=bitnami/nginx
制限を超えない場合の結果:
pod/nginx created
6. YAMLからPodを作成
以下のYAMLファイルを作成します。レプリカ数4、CPU制限100m、メモリ制限128Miを設定します。
deployment-quota.yaml
:
apiVersion: apps/v1
kind: Deployment
metadata:
name: quota-test
spec:
replicas: 4
selector:
matchLabels:
app: quota-test
template:
metadata:
labels:
app: quota-test
spec:
containers:
- name: nginx
image: bitnami/nginx
resources:
limits:
cpu: "100m"
memory: "128Mi"
YAMLファイルを適用します。
oc apply -f deployment-quota.yaml
7. リソース制限の確認
Pod数5にスケールアップ
oc scale deployment/quota-test --replicas=5
oc get pods
結果:
NAME READY STATUS RESTARTS AGE
quota-test-7d8b5b9d4d-abcde 1/1 Running 0 2m
quota-test-7d8b5b9d4d-fghij 1/1 Running 0 2m
quota-test-7d8b5b9d4d-klmno 1/1 Running 0 2m
quota-test-7d8b5b9d4d-pqrst 1/1 Running 0 2m
quota-test-7d8b5b9d4d-uvwxy 1/1 Running 0 2m
Pod数6にスケールアップ
oc scale deployment/quota-test --replicas=6
oc get pods
結果:
Error from server (Forbidden): pods "quota-test-7d8b5b9d4d-zabcd" is forbidden: exceeded quota: custom-quota, requested: pods=6, used: pods=5, limited: pods=5
- リソースクォータを超えるため、Podは作成されません。
3.おわりに
今回はリソースクォータについて理解を深めるために、以下を学びました。
-
リソースの最適な分配:
クラスター全体でリソースを効率よく利用し、特定のプロジェクトによるリソースの独占を防ぎます。 -
コスト管理:
リソース消費を制限することで、不要なリソース使用やコスト増加を防止します。 -
安定したクラスター運用:
クラスター内でのリソース不足や競合を未然に防ぎ、安定した運用を実現します。
1回で覚えるのは難しいと思うので、何度かトライして覚えるで全然大丈夫です。
今後もOpenShiftについて解説していきます。
おわりっ!
Discussion