【ネームスペース】

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」 = 名前空間
💬 プログラミングの名前空間と同じ発想で、同じ名前のリソースが衝突しないように区切る仕組みだよ
← 用語集にもどる