Kubernetes Managed Service Column <Kubernetes運用コラム>

Kubernetes Namespace(名前空間)とは?役割や必要性

Category: 入門編

2024.02.06

大規模な開発環境で活用できる論理的なサブクラスタを解説

Kubernetes とは、煩雑なコンテナの運用を効率化・自動化するためのコンテナオーケストレーションツールです。

そして Kubernetes のコンポーネントである物理クラスタを論理的にグループ化することで、さまざまなメリットをもたらすのが Kubernetes Namespace です。

本記事では Kubernetes Namespace の概要や役割、ユースケース、操作方法などについて解説します。

1. Kubernetes Namespace (名前空間)とは

Kubernetes Namespace とは、 Kubernetes クラスタを論理的なサブクラスタに分けるグループのようなものです。クラスタとはコンテナ化されたアプリケーションを実行するためのノードマシンの集合体のことを指します。

1つのクラスタ内における Namespace の数に制限はなく、自由に作成することが可能です。

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 の運用を相談したい

Kubernetes運用サポートサービス

Kubernetes運用サポートサービス

クラウドベンダが提供するKubernetes 環境の運用をサポートします。

Free

資料ダウンロード

課題解決に役立つ詳しいサービス資料はこちら

資料ダウンロード
  • Kubernetes運用サポートサービスカタログ

    サービスの詳細をご覧いただけます。

Tag: Kubernetes Namespace

Contactお問い合わせ

お見積もり・ご相談など、お気軽にお問い合わせください。

single.php