728x90
Label
- 용도: 리소스를 그룹화하거나 특정 리소스를 쉽게 식별하는 데 사용.
- 구조:
- 키: 영문 소문자와 숫자 사용 가능, 최대 63자.
- 값: 영문 소문자와 숫자, 대시(-), 밑줄(_) 사용 가능.
metadata:
labels:
app: my-app
environment: production
version: v1
kubectl get pods -l app=my-app
Selector
- 용도: 특정 Label을 가진 리소스만 선택해 동작을 제한하고 제어.
- 종류:
- Equality-based: = 또는 != 연산자 사용. (ex. app=my-app)
- Set-based: in, notin, exists 등을 이용해 조건에 맞는 리소스를 선택할 수 있다.
selector:
matchLabels:
app: my-app
kubectl get pods --selector="environment=production,app=my-app"
Annotation
- 용도: 리소스의 설명이나 추적 정보를 추가하거나, 외부 시스템이 참고할 수 있는 정보를 저장한다.
- 구조: 키와 값으로 이루어진 구조, Label과 같은 제한은 없어서 길이나 형태에 자유롭다.
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: simple-webapp
labels:
app: App1
function: Front-end
annotations:
buildversion: 1.34
spec:
replicas: 3
selector:
matchLabels:
app: App1
template:
metadata:
labels:
app: App1
function: Front-end
spec:
containers:
name: simple-webapp
image: simple-webapp
참고
## label 조회
kubectl get pod --selector env=dev
kubectl get pod -l='env=dev'
## label 여러개
kubectl get pod --selector env=dev,bu=finance,tier=frontend
## label 해당하는 개수 출력
kubectl get all --selector env-dev --no-headers |wc -l
## label 키, 키-값 조회
kubectl get pod -L tier -L env -L bu -l='env=dev'
## 치환
kubectl replace --force -f nginx.yaml
정리하면,
기능 | Label | Selector | Annotation |
목적 | 리소스 분류 및 필터링 | 특정 Label을 기준으로 리소스 선택 | 메타데이터로 추가 정보 저장 |
사용처 | 필터링, 쿼리, 그룹화 | Label을 기준으로 리소스 선택 | 설명, 버전 정보, 외부 시스템 통합 |
필터링 | 가능 | Label을 사용해 필터링 | 불가능 |
형식 | 키-값 쌍 (제약 있음) | Label에 따라 제약 | 키-값 쌍 (제약 거의 없음) |
728x90
반응형
'데브옵스 > Orchestration' 카테고리의 다른 글
[Kubernetes] 16. Node Selector, Node Affinity (0) | 2024.11.06 |
---|---|
[Kubernetes] 15. Taints, Tolerations (0) | 2024.11.06 |
[Kubernetes] 13. Scheduling (0) | 2024.11.06 |
[Kubernetes] 12. Imperative(명령형) 실습 (0) | 2024.11.06 |
[Kubernetes] 11. Imperative(명령적) vs Declarative(선언적) + 필수암기 (1) | 2024.11.05 |