Namespace (k8s)
GPT-4.icon
リソースを論理的に分離・管理するための仕組みです。
🔹 Namespaceの主な目的
異なるチーム・プロジェクト・環境(dev/staging/prodなど)でリソースを分ける。
例: team-a、team-b、production、stagingなどのnamespace。
2. 名前の衝突を防ぐ
同じ名前のリソース(例: service/my-app)を複数定義できる(ただしnamespaceが異なる必要あり)。
3. RBAC(Role-Based Access Control)と組み合わせたアクセス制御 特定のnamespaceにだけアクセスできるようにユーザーやサービスアカウントを制限可能。
4. リソースクォータによる制限
namespaceごとにCPU、メモリ、オブジェクト数などの上限を設定可能。
🔹 Namespaceの使い方の概要
作成:
$ kubectl create namespace my-namespace
特定のnamespaceにリソースを作成:
$ kubectl apply -f my-pod.yaml -n my-namespace
namespaceを指定してリソースを確認:
$ kubectl get pods -n my-namespace
現在のnamespaceを変更(kubectl用):
$ kubectl config set-context --current --namespace=my-namespace
🔹 注意点
default, kube-system, kube-public, kube-node-lease は最初から存在する特殊なnamespaceです。
Clusterスコープのリソース(例: Node, PersistentVolume)はNamespaceに属しません。
🔹 よくある使い方
table:_
目的 Namespace名の例
チーム別 team-a, team-b
環境別 dev, staging, prod
テスト・サンドボックス sandbox-123, test-john