Sangmun

kubernetes label and selector 본문

개발/kubernetes

kubernetes label and selector

상상2 2023. 2. 15. 21:52

쿠버네티스의 Label은 쿠버네티스의 리소스를 논리적인 그룹으로 나누기 위해 붙이는 레이블링이다.

selector는 Label을 이용하여 조회하려는 리소스만 조회할 수 있게 하는 기능이다.

 

 

출처 : https://k21academy.com/docker-kubernetes/labels-and-annotations-in-kubernetes/

yaml 파일 안에서 Label은 아래와 같이 metadata아래에서 선언을 하며 해당 이미지에는 app=backend, version=v1, env=prod라는 라벨링을 생성하였다.

apiVersion: v1 
kind: Pod 
metadata: 
  name: my-pod 
  labels:
    app: backend 
    version: v1
    env: prod
spec:
  containers:
  - image: my-pod
    name: my-pod

또한 yaml에서 선언하지 않아도 kubectl 명령어로도 label을 생성하거나 삭제가 가능하다.

 

kubectl을 이용한 pod에 label 생성 및 삭제 명령어

 

* kubectl을 이용하여 pod의 라벨을 조회하는 명령어

# kubectl get pod <pod_name> --show-labels
$ kubectl get pod my-pod --show-labels
NAME READY STATUS LABELS
my-pod 1/1 Running <none>

 

* 라벨이 없던 이미지에 app:backend라는 key value로 라벨을 생성한 후의 겨로가

$ kubectl label pod my-pod app=backend 
$ kubectl get pod my-pod --show-labels
NAME READY STATUS LABELS
my-pod 1/1 Running app=backend

* 라벨을 오버라이딩하는 명령어

$kubectl label pod <pod_name> <key>=<value> --overwrite

* 원하는 라벨만 조회하는 명령어

$kubectl get pod <pod_name> --label-columns <key1,key2...>
or
$kubectl get pod <pod_name> -L <key1,key2>

* 라벨을 삭제하는 명령어

$kubectl label pod <pod_name> <key1,key2...>-
# ex)kubectl label pod/my-pod app-

 

kubectl get 명령어와 함께 Selector를 사용하는 방법

$kubectl get <object> --selector <label query1, ... label query N>
$kubectl get <object> -l <label query1, ... label query N>
# label query: key=value

 

* pod에서 env가 prod인가 아닌가로 쿼리 (Equality-Based Selector)

# env가 prod인 경우
$kubectl get pod --selector env=prod

# env가 prod가 아닌 경우
$kubectl get pod --selector env!=prod

* 값이 어떤 집합에 속해 있는지 아닌지로 조회 (Set-Based Selector)

# env가 dev,stage,prod일 경우 조회
$kubectl get pod --selector ‘env in (dev,stage,prod)’
# env가 dev,stage,prod가 아닐 경우 조회
$kubectl get pod --selector ‘env notin (dev,stage,prod)’

 

출처 : 패스트캠퍼스

'개발 > kubernetes' 카테고리의 다른 글

kubernetes pod  (0) 2023.02.15
쿠버네티스 오브젝트  (0) 2023.02.15
Comments