- 레이블이란 ← 오늘 볼 내용
- 워커 노드에 레이블 설정
- 레이블과 애너테이션
- 레이블을 이용한 카나리 배포
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/
Labels and Selectors
Labels are key/value pairs that are attached to objects such as Pods. Labels are intended to be used to specify identifying attributes of objects that are meaningful and relevant to users, but do not directly imply semantics to the core system. Labels can
kubernetes.io
아래 영상을 참고했습니다.
https://youtube.com/playlist?list=PLApuRlvrZKohaBHvXAOhUD-RxD0uQ3z0c&si=hbPclcPuc-6lTNdE
[따배쿠] 쿠버네티스 시리즈
www.youtube.com
'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 |