Kubernetes/KoudKloud - CKAD with Tests

Selector로 Label 별 필터링

비번변경 2021. 12. 5. 20:41

Label은 항목에 붙인 속성과 같고, Selector로는 그 항목을 필터링할 수 있다. 이 글에서는 Label이 설정된 자원을 Selector로 필터링하는 방법을 정리한다.

 

selector로 필터링한 포드 목록 확인

get pods 명령에 --selector 옵션을 주어 필터링한다.

kubectl get pods --selector KEY=VALUE
kubectl get pods --selector=KEY=VALUE

# 예시
kubectl get pods --selector env=dev
kubectl get pods --selector=env=dev

selector로 필터링한 포드 목록 확인

 

selector로 필터링한 replicaset 목록 확인

get replicaset 명령에 --selector 옵션을 주어 필터링한다.

kubectl get replicaset --selector KEY=VALUE
kubectl get replicaset --selector=KEY=VALUE

# 예시
kubectl get replicaset --selector env=prod
kubectl get replicaset --selector=env=prod

selector로 필터링한 replicaset 목록 확인

 

selector로 필터링한 모든 자원 확인

get all 명령에 --selector 옵션을 주어 필터링한다. 정말 모든 자원이 표시되지는 않는다.

kubectl get all --selector KEY=VALUE
kubectl get all --selector=KEY=VALUE

# 예시
kubectl get all --selector env=prod
kubectl get all --selector=env=prod

selector로 필터링한 모든 자원 확인

 

2개 이상의 selector로 필터링한 포드 목록 확인

--selector 옵션을 여러 번 지정하면 여러 개의 Label로 자원을 필터링할 수 있다.

kubectl get pod [--selector KEY1=VALUE1 --selector KEY2=VALUE2 | ...] 

# 예시
kubectl get pod --selector env=prod --selector bu=finance --selector tier=frontend

2개 이상의 selector로 필터링한 포드 목록 확인

 

 

+ Label/Selector 다른 역할

Label과 Selector를 이용하면 다른 개체를 연결할 수 있다.

Pod와 Replicaset이 연결되도록 Replicaset의 Selector와 Pod Label이 동일하도록 구성하면 된다. 모든 Label이 동일할 필요는 없고, 하나의 Label만 같으면 된다. 

apiVersion: apps/v1
kind: ReplicaSet
metadata:
   name: replicaset-1
spec:
   replicas: 2
   selector: # Replicatset Selector : 포드 그룹화
      matchLabels:
        tier: frontend
   template:
     metadata:
       labels: # Pod Label
        tier: frontend
     spec:
       containers:
       - name: nginx
         image: nginx