すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:名前空間とクォータの管理

最終更新日:Mar 26, 2026

マルチテナントの Container Service for Kubernetes (ACK) クラスターでは、複数のチームが同じクラスターを共有するため、リソースが際限なく消費されてしまう可能性があります。名前空間を利用することで、クラスターリソースを分離されたグループに分割し、チームや環境ごとにクォータの適用、権限の管理、コストの追跡が可能になります。

名前空間

ACK クラスターでは、名前空間によってクラスターリソースが分離されたグループに分割されます。複数のチームがクラスターを共有する場合、名前空間を作成してチームや環境ごとにリソースを分類し、リソースクォータを使用して各名前空間が消費できるリソースを制限します。

デフォルトでは、実行中の状態にある Pod は、ノード上の CPU およびメモリリソースを無制限に消費できます。単一の名前空間内の Pod が、クラスター全体のリソースを使い果たす可能性があります。これを防ぐために、名前空間ごとに CPU、メモリ、Pod 数などのリソースクォータを設定します。

割り当て例:RAM が 32 GiB、CPU コアが 16 個のクラスターで、チーム A に 20 GiB と 10 コア、チーム B に 10 GiB と 4 コアを割り当て、2 GiB と 2 コアを予備として確保します。あるいは、testing 名前空間に 1 コアと 1 GiB の RAM を割り当て、production 名前空間に残りのリソースを使用させることもできます。

名前空間の作成

ACK コンソール経由での設定

  1. ACK コンソールにログインします。左側のナビゲーションウィンドウで、ACK コンソール[クラスター] をクリックします。

  2. [クラスター] ページで、管理するクラスターを見つけてその名前をクリックします。左側のナビゲーションウィンドウで、[名前空間とクォータ] をクリックします。

  3. [作成] をクリックします。表示されたダイアログボックスで、名前空間の名前とラベルを設定し、[OK] をクリックします。

kubectl を使用

  1. 名前空間を作成します。

    kubectl create namespace test
  2. 名前空間が作成されたことを確認します。

    kubectl get namespaces

    期待される出力:

    NAME              STATUS   AGE
    default           Active   46h
    kube-node-lease   Active   46h
    kube-public       Active   46h
    kube-system       Active   46h
    test              Active   9s

    名前空間 test がリスト内でアクティブな状態になっていることがわかります。

リソースクォータと使用制限の設定

説明

名前空間に CPU とメモリのクォータを設定すると、その名前空間で作成されるすべての Pod で CPU とメモリの使用制限を指定する必要があります。Pod の作成失敗を避けるために、名前空間内のコンテナのデフォルトリソース制限を設定してください。

ACK コンソール経由での設定

  1. [名前空間] ページで、管理する名前空間の [操作] 列にある [リソースクォータと使用制限] をクリックします。

  2. [リソースクォータと使用制限] ダイアログボックスで、リソースクォータとデフォルトのリソース制限を設定します。設定の詳細については、リソースクォータおよび名前空間のデフォルトのメモリリクエストと制限の設定をご参照ください。

クォータ変更のベストプラクティス

重要

ベストプラクティス:クォータの変更は、オフピーク時に行ってください。変更を加える前に、既存のワークロードのリソース使用量を確認してください。

  • Horizontal Pod Autoscaler (HPA) の自動スケーリングのために十分なリソースを確保します。

  • クォータを調整した後、少なくとも 30 分間クラスターを監視し、HPA が期待どおりに実行されることを確認します。

名前空間の削除

警告

組み込みの名前空間 (defaultkube-systemkube-publickube-node-lease) は削除できません。名前空間を削除する前に、その中のすべてのリソースをクリアしてください。名前空間が長時間 Terminating ステータスのままである場合は、「名前空間が Terminating ステータスでスタックした場合の対処法」をご参照ください。

ACK コンソールを使用

  1. [名前空間] ページで、削除する名前空間を見つけ、[操作] 列の image > [削除] をクリックします。 まず削除保護を無効にするには、[操作] 列の image > [削除保護の無効化] をクリックします。

  2. [確認] ダイアログボックスで、名前空間内の関連リソースを確認し、[削除の確認] をクリックします。

kubectl を使用

kubectl delete namespace test

よくある質問

名前空間が Terminating ステータスでスタックした場合の対処法

リソースがまだ残っている名前空間を削除しようとすると、削除プロセスが Terminating ステータスのまま無期限に停止することがあります。この問題を解決するには、名前空間の spec にある finalizers 配列をクリアします。これにより、Kubernetes が自動的に名前空間を削除します。ただし、この操作を行うとクラスター内に孤立したリソースが残る可能性があるため、実行する前に名前空間内のワークロードをクリーンアップしてください。

以下の手順に従って、名前空間を強制的に削除します (例として istio-system 名前空間を使用します):

  1. ターミナルを開き、クラスターのリバースプロキシを起動します。

    kubectl proxy

    期待される出力:

    Starting to serve on 127.0.0.1:8001
  2. 2つ目のターミナルを開きます。トークンをエクスポートし、API サーバーへの接続性を確認します。

    export TOKEN=$(kubectl describe secret $(kubectl get secrets | grep default | cut -f1 -d ' ') | grep -E '^token' | cut -f2 -d':' | tr -d '\t')
    curl http://localhost:8001/api/v1/namespaces --header "Authorization: Bearer $TOKEN" --insecure
  3. 名前空間の設定を JSON ファイルにエクスポートします。

    kubectl get namespace istio-system -o json > istio-system.json
  4. istio-system.json を開き、spec セクションの finalizers 配列をクリアします。

    "spec": {
        "finalizers": []
    }
  5. 更新された設定を適用して finalizer を削除します。

    curl -X PUT --data-binary @istio-system.json http://localhost:8001/api/v1/namespaces/istio-system/finalize -H "Content-Type: application/json" --header "Authorization: Bearer $TOKEN" --insecure

次のステップ

参考情報