#はじめに
Kubernetesでは、Namespaceを使うと同一クラスタ内で Pod や Service, Deployment や StatefulSet などを仮想的なクラスタとしてグルーピングして取り扱うことができます。
チームごとや環境ごとにNamespaceを有効に使うことで、開発スピードを上げることができます。Googleの中にもKubernetesのベストプラクティスとしてまとまっているので、こちらは参考に読んでみると良いと思います。
Kubernetes best practices: Organizing with Namespaces
#Namespaceを作成する方法
Namespaceは下記のコマンド1つで作ることができます。
# sampleというNamespaceを作成する
$ kubectl create namespace sample
また、作成したyamlファイルをapplyして作成することも可能です。
kind: Namespace
apiVersion: v1
metadata:
name: sample
labels:
name: sample
# sample.yamlをapplyし、sampleというNamespaceを作成する
$ kubectl apply -f sample.yml
#作ったNamespaceを確認する方法
$ kubectl get namespace
NAME STATUS AGE
default Active 29d
kube-public Active 29d
kube-system Active 29d
sample Active 8m36s
default
、kube-system
、kube-public
の3つに加えて、sampleのNamespaceができていることが確認できます。
#作ったNamespace上のリソースを確認する方法
作成したNamespaceのPodsの一覧を確認できます。
$ kubectl get services --namespace=sample
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
details ClusterIP 10.11.253.46 <none> 9080/TCP 16d
作成したNamespaceのPodsの一覧を確認できます。
$ kubectl get pods --namespace=sample
NAME READY STATUS RESTARTS AGE
details-v1-bc557b7fc-cldx8 1/1 Running 0 16d
Namespaceを指定しないと、アクティブなnamespace上のリソースのみにしか問い合わせてくれません。
そのため、他のnamespace上のリソースを確認するには、上記のように--namespaceオプションを渡して上げるか、下記のコマンドでアクティブなnamespaceを変更する必要があります。
$ kubectl config set-context $(kubectl config current-context) --namespace=sample
#Namespaceを削除する方法
Namespaceは下記のコマンド1つで作ることができます。
# sampleというNamespaceを削除する
$ kubectl delete namespace sample
また、作成したyamlファイルを用いて削除することも可能です。
# sample.yamlで定義したsampleというNamespaceを削除する
$ kubectl delete -f sample.yml