Post

Kubernetes - Label & Seletetor

Kubernetes 기초

Kubernetes - Label & Seletetor

레이블 Lable

레이블이란?

  • 모든 리소스를 구성하는 매우 간단하면서도 강력한 쿠버네티스 기능
  • 리소스에 첨부하는 임의의 키/값 쌍 (app: test)
  • 레이블 셀렉터를 사용하면 각종 리소스를 필터링하여 선택할 수 있음
  • 리소스는 한개 이상의 레이블을 가질수 있음
  • 리소스를 만드는 시점에 레이블을 첨부
  • 기존 리소스에도 레이블의 값 수정, 추가 가능
  • 모든 사람이 쉽게 이해할 수 있는 체계적인 시스템을 구축 가능

    레이블을 이용한 포드 구성 ( 가로 app / 세로 rel )

Image

레이블 생성 방법

1
kubectl label pod 파드명 test=pod

신규 레이블 추가

1
kubectl label pod 파드명 test=pod --overwrite

기존 레이블 수정

레이블 필터링하여 검색

1
2
3
4
5
6
7
8
9
kubectl get pod --show-labels   #labels 컬럼 생성
kubectl get pod -L app,rel      #app, rel key값을 컬럼으로 정렬

# 셀렉터를 통해 라벨을 식별하고 조회한다
kubectl get pod --show-labels -l 'env'  # 필터링
kubectl get pod --show-labels -l '!env' # not 필터링
kubectl get pod --show-labels -l 'env!=test' # key/value 비교
kubectl get pod --show-labels -l 'env!=test,rel=beta' # and연산
kubectl get pod --show-labels -l 'env in (test)' # key/value 비교

확장 가능한 쿠버네티스 레이블 예제 - 네이밍

Image

셀렉터 공식 문서 (일치성 기준 요건)

레이블과 셀렉터 연습문제

  • YAML 파일을 사용하여 app=nginx 레이블을 가진 포드를 생성하라.
  • app=nginx를 가진 포드를 get하라
  • get된 포드의 레이블의 app을 확인하라
  • app=nginx레이블을 가진 포드에 team=dev1레이블을 추가하라

    YAML 파일을 사용하여 app=nginx 레이블을 가진 포드를 생성하라.

1
2
3
4
5
6
7
8
9
10
11
12
13
apiVersion: v1
kind: Pod
metadata:
  name: practice-labels
  labels:
    app: nginx
spec:
  containers:
  - name: prac-nginx
    image: nginx
    ports:
    - containerPort: 8080
      protocol: TCP

app=nginx를 가진 포드를 get하라

1
kubectl get pod --show-labels -l 'app=nginx'

get된 포드의 레이블의 app을 확인하라

1
kubectl get pod -L app

app=nginx레이블을 가진 포드에 team=dev1레이블을 추가하라

1
2
kubectl label pod pod명 team=dev1 (만약 덮어쓰기면 --overwrite)
kubectl get pod -L app,team
This post is licensed under CC BY 4.0 by the author.