🎚️

OpenShiftでリソースクォータを設定

2024/12/08に公開

0.はじめに

OpenShift Container Platform(以下、OCP)入門者向けに、リソースクォータの設定方法を解説します。

OpenShiftにおけるリソースクォータは、プロジェクト(名前空間)内で使用できるリソース量を制限する設定です。

これにより、クラスターのリソースを効率的に利用し、過剰な消費や競合を防ぐことができます。

では、次の章から具体的な解説を進めます!

1.リソースクォータの主な種類

  1. コンピューターリソースの制限:

    • CPUやメモリ、一時ストレージの総量を制限します。
  2. ストレージリソースの制限:

    • 永続ボリュームクレーム(PVC)の総数や容量を制限します。
  3. オブジェクトカウントの制限:

    • 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. リソースの最適な分配:
    クラスター全体でリソースを効率よく利用し、特定のプロジェクトによるリソースの独占を防ぎます。

  2. コスト管理:
    リソース消費を制限することで、不要なリソース使用やコスト増加を防止します。

  3. 安定したクラスター運用:
    クラスター内でのリソース不足や競合を未然に防ぎ、安定した運用を実現します。

1回で覚えるのは難しいと思うので、何度かトライして覚えるで全然大丈夫です。

今後もOpenShiftについて解説していきます。

おわりっ!

参考サイト

Discussion