名前空間を使用すると、同じクラスタ内のリソースを異なるワークスペースに分割できます。 これにより、リソースを分離し、クォータ、権限、および台帳を管理できます。 これにより、マルチテナントシナリオでの Container Service for Kubernetes (ACK) クラスタの管理と保守のコストが削減されます。
名前空間
ACK クラスタでは、名前空間をメカニズムとして使用して、同じクラスタ内のリソースを分離されたグループに分割できます。 複数のユーザーがクラスタを共有する場合、名前空間を作成して、さまざまなタスクを実行するために使用されるクラスタリソースを分類し、リソースクォータを使用して名前空間内のリソース割り当てを制限および管理できます。
デフォルトでは、実行状態のポッドは、ノードの CPU とメモリリソースを無制限に使用できます。 この場合、名前空間内のポッドがクラスタのリソースを使い果たしてしまう可能性があります。 名前空間には、CPU、メモリ、ポッドクォータなど、複数のリソースクォータを構成できます。
名前空間の作成
ACK コンソールを使用する
ACK コンソールにログオンします。 左側のナビゲーションウィンドウで、[クラスタ] をクリックします。
[クラスタ] ページで、管理するクラスタを見つけ、その名前をクリックします。 左側のナビゲーションウィンドウで、[名前空間とクォータ] をクリックします。
[作成] をクリックします。 表示されるダイアログボックスで、名前空間の名前とラベルを構成し、[OK] をクリックします。
kubectl を使用する
名前空間を作成します。
kubectl create namespace test名前空間が作成されたことを確認します。
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 という名前の新しい名前空間がリストにあることを示しています。
名前空間を作成した後、ラベルの変更、リソースクォータと制限の設定、名前空間の削除など、名前空間の構成を変更できます。
リソースクォータと制限の構成
名前空間を作成した後、クォータと制限範囲を構成して、名前空間内のポッドのリソース使用量とオーバーヘッドを制御できます。
名前空間 ページで、管理する名前空間の アクション 列にある ResourceQuota と LimitRange をクリックします。
[リソースクォータと制限] ダイアログボックスで、リソースクォータとデフォルトのリソース制限を構成します。
リソースクォータと制限の構成方法の詳細については、「Resource Quotas」および「Configure Default Memory Requests and Limits for a Namespace」をご参照ください。
説明名前空間に CPU とメモリのクォータを構成した後、ポッドを作成するときに CPU とメモリの制限を指定する必要があります。 また、名前空間内のすべてのコンテナのデフォルトのリソース制限を構成することもできます。
名前空間のリソースクォータを変更するための推奨事項
オフピーク時に変更を実行することをお勧めします。 操作前に、既存のワークロードのリソース使用量を確認してください。
HPA 自動スケーリングをサポートするために十分なリソースが予約されていることを確認してください。
調整後、少なくとも 30 分間システムを監視して、HPA が期待どおりに実行されていることを確認することをお勧めします。
名前空間の削除
組み込み名前空間は削除できません。
名前空間の削除保護を有効にするには、[アクション] 列で
> [削除保護を無効にする] を選択します。 名前空間を削除するときは、名前空間内のリソースがクリアされていることを確認してください。 名前空間が長時間 Terminating ステータスになっている場合は、名前空間を強制的に削除できます。 詳細については、「名前空間が Terminating ステータスになっている場合の対処方法」をご参照ください。
ACK コンソールを使用する
名前空間 ページで、削除する名前空間を見つけ、
> [削除] を アクション 列でクリックします。[確認] ダイアログボックスで、名前空間に関連付けられているリソースを確認し、[削除の確認] をクリックします。
kubectl を使用する
名前空間を削除するには、次のコマンドを実行します。
kubectl delete namespace testFAQ
名前空間が Terminating ステータスになっている場合の対処方法
リソースを持つ名前空間を削除すると、削除操作は長時間 Terminating ステータスになります。 名前空間の finalizers フィールドを削除して、このステータスをすぐに終了できます。 この操作により、名前空間リソースがクラスタに残る可能性があります。 操作前に名前空間内のリソースをクリーンアップすることをお勧めします。
finalizers フィールドの配列が空で、ステータスが Terminating の場合、Kubernetes は自動的に名前空間を削除します。 次のいずれかの方法を使用して、名前空間を強制的に削除できます。
シェル端末を開きます。 次のコマンドを実行して、Kubernetes クラスタのリバースプロキシを作成します。
kubectl proxyコマンド出力の例:
Starting to serve on 127.0.0.1:8001新しいシェル端末を開きます。 Kubernetes クラスタに接続するための環境変数を定義します。 次に、curl コマンドを実行して、接続性と承認を確認します。
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名前空間の構成をクエリします。 この例では、istio-system が使用されています。
kubectl get namespace istio-system -o json > istio-system.jsonfinalizers フィールドの配列をクリアし、構成を保存します。
"spec": { "finalizers": [ ] },finalizers フィールドを削除します。 この例では、istio-system 名前空間が使用されています。
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
関連情報
クラウドリソースとクラスタ構成の制限、個々のクラスタ容量の制限、クラスタクォータ、依存クラウドリソースクォータなど、クラスタクォータと制限の詳細については、「クォータと制限」をご参照ください。
名前空間のクォータを構成する方法の詳細については、「API オブジェクトのクォータの構成」をご参照ください。
Resource Access Management (RAM) ユーザーまたは RAM ロールをロールベースアクセス制御 (RBAC) 権限と組み合わせて使用して、クラスタまたは名前空間の詳細な権限管理を実装できます。 詳細については、「RAM を使用してクラスタとクラウドリソースへのアクセスを承認する」および「RBAC を使用してクラスタ内のリソースに対する操作権限を管理する」をご参照ください。