LoginSignup
41
31

More than 5 years have passed since last update.

【第二弾】Kubernetesベストプラクティス:namespace

Last updated at Posted at 2018-06-23

ベストプラクティス第二弾です

こんにちは、jackです。

Kubernetesベストプラクティスの第二弾です。前回の第一弾に引き続き、こちらのGoogle公式ブログから大事なことをざっくりまとめていきます。

Kubernetes best practices: Organizing with Namespaces

TL;DR

  • namespace(名前空間)を有効活用せよ
  • namespaceを使うことで開発スピードがあがる
  • デフォルトのnamespaceは3つ
    • default
    • kube-system
    • kube-public
  • kubenskubectxを駆使せよ

もう少し詳しく

namespace作成方法

namespaceを作るのはkubectlコマンド一発でできます。

❯ kubectl create namespace test

YAMLを使ってapplyすることでも可能です。

test.yml
kind: Namespace
apiVersion: v1
metadata:
  name: test
  labels:
    name: test
❯ kubectl apply -f test.yml

namespacesの取得

❯ kubectl get namespace
NAME                          STATUS    AGE
default                       Active    1y
kube-public                   Active    1y
kube-system                   Active    1y
test                          Active    1m

このようにdefaultkube-publickube-systemと先ほど作成したtest namespaceが確認できます。

namespace上にリソースを作成する方法

pod.yml
apiVersion: v1
kind: Pod
metadata:
  name: mypod
  labels:
    name: mypod
spec:
  containers:
  - name: mypod
    image: nginx

例えばこんなpod.ymlがあったとします。
YAMLファイルに特にnamespaceの記載がない場合は下のようにnamespaceを指定してあげます。

❯ kubectl apply -f pod.yml --namespace=test

ただこれだと、declarative(宣言)的なやり方ではないので別の方法もあります。

先程のYAMLファイルのmetadata部分にnamespaceを追加することで、特定のnamespaceに立ち上げることができます。
(また、この方法用いると--namespaceオプションを渡せなくなります。)

pod.yml
apiVersion: v1
kind: Pod
metadata:
  name: mypod
  namespace: test
  labels:
    name: mypod
spec:
  containers:
  - name: mypod
    image: nginx

namespace上のリソースの確認する方法

kubectl get podsアクティブなnamespace上のリソースのみにしか問い合わせてくれません。

他のnamespace上のリソースを確認するにはアクティブなnamespaceを変更するか、--namespaceオプションを渡して上げる必要があります。

❯ kubectl config set-context $(kubectl config current-context) --namespace=test

もしくは

❯ kubectl get pods --namespace=test

毎度このようにnamespaceを移動するのが大変なことが想定されますよね。そこでkubensの出番です。

Kubensでnamespaceの切り替え

https://github.com/ahmetb/kubectxというOSSを使います。
使い方はいたって簡単!

# namespacesの取得
❯ kubens
default
kube-public
kube-system
test

# namespaceの切り替え
❯ kubens test
Context "minikube" modified.
Active namespace is "test".

これでnamespaceの切り替えがものすごく楽になりました。

まとめ

いかがでしたか?
とにかくkubenskubectxがものすごく便利なのが伝わったかと思います。

毎回のことですが、公式ブログではこのまとめでは省いている情報が乗っていますのでそちらもどうぞ。

Kubernetes best practices: Organizing with Namespaces

それでは、また次回。

41
31
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
41
31