👨‍💻

Kubernetes namepace.label and selectorについて

2022/02/06に公開

namespaceとlabel and selectorについて

  • namespace
    • クラスター内でリソースを分ける機能がある。
      • ユースケースとしては、1つのkubernetesクラスター内で複数のprojectを扱う場合、namespaceを分けることで、どのpodがどのprojectで使用されてるか可視化することが可能。

  • manifestでは下記のように作成し、Pod作成時に指定したいnamespaceを記載する。
    何も指定しない場合は、defaultのnamespaceがアタッチされる。
apiVersion: v1
kind: Namespace
metadata:
  name: zenn
---
apiVersion: v1
kind: Pod
metadata:
  name: zenn
  namespace: zenn
  labels:
      env: dev
spec:
  containers:
    - name: nginx-container
      image: nginx


  • label and selector
    • labelはリソースを分別するための情報
    • selectorはl4ロードバランサーで負荷分散する対象を設定する
      - 下記manifestを作成した場合、env:devとprodのlabelがついたpodを作成後、serviceのselectorでenv: devを指定してるので、zenn1.3のpodを対象にserviceは負荷分散する。
#containerの情報は割愛
apiVersion: v1
kind: Pod
metadata:
  name: zenn1
  labels:
      env: dev
---
apiVersion: v1
kind: Pod
metadata:
  name: zenn2
  labels:
      env: prod
---
apiVersion: v1
kind: Pod
metadata:
  name: zenn3
  labels:
      env: dev
---
#service
#specの中でtypeと同じインデントで
spec:
    type: NodePort
    selector:
        env: dev

Discussion