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
以上
コメント