본문 바로가기

ETC

[kubernetes] kubectl label selector에 여러개 라벨 조건 주기 (and 또는 or 조건)

반응형

 

kubectl에서 label selector를 사용하면 원하는 리소스 정보를 쉽게 불러올 수 있다. 

보통 아래와 같은 방식으로 사용한다. 

# label app이 vicent인 파드 가져오기
kubectl get pod -l app=vicent

# label app이 vicent인 deploy 가져오기
kubectl get deploy -l app=vicent

 

그렇다면 하나의 라벨 조건을 더 줘서 데이터를 가져오고 싶을때는 어떻게 해야할까?

예를들어 app이 vicent인데 component가 db인 pod 를 가져오고 싶다면? 

kubectl에서는 쉼표 ,를 통해 조건을 추가하면 and 조건으로 인식한다.

 

# label app이 vicent이고 component는 db인 파드 가져오기
kubectl get pod -l app=vicent,component=db

# label app이 vicent인 component는 db인 deploy 가져오기
kubectl get deploy -l app=vicent,component=db

 

그렇다면 app이 vicent 인 애들과 component가 web인 애들은 어떻게 가져올까? 

즉 app=vicent or compoenet=web 인 애들은 어떻게 가져올 수 있을까?

방법을 찾아봤지만 kubectl에서는 여러개의 라벨 셀렉터에 대한 or 연산을 제공하지 않는다. 

대신 아래와 같은 야매를 통해서 가져올 수는 있다.

 

# label app이 vicent이거나 component는 web인 파드 가져오기
kubectl get pod -l app=vicent && kubectl get pod -l component=web --no-headers

# label app이 vicent이거나 component는 web인 deploy 가져오기
kubectl get deploy -l app=vicent && kubectl get deploy -l component=web --no-headers

 

kubectl 명령어를 두번 날리면서 두번쨰 명령어에 --no-headers 옵션을 주면 마치 하나의 결과값 처럼 오는 효과를 줄 수 있다. 다만 app이 vicent이면서 component가 web인 애들이 있으므로 중복된 결과값을 받을 수는 있다.

 

 

반응형