본문 바로가기
K8S/Scheduling

Labels & Selectors

by HH_g 2024. 1. 18.

쿠버네티스에서 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