KubernetesのNamespaceについて

Kubernetesの基礎として何回かに分けて基本事項をまとめていきたいと思います。

今回は「namespace」についてです。

本記事は、Kubernetes公式のnamespaceをベースに書いております。

スポンサーリンク

概要

ざっくりいうと論理的な分割を行う目的で利用されます。

その分割が環境ごとだったり、アプリごとだったりとそのシステムそれぞれで違うかと思います。

公式の例では、環境ごとに分けているようです。

Namespaceを利用する目的としては、以下のように記載されております。

  • 複数のチームやプロジェクトにまたがる多くのユーザーがいる場合に使用することを目的としている
  • 数人や数十人程度のプロジェクト・ユーザーなら利用する必要はあまりない
  • 同アプリケーションの異なるバージョンなど、少し違うリソースを分割する目的ならnamespaceではなくラベルを用いる
スポンサーリンク

基本操作

そんな概要がわかったところで、少し基本操作を覚えていきましょう。

namespaceを表示してみる

namespaceは以下の方法で表示できます。

% kubectl get ns

表示結果

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

構築時、namespaceはデフォルトで4つ用意されております。

  • default:Namespaceがないもの
  • kube-node-lease:クラスターのスケールに応じたハートビートを向上させる格納に関連したLeaseオブジェクトのためのもの
  • kube-system:kubernetesシステムによって作成されたもの
  • kube-public:自動的に作成されたもの、クラスター全体で表示・読み取り可能にするために使用される用途で予約されている

日本語的によくわからないものもありますが、default以外はkubernetesのクラスターを構築する上で必要なnamespaceと思っていていください。

namespaceを作成してみる

namespaceの作成方法は、以下2つの方法があります。

  • コマンドで作成する方法
  • ファイルから作成する方法

どちらも手間ではないのでどちらもで良いですが、構成を管理しておきたかったり、組織でクラスターを利用している場合は、ファイルで管理し、ファイルから作成することをおすすめします。

それでは、2つの方法について説明していきます。

ここでは、「my-namespace」というnamespaceを作成するというつもりで進めていきます。

コマンドで作成する

コマンドで作成する場合は以下のコマンドを実行します。

% kubectl create namespace my-namespace

これだけで作成されます。

ファイルから作成する

ファイルから作成する場合は、まず以下のようなファイルを作成します。

apiVersion: v1
kind: Namespace
metadata:
  name: my-namespace 

その後、以下のコマンドよりファイルを渡してnamespaceを作成します。

% kubectl create -f ./my-namespace.yaml

実行結果

namespace/my-namespace created

という感じで作成できます。

namespaceを削除してみる

最後は、作成したnamespaceを削除してみましょう。

ここで1つ注意ですが、namespaceを削除すると「namespace以下にあった全てのリソースが削除」されますので確認しながら削除してください。

削除コマンド

% kubectl delete namespaces my-namespace

以上

コメント

タイトルとURLをコピーしました