Kubernetes · 2 min read · Dec 08, 2025
Kubernetes의 레이블과 셀렉터

레이블은 Pods, Service 등과 같은 Kubernetes 객체에 할당된 키-값 쌍입니다. 레이블은 Kubernetes 객체를 조직하고 선택하는 데 사용될 수 있습니다. 레이블은 객체 생성 시 첨부할 수 있으며 언제든지 수정할 수 있습니다. 우리는 Kubernetes 객체에 여러 개의 레이블을 추가할 수 있습니다.
셀렉터는 사용자가 객체 집합을 선택하는 데 사용됩니다. 레이블 셀렉터는 Kubernetes의 핵심 그룹화 기본 요소입니다. Kubernetes API는 두 가지 유형의 셀렉터를 지원합니다.
- 동등성 기반 셀렉터:
이는 키와 값으로 필터링을 허용하며, 일치하는 객체는 지정된 모든 레이블을 만족해야 합니다. - 집합 기반 셀렉터:
이는 값 집합에 따라 키를 필터링할 수 있게 해줍니다.
레이블과 셀렉터에 대해 더 알고 싶다면 여기 클릭하세요.
이 기사에서는 레이블이 있는 Pod를 생성하고 셀렉터를 사용하여 서비스에서 해당 Pod로 요청을 리디렉션합니다. 또한 명령줄에서 레이블/셀렉터를 사용하여 Pod와 Service에 대한 가져오기 및 삭제 작업을 수행합니다.
전제 조건
- 최소 1개의 워커 노드가 있는 Kubernetes 클러스터.
Kubernetes 클러스터를 만드는 방법을 배우고 싶다면 여기 클릭하세요. 이 가이드는 AWS Ubuntu 18.04 EC2 인스턴스에서 1개의 마스터와 2개의 노드를 가진 Kubernetes 클러스터를 만드는 데 도움이 될 것입니다.
우리가 할 일
- 레이블과 셀렉터가 있는 Pod 및 Service 생성
- 레이블 이해하기
레이블과 셀렉터가 있는 Pod 및 Service 생성
레이블이 있는 Pod를 생성하려면 새 파일을 만들고 다음 내용을 추가합니다.
vim my-lable-demo-pod.ymlapiVersion: v1
kind: Pod
metadata:
name: label-demo-pod
labels:
environment: test
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
셀렉터가 있는 서비스를 생성하려면 기본 네임스페이스를 사용하는 다음 서비스 정의로 파일을 만듭니다.
vim my-selector-demo-service.ymlapiVersion: v1
kind: Service
metadata:
name: selector-demo-service
namespace: default
labels:
environment: test
app: nginx
spec:
externalTrafficPolicy: Local
ports:
- name: http
port: 80
protocol: TCP
targetPort: 80
selector:
app: nginx
type: NodePort
Pod를 생성하려면 다음 명령을 실행합니다.
kubectl create -f my-lable-demo-pod.ymlkubectl get pods
서비스를 생성하려면 다음 명령을 실행합니다.
kubectl create -f my-selector-demo-service.ymlkubectl get service
이제 레이블 셀렉터가 작동하는지 확인하려면 NodeIP:NodePort에서 서비스를 액세스해 보세요.
여기서 내 노드의 IP는 106.210.138.189이고 서비스는 Port=30385에서 노출됩니다.
우리가 생성한 서비스를 사용하여 Nginx Pod에 액세스할 수 있으므로 레이블과 셀렉터가 작동했음을 의미합니다.
레이블 이해하기
이제 레이블을 사용하여 생성한 Pod와 Service에서 다양한 작업을 수행할 수 있습니다.
우리가 원하는 레이블과 일치하는 Pod를 가져오려면 명령에서 “–selector”를 사용할 수 있습니다.
kubectl get pods --selector environment=testkubectl get pods --selector app=nginx
우리는 또한 원하는 레이블과 일치하는 Pod를 가져오기 위해 “-l”을 사용할 수 있습니다.
kubectl get pods -l environment=testkubectl get pods -l environment=prod
우리는 레이블을 지정하여 Pod 삭제 작업을 수행할 수도 있습니다. 레이블과 일치하는 Pod는 다음 명령을 사용하여 삭제할 수 있습니다.
kubectl get podskubectl delete pods -l environment=testkubectl get pods
우리가 레이블과 일치하는 Pod를 삭제할 수 있었던 것처럼, 서비스도 삭제할 수 있습니다.
레이블과 일치하는 서비스를 삭제하려면 다음 명령을 사용하세요. 또한, 명령에서 지정된 레이블과 일치하는 서비스가 없으면 삭제 작업이 수행되지 않습니다.
kubectl get servicekubectl delete service -l environemt=testkubectl delete service -l environment=testkubectl get service
결론
이 기사에서는 레이블이 있는 Pod를 생성하고 해당 레이블과 일치하는 Pod로 서비스를 생성하고 포인팅했습니다. 또한 레이블과 일치하는 Pod와 서비스가 삭제되는 방법을 보았습니다.
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.