Category: 入門編
2024.02.06
目次
大規模な開発環境で活用できる論理的なサブクラスタを解説
Kubernetes とは、煩雑なコンテナの運用を効率化・自動化するためのコンテナオーケストレーションツールです。
そして Kubernetes のコンポーネントである物理クラスタを論理的にグループ化することで、さまざまなメリットをもたらすのが Kubernetes Namespace です。
本記事では Kubernetes Namespace の概要や役割、ユースケース、操作方法などについて解説します。
1. Kubernetes Namespace (名前空間)とは
Kubernetes Namespace とは、 Kubernetes クラスタを論理的なサブクラスタに分けるグループのようなものです。クラスタとはコンテナ化されたアプリケーションを実行するためのノードマシンの集合体のことを指します。
1つのクラスタ内における Namespace の数に制限はなく、自由に作成することが可能です。
図版出典:STACKSIMPLIFY
Kubernetes Namespace の役割
Namespace は複数のチームが携わる大規模なプロジェクトなどにおいて、クラスタを分割するために使用されます。 Namespace によりクラスタ内のリソースをグループ化して分離することで、多くのユーザーが参加する際にチームごとに独立して管理できるようになります。
初期 Namespace
Kubernetes を起動すると、あらかじめ次の4つの初期 Namespace が作成されています。
- default
明示的に Namespace を指定しない場合にリソースが作成されるデフォルトの Namespace - kube-system
システムコンポーネントやアドオンとして位置づけられているものをデプロイするための Namespace - kube-public
全ユーザーが共通して利用する設定値などを保存するための Namespace - kube-node-lease
ノードのリース情報を格納するための Namespace
Kubernetes Namespace 間の通信
Kubernetes Namespace 同士は互いに独立していますが、同じクラスタ内であれば相互に通信できます。もし通信を制御したい場合は、ネットワークポリシーを利用して制御することも可能です。
2. Kubernetes Namespace のメリット
Kubernetes Namespace を利用するメリットは次のとおりです。
チーム同士の作業に影響しない
同じクラスタ内でも異なるチーム、プロジェクト、環境ごとに論理的にグループ化できるため、お互いの作業への影響を最小限に抑えられます。
リソースを分割できる
Namespace ごとにリソースのクオータを設定できるため、計画的にリソースを分割できます。一部のチームが過度にリソースを消費するといったトラブルを防ぐことが可能です。
RBAC(ロールベースのアクセス制御)を実行できる
Namespace には RBAC (ロールベースのアクセス制御)を適用できるため、柔軟なアクセス制御が可能でセキュリティの向上につながります。
運用を効率化できる
1つのクラスタ内で多くのアプリケーションやシステムが稼働している場合と比較して、 Namespace を活用するとリソースやコストの管理がしやすくなります。これにより運用を効率化できます。
3. Kubernetes Namespace のユースケース
小規模なチームやプロジェクトの場合は不要ですが、特に次のようなケースでは複数の Namespace を有効活用できます。
プロジェクトの分離
大規模なプロジェクトでは、チームごとに Namespace を用意することで互いに影響せず作業を効率化できます。
環境の分離
開発、ステージング、本番など環境ごとにそれぞれ Namespace を利用することで、誤った操作で本番環境に影響を及ぼすリスクを減らせます。
セキュリティポリシーの適用
プロジェクトやチームごとにセキュリティ要件が異なる場合、それぞれの Namespace に対して異なるセキュリティポリシーを適用できます。より柔軟なセキュリティ設定が可能です。
リソース管理
リソースを効率的に管理して無駄なく使用したい場合、 チームごとに Namespace を作成してクオータを設定することが効果的です。
モニタリング・ログ管理
ログの管理やモニタリングを効率化したい場合、 Namespace ごとに異なる設定を適用できます。
ライフサイクル管理
開発するアプリケーションごとに Namespace を設定することで、デプロイ・更新・削除などのライフサイクル管理を個別に行うことができます。
4. Kubernetes Namespace の操作方法
Kubernetes Namespace の各操作は kubectl コマンドを使用します。それぞれのコマンドについて紹介します。
Kubernetes Namespace を作成する
「 test 」という名前の Namespace を作成するコマンドは次のとおりです。
$ kubectl create namespace test
作成した Kubernetes Namespace を確認する
作成した Namespace を確認するコマンドは次のとおりです。実行すると初期 Namespace に加えて、作成したNamespaceが表示されます。
$ kubectl get namespace
NAME STATUS AGE
default Active 10d
kube-node-lease Active 10d
kube-public Active 10d
kube-system Active 10d
test Active 1m30s
Kubernetes Namespace を削除する
Namespace 「 test 」を削除するコマンドは次のとおりです。
$ kubectl delete namespace test
Kubernetes Namespace を切り替える
Namespace を切り替えるコマンドは次のとおりです。
- 実行コマンドごとに一時的に Namespace 「 sample 」に切り替える場合
$ kubectl -n sample get all
- デフォルトの Namespace を「 sample 」に切り替える場合
kubectl config set-context $(kubectl config current-context) --namespace=sample
5. まとめ
Kubernetes Namespace とは、 Kubernetes クラスタを論理的なサブクラスタに分けるグループのようなものです。大規模なプロジェクトなどにおいてチーム同士の作業への影響を最小限に抑えたり、運用を効率化したりするために利用されます。
Namespace を活用できる場面は多いため、 Kubernetes を利用して開発を行う方は概要や操作方法を頭に入れておくことをおすすめします。
Kubernetes の運用を相談したい
Tag: Kubernetes Namespace
Contactお問い合わせ
お見積もり・ご相談など、お気軽にお問い合わせください。