【ネームスペース】

Namespace(Kubernetes) とは?

💡 1つのクラスタをマンションの部屋のように区切る仕切り
📌 このページのポイント
Kubernetes Namespace による論理分離 クラスタ dev(開発) Pod A Pod B Service: api ConfigMap CPU: 2core上限 Mem: 4Gi上限 staging(検証) Pod A Pod B Service: api ConfigMap CPU: 4core上限 Mem: 8Gi上限 prod(本番) Pod A Pod B Service: api ConfigMap CPU: 8core上限 Mem: 16Gi上限 同名リソースもNamespaceが違えば独立して存在できる
Kubernetes Namespaceによるリソース分離のイメージ
ひよこ ひよこ

Namespaceって何のために使うの?

ペンギン先生 ペンギン先生

1つのKubernetesクラスタを複数のチームで共有する時に便利なんだ。マンションの各部屋みたいに、チームAのリソースとチームBのリソースを分けられるよ。

ひよこ ひよこ

分けないとどうなるの?

ペンギン先生 ペンギン先生

リソースの名前が衝突したり、他のチームのリソースを間違って削除したりするリスクがあるんだ。Namespaceで分ければ、同じ名前のServiceやDeploymentを別々に作れるよ。

ひよこ ひよこ

最初から作られているNamespaceってあるの?

ペンギン先生 ペンギン先生

default、kube-system、kube-public、kube-node-leaseの4つが最初からあるよ。kube-systemにはDNSコントローラーなどのシステムコンポーネントが入っているから、触らないのが無難だね。

ひよこ ひよこ

Namespaceをまたいで通信することはできるの?

ペンギン先生 ペンギン先生

できるよ。service-name.namespace-name.svc.cluster.localというDNS名でアクセスするんだ。ただしNetworkPolicyで通信を制限することもできるから、セキュリティ要件に応じて設定するのがベストプラクティスだね。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Namespace」って出てきたら「Kubernetesクラスタの中を区切る仕切り」と思えればだいたいOK!
📖 おまけ:英語の意味
「Namespace」 = 名前空間
💬 プログラミングの名前空間と同じ発想で、同じ名前のリソースが衝突しないように区切る仕組みだよ
← 用語集にもどる