특정 노드에서만 파드 실행하기

이 페이지는 데몬셋(DaemonSet)의 일부로서, 특정 노드에서만 파드를 실행하는 방법을 보여준다.

시작하기 전에

쿠버네티스 클러스터가 필요하고, kubectl 커맨드-라인 툴이 클러스터와 통신할 수 있도록 설정되어 있어야 한다. 이 튜토리얼은 컨트롤 플레인 호스트가 아닌 노드가 적어도 2개 포함된 클러스터에서 실행하는 것을 추천한다. 만약, 아직 클러스터를 가지고 있지 않다면, minikube를 사용해서 생성하거나 다음 쿠버네티스 플레이그라운드 중 하나를 사용할 수 있다.

특정 노드에서만 파드 실행하기

데몬셋을 실행하려고 하는데, 로컬 솔리드 스테이트 드라이브(SSD) 스토리지가 있는 노드에서만 데몬 파드를 실행해야 한다고 가정하자. 예를 들어, 파드는 노드에 캐시 서비스를 제공할 수 있으며, 이 캐시는 저지연 로컬 스토리지를 사용할 수 있을 때만 유용하다.

단계 1: 노드에 레이블 추가하기

SSD가 있는 노드에 ssd=true라는 레이블을 추가한다.

kubectl label nodes example-node-1 example-node-2 ssd=true

단계 2: 매니페스트 생성하기

SSD 레이블이 붙은 노드에서만 데몬 파드를 프로비저닝하는 데몬셋을 생성해보자.

다음으로, nodeSelector를 사용하여 데몬셋이 ssd 레이블이 "true"로 설정된 노드에서만 파드를 실행하도록 한다.

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: ssd-driver
  labels:
    app: nginx
spec:
  selector:
    matchLabels:
      app: ssd-driver-pod
  template:
    metadata:
      labels:
        app: ssd-driver-pod
    spec:
      nodeSelector:
        ssd: "true"
      containers:
        - name: example-container
          image: example-image

단계 3: 데몬셋 생성하기

kubectl create 또는 kubectl apply를 사용하여 매니페스트로부터 데몬셋을 생성한다.

다른 노드에도 ssd=true 레이블을 지정해보자.

kubectl label nodes example-node-3 ssd=true

노드에 레이블을 지정하면 컨트롤 플레인(구체적으로, 데몬셋 컨트롤러)이 자동으로 해당 노드에서 새로운 데몬 파드를 실행한다.

kubectl get pods -o wide

출력 결과는 다음과 비슷하다.

NAME                              READY     STATUS    RESTARTS   AGE    IP      NODE
<daemonset-name><some-hash-01>    1/1       Running   0          13s    .....   example-node-1
<daemonset-name><some-hash-02>    1/1       Running   0          13s    .....   example-node-2
<daemonset-name><some-hash-03>    1/1       Running   0          5s     .....   example-node-3
최종 수정 September 07, 2025 at 5:14 PM PST: docs(ko): Translate pods-some-nodes into Korean (275f25bd42)