쿠버네티스에서 Labels 와 Selectors 는 리소스를 효과적으로 그룹화하고 필요한 리소스를 선택하기 위한 도구로 사용됩니다.
Labels
1) 역할
- 레이블은 쿠버네티스 리소스에 부가적인 메타데이터를 추가합니다.
- 리소스를 특정 속성, 환경, 역할 등으로 식별하고 분류하는 데 활용합니다.
2) 구조 및 예시
- 레이블은 key-value 쌍으로 이루어져 있습니다.
- Pod, Replicaset 등의 리소스에 레이블을 부여할 수 있습니다.
- ex) app: frontend
apiVersion: v1
kind: Pod
metadata:
name: simple-webapp
**labels:
app: App1
function: Front-end**
spec:
containers:
- name: simple-webapp
image: simple-webapp
ports:
- containerPort: 8080
replicaset-definition.yaml
Selectors
1) 역할
- selector는 리소스가 관리하는 pod집합을 선택하기 위한 조건을 지정합니다.
- 셀렉터를 사용하면 특정 기준을 충족하는 리소스를 필터링할 수 있습니다.
2) 예시
- kubectl get pods --selector app=frontend와 같이 특정 라벨 값을 가진 Pod를 선택할 수 있습니다.
- Selector를 사용하여 특정 그룹의 리소스를 쿼리하거나 제한할 수 있습니다.
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: simple-webapp
**labels:
app: App1
function: Front-end**
spec:
replicas: 3
**selector:
matchLabels:
app: App1**
template:
metadata:
**labels:
app: App1
function: Front-end**
spec:
containers:
- name: simple-webapp
image: simple-webapp
- spec.template.metadata.labels 는 pod의 labels
- replicaset으로 만들어지는 pod는 spec.template.metadata.labels에 기술된 데로 만들어집니다.
- metadata.labels 는 replicaset의 labels
- replicaset 자체의 라벨은 replicaset 자체를 구별하고 식별하는 데 사용이 됩니다. 따라서 replicaset이 관리하는 pod의 라벨과 같을 필요 없습니다.
Annotations
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
- annotations 은 쿠버네티스 리소스의 메타데이터 섹션에 추가정보를 포함하는 데 사용되는 필드입니다.
- labels 와 비슷하지만 더 다양한 메타데이터를 제공합니다.
- labels 와 달리 리소스의 상태나 특성을 식별하는 데 주로 사용되지 않습니다.
env: dev labels를 가진 pod 찾는 명령어
kubectl get pods --selector env=dev
env: dev label 을 가진 pod가 몇 개인지 출력하는 명령어
kubectl get pods --selector env=dev | wc -l
위 명령어는 get 명령어 사용 시 출력되는 header 부분도 포함하므로
kubectl get pods --selector env=dev --no-headers | wc -l
no headers 포함하기.
env: prod, bu: finance, tier: frontend인 pod 찾는 명령어
kubectl get pods --selector env=prod,bu=finance,tier=frontend
'K8S > Scheduling' 카테고리의 다른 글
Daemon Sets (0) | 2024.01.19 |
---|---|
[Scheduling] Resource Requirements and Limits (0) | 2024.01.19 |
Node Selectors & Node Affinity⭐⭐⭐ (0) | 2024.01.19 |
Taints and Tolerations⭐⭐⭐ (0) | 2024.01.18 |
[Scheduling] Pod Scheduling Process, nodeName (0) | 2024.01.18 |