【ネームスペース】
Namespace(Kubernetes) とは?
最終更新:
💡 1つのクラスタをマンションの部屋のように区切る仕切り
Kubernetesの1つのクラスタで、PodやServiceなどの名前付きリソースを論理的に区分する仕組み。権限や割当量の管理にも使えるが、作成するだけで通信や計算資源が完全に隔離されるわけではない。
📌 このページのポイント
Namespaceは、マンションの部屋みたいなもの?
同じクラスタの中で管理する範囲を分ける、というたとえだね。たとえばdevとprodで、それぞれapiというServiceを作れる。名前は同じでもNamespaceが違うので、別のリソースとして扱えるんだ
Kubernetesのものは全部、この部屋に入るの?
他のチームに触られないようにできる?
操作の権限はRBACなどで設定するよ。Namespaceに属するRoleを使って、その範囲で何ができるかを管理できる。Namespaceを作っただけで全利用者の権限が自動的に狭まるわけではないんだ
CPUやメモリも自動で別々になる?
Namespaceの間では通信できない?
区切っただけでは通信は遮断されないよ。Serviceを別のNamespaceから参照することもできる。通信を制限したいならNetworkPolicyなどを設定し、それに対応するネットワーク実装も必要。NetworkPolicyを置いただけでは、対応していない実装で効果は出ないんだ
もっと詳しく知りたい人へ
最初からあるNamespaceは?
Kubernetesではdefault、kube-system、kube-public、kube-node-leaseが初期に用意されます。defaultは指定しない場合の既定、kube-systemはシステムのオブジェクト、kube-node-leaseはノードのLeaseなどに使われます。初期Namespaceの役割と、自分のアプリ用に作るNamespaceを区別しましょう。
まとめ:ざっくりこれだけ覚えればOK!
「KubernetesのNamespace」って出てきたら「クラスタ内の名前や管理を区切る仕切り」と思えばだいたいOK!
📖 おまけ:英語の意味
「Namespace」 = 名前空間
💬 プログラミングの名前空間と同じ発想で、同じ名前のリソースが衝突しないように区切る仕組みだよ