【ふわっとわかるコンテナ用語】Kubernetes Namespaceとは?

IT用語

「世の中には難しいことが多い!」と感じることが多い私が、様々な用語を、初学者向けにわかりやすく全力で解説します。

今回解説する用語

KubernetesにおけるNamespaceについて解説をします。私はNamespaceについて公式ドキュメントを読んでみてもピンときませんでした。そのような方に向けて、できるだけ分かりやすく解説をします。

Namespace(名前空間)とは?

Namespaceとは、Kubernetesで管理するリソースに名前を付けて、グルーピングすることが出来る設定方法です。別の名前が付けられたそれぞれのグループは干渉しあいません。つまり、Namespaceを設定することで、Namespaceの名前ごとに分離した環境を作成することが出来ます

具体的に説明するよ

Namespaceについて、詳細に説明をしていきます。Namespaceを理解するために必要なことを一つ一つ解説していきますので、知っている場合は適宜読み飛ばしてください。

Kubernetesとは?

Kubernetes(クバネテェス)とは、複数のコンテナを管理するための技術です。Kubernetsには様々なリソースがあり、このリソースたちがコンテナを管理してくれます。

例えば、Podへの通信を振り分けてくれる、Service(サービス)

Podの数を管理するReplicaSet、デプロイ関連を管理してくれるDeploymentなどがあります。

ServiceやDeploymentなどをKubernetesリソースと呼びます。Kubernetesを使用すると、ユーザーは様々なKubernetesのリソースを作成して、コンテナを管理することが出来るのです。

もっと詳しく知りたい方は以下の記事を読んでみてください。

Namespaceを使用するとどうなるのか?

ある時、作成したシステムが順調に使われてきたので、もっといろいろな機能を追加することになりました。

しかし、すでに稼働しているKubernetesのリソースたちを修正すると何かあったときに困ります。

例えば、本番環境で障害が発生し、「開発環境で調査したい!」となったとしても、開発のためにKubernetesのリソースの内容を変更してしまっていては調査が進みません。

他にも、複数人で開発をする際にみんながKubernetesリソースを変更していると、なにがなんだか分からなくなる可能性があります。

そこでNamespaceの出番です!

Namespaceを使用するとKubernetesのリソースに名前を付けることが出来ます。同じ名前のものはグルーピングされ、同じ名前のリソース同士で稼働します。

例えば、「グリフィンドール」という名前を付けることで、グリフィンドールのKubernetesリソース同士で稼働します。

逆に、異なる名前がついているリソースは干渉しあいません。これにより、複数の分離した環境を作ることが出来るので、複数人で開発がしやすくなるのです。

例えば、Namespaceに「グリフィンドール」と名前を付けた環境を本番環境としてそのままにして、「ハッフルパフ」という名前の環境で開発を進めることも出来ます。

Podもグリフィンドールとハッフルパフそれぞれに作成されます。

このようにNamespaceを付けることにより、複数人での開発などを効率的に行うことが出来ます。わざわざ別の環境を用意してKubernetesリソースを作成して開発をする、、などをする必要はなくなります。

しかし、小規模開発などの場合は無理に使用しなくてもOKです。Namespaceを使用しないからと言って不具合が発生することはありません。

Kubernetesリソースはdefaultで設定されている

Namespaceを指定しない場合は、KubernetesリソースはdefaultのNamespaceに設定されています。

以下のコマンドでNamespaceを確認することが出来ます。

kubectl get namespace

実行結果として、以下のようにdefaultのNamespaceが作成されているはずです。

NAME              STATUS   AGE
default           Active   1d
kube-node-lease   Active   1d
kube-system       Active   1d
kube-public       Active   1d

Namespaceの作り方

以下のコマンドでNamespaceを作成することが出来ます。

kubectl create namespace [Namespaceの名前]

例えば以下のコマンドを実行するとします、

kubectl create namespace testnamespace

そうすると、testnamespaceというNamespaceが作成されます。getコマンドで確認してみてください。

kubectl get namespace

NAME              STATUS   AGE
testnamespace     Active   1d
default           Active   2d
kube-node-lease   Active   2d
kube-system       Active   2d
kube-public       Active   2d

このようにしてNamespaceを作成することが出来ます。しかし、これはあくまでNamespaceを作成する手順です。この後にKubernetesリソースを作成する際に、作成したNamespace名を指定することでリソースをグルーピングしていくことが出来ます。

まとめ

Namespaceとは、Kubernetesリソースをグループに分けて、複数の環境を分けて作ることが出来る設定方法のことです。

参考

Namespace(名前空間)
Kubernetesは、同一の物理クラスター上で複数の仮想クラスターの動作をサポートします。 この仮想クラスターをNamespaceと呼びます。 複数のNamespaceを使う時 Namespaceは...
タイトルとURLをコピーしました