- 레이블이란 ← 오늘 볼 내용
- 워커 노드에 레이블 설정
- 레이블과 애너테이션
- 레이블을 이용한 카나리 배포
1. 레이블(Label)이란
- Node를 포함하여 pod, deployment 등 모든 리소스에 할당
- 리소스의 특성을 분류하고, Selector를 이용해서 선택
- Key-value 한쌍으로 적용
Pod tamplate | Pod + Label tamplate |
apiVersion: v1 kind: Pod metadata: name: appjs-pod spec: containers: - name: appjs-container image: smlinux/appjs ports: - containerPort: 8080 |
apiVersion: v1 kind: Pod metadata: name: appjs-pod labels: app: web version: "1.15" spec: containers: - name: appjs-container image: smlinux/appjs ports: - containerPort: 8080 |
레이블은 기본적으로 " "로 묶어서 정의해야 하지만 단순 문자열의 경우 생략해도 무방하다(TRUE, FALSE, YES, NO 제외)
Label 과 Selector
Label
metadata:
labels:
rel: stable
name: mainui
Selector
selector:
matchLabels:
key: value
matchExpressions:
- {key: name, operator: In, values: [mainui]}
- {key: rel, operator: NotIn, values: ["beta","canary"]}
실습
파드 생성
세 개의 파드를 생성하여 각각의 레이블을 확인해보자.
두 개는 yaml로 생성할 것이고 하나는 터미널에 직접 입력하여 생성할 것이다.
# label-test.yaml
---
apiVersion: v1
kind: Pod
metadata:
name: pod-demo
spec:
containers:
- name: nginx
image: nginx:1.25
ports:
- containerPort: 80
---
apiVersion: v1
kind: Pod
metadata:
name: label-pod-demo
labels:
name: mainui
rel: stable
spec:
containers:
- name: nginx
image: nginx:1.25
ports:
- containerPort: 80
위 파일을 생성한 후에 아래 명령으로 파드를 생성한다.
# 터미널에서 직접 실행
kubectl run cmdpod --image=nginx:1.25 --port=80
# yaml파일로 실행
kubectl create -f label-test.yaml
파드의 레이블 확인
생성된 파드의 레이블을 확인한다.
# label 확인
kubectl get pods --show-labels
# name-mainui의 레이블을 가진 파드만 출력 (selector)
kubectl get pods -l name=mainui
# 위와 동일한 명령
kubectl get pods --selector name=mainui
위 명령을 응용하면 특정 레이블을 가진 파드만 찾아서 삭제하거나 다른 작업을 할 수도 있게 된다.
실행 중인 파드에 레이블 부여
이미 실행 중인 파드에게 레이블을 붙여줄 수도 있다.
# 실행 중인 pod-demo 파드에게 레이블 붙여주기
kubectl label pod pod-demo name=test
만약 기존의 파드의 레이블 중 name=test를 name=login으로 변경하고 싶을 때는 반드시 덮어쓰기를 해줘야한다.
동일한 키로 여러 개의 값을 가질 수 없다.
# 레이블 덮어쓰기
kubectl label pod pod-demo name=login --overwrite
여러 개의 레이블을 한번에 할당하고 싶으면 사이에 공백을 두고 여러 개 지정할 수 있다.
하지만 그 중에 하나라도 중복된 레이블 있으면 --overwrite를 붙여서 작성해야한다.
kubectl label pod cmdpod name=order rel=beta
레이블 삭제
기존에 할당된 레이블을 삭제할 수도 있다.
레이블의 키를 쓰고 뒤에 '-' 문자를 입력하면 삭제된다.
# 레이블 삭제
kubectl label pod cmdpod run-
레이블 응용
# 특정 파드만 삭제
kubectl delete pods --selector name=login
자세한 내용은 아래 공식 문서를 참조
https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
아래 영상을 참고했습니다.
https://youtube.com/playlist?list=PLApuRlvrZKohaBHvXAOhUD-RxD0uQ3z0c&si=hbPclcPuc-6lTNdE
'Kubernetes' 카테고리의 다른 글
Kubernetes 기초 - Label(3) (0) | 2023.12.22 |
---|---|
Kubernetes 기초 - Label(2) (0) | 2023.12.21 |
Kubernetes 기초 - Ingress(1) (0) | 2023.12.20 |
Kubernetes 기초 - Service(3) (0) | 2023.12.19 |
Kubernetes 기초 - Service(2) (0) | 2023.12.19 |