[MacOS 환경 #18] nodeName, label, nodeSelector

도람·2025년 11월 19일
post-thumbnail

이번 게시물에서는 노드 네임, label, 노드 셀렉터를 사용하는 것을 진행해보겠다.


1.노드 label 붙이기


현재 노드 구성과 레이블이 이렇게 되어있는데 노드에 레이블을 붙일 수 있다.

# worker 노드
kubectl label node multi-node-worker env=dev region=shared

# worker2 노드
kubectl label node multi-node-worker2 env=stage region=internal

# worker3 노드
kubectl label node multi-node-worker3 env=prod region=shared

env, region은 키값이며 dev, stage, shared, internal은 각각 value에 해당한다.
노드가 많을 경우 해당 키와 밸류값을 가진 노드를 찾을 때 효과적이다.


label로 특정 노드 찾기

노드가 많아졌을 때, 특정 label을 가진 노드만 조회하려면
-l 옵션(label selector)을 사용하면 된다.

예를 들어,
region=shared label을 가진 노드만 찾고 싶다면

kubectl get nodes -l region=shared

위 명령어를 통해 찾을 수 있다.


그럼 다음과 같이 나온다.


label 삭제하기

특정 노드의 라벨을 삭제하고 싶을 땐 ,
kubectl label node <노드이름> <키>-
형식으로 키 이름 뒤에 하이픈(-) 을 붙인다.

예시

# 특정 키(env)만 삭제
kubectl label node multi-node-worker env-

# 여러 개의 라벨을 한 번에 삭제
kubectl label node multi-node-worker env- region-

삭제가 완료되면 다시 kubectl get nodes --show-labels 로 확인할 수 있다.



label을 지정하면 다음과 같이 labeled라고 뜬다.

또한 다시 노드의 정보를 검색해봤을 때,

다음과 같이 label이 등록된 것을 확인할 수 있다.


2. Pod1 - 노드 이름 직접 지정하여 배치

노드이름을 사용하여 worker3노드에 무조건 배치되도록 파드를 구성해본다.

파일명: pod-nodename.yaml

apiVersion: v1
kind: Pod
metadata:
  name: pod-nodename
spec:
  nodeName: multi-node-worker3
  containers:
    - name: test-container
      image: nginx
      ports:
        - containerPort: 80

이렇게 nodeName:multi-node-worker3 이라고 노드명을 줘서
노드3번에 배치될 것이다.

이렇게 실제로 worker노드 3번에 배치된 것을 확인할 수 있다.


3. Pod2 - 레이블로 배치 제어(nodeSelector)

위 예시는 노드네임을 줘서 배치를 제어했지만, 여기에서는 노드의 label로 region=shared label을 주어 1번과 3번 중 아무 레이블에 가도록 할 것이다.
그러나 이미 3번에는 배치가 되어있기 때문에 1번으로 갈 것이라 예상한다.


파일명: pod-nodeselector.yaml

apiVersion: v1
kind: Pod
metadata:
  name: pod-nodeselector
spec:
  nodeSelector:
    env: dev
    region: shared
  containers:
    - name: test-container
      image: nginx
      ports:
        - containerPort: 80

nodeSelector :
env: dev
라는 값을 줘서 같은 label을 가진 1번 3번 중 가도록 하였다.


이렇듯, 파드를 배포한 뒤 보면 이미 파드가 할당된 3번말고 1번에 자동으로 할당된 것을 확인할 수 있다.



참고자료:
[쿠버네티스 공식 홈페이지 - Labels and Selectors]
https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/

profile
정도를 걷는 엔지니어

0개의 댓글