지니데비 기록 자세히보기

데브옵스/Orchestration

[Kubernetes] 14. Label, Selector, Annotation

지니데비 2024. 11. 6. 13:48
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
반응형