1. Label이란?
- kubernetes cluster의 모든 object(파드 포함)에 키/값 쌍으로 리소스를 식별하고 속성을 지정하는 데 사용
- 카테고리라고 생각해라
- 오브젝트에 적절한 레이블을 부여하여 성격을 정의하고 검색을 용이하게 할 수 있다.
- label의 예:
- release : stable / canary / A / B
- environment : dev / qa / production
- tier : frontend / backend / cache / database
- partition : customerA / customerB
- track : daily / weekly
- app : webapp / middleware
- label 구문
- 키는 "접두사(옵션)/이름" 형식
- 영문자, 숫자, 대시(-), 언더스코어(_), 점(.)이 올 수 있다.
- 최대 63자
- replicationcontroller(rc) -> 복제본의 수를 지정해야한다. (2~3)
- 같은 label이 있는 pod를 찾아서 연결
- 기능을 구분하지 않는다.
- label을 구분한다.
2. label을 사용한 pod 정의
# mynapp-pod-label.yml
apiVersion: v1
kind: Pod
metadata:
name: mynapp-pod-label
labels:
env: dev
tier: frontend
spec:
containers:
- image: httpd
name: mynapp
ports:
- containerPort: 80
protocol: TCP
3. pod 생성
kubectl create -f mynapp-pod-label.yml
4. pod label 확인
kubectl get pods --show-labels
kubectl get pods -L env,tier // -L 옵션을 사용하여 특정 레이블을 지정하여 필드로 표시할 수 있다.
kubectl get pods mynapp-pod-label -o yaml // -o yaml 옵션에서도 레이블이 있다면 확인 가능.
kubectl describe pods mynapp-pod-label
5. pod label 수정
- 전에 생성한 label이 없는 mynapp-pod 파드에 env 레이블을 추가해보자
kubectl label pods mynapp-pod env=dev
- mynapp-pod-label 파드에 env 레이블을 수정해보자
kubectl label pods mynapp-pod-label env=debug
- error : 'env' already has a value (dev), and --overwrite is false
- dev 값을 이미 가지고 있어 오류가 발생
- 이미 레이블이 존재하는 경우 --overwrite 옵션 사용.
kubectl label pods mynapp-pod-label env=debug --overwrite
6. label selector
- label selector는 object에 부여되어 있는 레이블을 식별하고 검색할 수 있다.
- 특정 키가 있는/없는 레이블 포함
- 특정 키와 값이 있는/없는 레이블 포함
- 레이블 셀렉터를 이용해 검색하는 방법은 두 가지를 제공
- 균등 기반 레이블
- =
- ==
- !=
- 집합성 기반 레이블
- in
- notin
- 균등 기반 레이블
7. 균등 기반 레이블 셀렉터
- tier 키가 포함되어 있는 레이블
kubectl get pods --show-labels -l tier
- tier 키를 제외한 레이블
kubectl get pods --show-labels -l '!tier' // 특수문용(!)가 들어있어서 '' 사용
- env 키에 debug 값이 포함되어 있는 레이블
kubectl get pods --show-labels -l env=debug
- env 키를 가지지만 debug 값이 포함되지 않은 레이블
kubectl get pods --show-labels -l 'env!=debug'
8. 집합성 기반 레이블 셀렉터
- dev 키에 debug 또는 dev 값이 포함되어 있는 레이블
kubectl get pods --show-labels -l 'env in (debug,dev)'
- tier 키를 가지지만 frontend 값이 포함되어 있지 않은 레이블
kubectl get pods --show-labels -l 'tier notin (frontend)'
'Containers > Kubernetes' 카테고리의 다른 글
4.1. Liveness Probe (0) | 2020.07.24 |
---|---|
3.4. namespace (0) | 2020.07.24 |
Pod (0) | 2020.07.23 |
명령형 명령어 (0) | 2020.07.23 |
Object 관리 (0) | 2020.07.22 |
댓글