본문 바로가기

⭐ Kubernetes & EKS/레이블 & 셀렉터 (Lable & Selector)

쿠버네티스 - 레이블과 셀렉터

# 레이블과 셀렉터

- 레이블이란 : 모든 리소스를 구성하는 매우 간단하면서도 강력한 쿠버네티스 기능, 마치 바코드 같은 역할을 함

- 쿠버네티스 인 액션 이라는 책에 잘 설명되어 있음

- 레이블로 유연한 테스트 환경 제공

- 키:밸류 기반의 형식으로 되어 있음

# 레이블 실습

# 모든 서비스 삭제

kubectl delete all --all

# 레이블 추가

gedit http-go-pod-v2.yaml

쿠버네티스 사이트 문서검색 > pod overview > kind 검색

apiVersion: v1
kind: Pod
metadata:
  name: http-go
  labels:
    creation_method: manual
    env: prod
spec:
  containers:
  - name: http-go
    image: gasbugs/http-go
    ports:
    - containerPort: 8080
      protocol: TCP

# 실행하기

kubectl create -f http-go-pod-v2.yaml

kubectl get pod

# 레이블이 정상적으로 생성되었는지 확인

kubectl get pod --show-labels

# 파일복사

cp http-go-pod-v2.yaml http-go-pod-v3.yaml

gedit http-go-pod-v3.yaml
apiVersion: v1
kind: Pod
metadata:
name: http-go-v3
labels:
creation_method: manual-v3
spec:
containers:
- name: http-go
image: gasbugs/http-go
ports:
    - containerPort: 8080
    protocol: TCP
cp http-go-pod-v2.yaml http-go-pod-v3.yaml

kubectl get pod --show-labels

# 원하는 라벨의 내용만 추출하여 보기

kubectl get pod -L env

kubectl get pod -L creation_method

# 레이블 추가

kubectl label pod http-go test=foo

kubectl get pod --show-labels

# 레이블 변경

kubectl label pod http-go test=foo1 --overwrite

kubectl get pod --show-labels

# 레이블 삭제

kubectl label pod http-go test-

kubectl get pod --show-labels

# 레이블 필터링

kubectl get pod

kubectl get pod --show-labels

- env가 있는놈만 출력

kubectl get pod -l env

- env가 없는놈만 출력

kubectl get pod -l '!env'

- env가 test 있는놈만 출력

kubectl get pod -l 'env=test'

kubectl get pod -l 'env=prod'

kubectl get pod -l 'env=prod,creation_method=manual'