레이블이란?
레이블이란 클러스터 내의 오브젝트(예: Pod, Node, Service 등)를 식별하고 그룹화하는 데 사용되는 key-value 쌍이다.
레이블은 오브젝트에 첨부되어 여러 목적을 위해 활용될 수 있다. 예를 들어, 레이블을 사용하여 특정 오브젝트를 선택하거나 필터링할 수 있으며, 오토스케일링, 롤링 업데이트, 서비스 디스커버리 등의 기능을 구현하는 데 유용하다.
- Node를 포함하여 pod, deployment 등 모든 리소스에 할당가능
- 리소스의 특성을 분류하고, Selector를 이용해서 선택할 수 있다.
yaml 예시
apiVersion: v1
kind: Pod
metadata:
name: mypod
labels:
app: myapp
environment: production
spec:
containers:
- name: mycontainer
image: nginx
---
apiVersion: v1
kind: Service
metadata:
name: myservice
spec:
selector:
app: myapp
ports:
- protocol: TCP
port: 80
targetPort: 9376
Command 명령어
# label 정보도 같이 출력
$ kubectl get pods --show-labels
# label 명이 같은 pod를 출력
$ kubectl get pods -l name=<label명>
# 위의 -l 옵션과 동일
$ kubectl get pods --selector name=<>
# yaml로 label을 추가하는 것이 아닌 command로 추가하는 방법
$ kubectl label pod <pod명> name=test1
# 이미 존재하는 label 위에 덮어쓰는 옵션 --overwrite
$ kubectl label pod <pod명> name=test2 --overwrite
# 레이블 삭제
$ kubectl label pod <pod명> <label명>- # name- 이런식으로 레이블명뒤에 대시(-)를 넣어주면 됨
셀렉터란?
쿠버네티스에서 셀렉터는 특정 레이블을 가진 오브젝트를 선택하고 필터링하는 데 사용된다.
셀렉터의 종류
쿠버네티스 셀렉터는 크게 두 가지 유형으로 나눌 수 있다.
- 레이블 셀렉터 (Label Selector)
- 필드 셀렉터 (Field Selector)
레이블 셀렉터
레이블 셀렉터는 레이블 키와 값을 기반으로 오브젝트를 선택합니다. 레이블 셀렉터는 다시 두 가지 방식으로 구분된다.
- 동등 셀렉터 (Equality-based Selector): 레이블의 키-값 쌍이 정확히 일치하는 오브젝트를 선택합니다.
- 집합 셀렉터 (Set-based Selector): 레이블의 키가 특정 값 집합에 포함되거나 포함되지 않는 오브젝트를 선택합니다.
동등 셀렉터는 단순히 key=value 형식으로 특정 레이블을 가진 오브젝트를 선택한다.
selector:
matchLabels:
app: nginx
environment: production
# app=nginx와 environment=production 레이블을 가진 오브젝트를 선택한다.
집합 셀렉터는 ‘In’, ‘NotIn’, ‘Exists’, ‘DoesNotExist’ 연산자를 사용하여 레이블의 값을 조건으로 필터링한다.
selector:
matchExpressions:
- key: app
operator: In
values:
- frontend
- backend
- key: tier
operator: NotIn
values:
- cache
- key: release
operator: Exists
# 1. app 레이블의 값이 frontend 또는 backend인 오브젝트
# 2. tier 레이블의 값이 cache가 아닌 오브젝트
# 3. release 레이블이 존재하는 오브젝트
필드 셀렉터는 리소스의 필드를 기반으로 오브젝트를 선택한다.
주로 오브젝트의 상태나 메타데이터 필드를 기준으로 필터링하고, 주로 kubectl 명령어와 함께 사용되어 특정 조건을 만족하는 리소스를 조회할 때 유용하다.
# status.phase 필드가 Running인 Pod만 조회
kubectl get pods --field-selector=status.phase=Running
'쿠버네티스' 카테고리의 다른 글
쿠버네티스(4) - 인그레스 (1) | 2024.07.15 |
---|---|
쿠버네티스(3) - 서비스 (0) | 2024.07.08 |
쿠버네티스(2) - 컨트롤러 (0) | 2024.07.08 |
쿠버네티스(1) - 파드 (1) | 2024.07.05 |
댓글