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

LLMS index: [llms.txt](/llms.txt)

---

<!-- overview -->

이 페이지는 <a class='glossary-tooltip' title='파드의 복제본을 클러스터 노드 집합에서 동작하게 한다.' data-bs-toggle='tooltip' data-bs-placement='top' href='/ko/docs/concepts/workloads/controllers/daemonset' target='_blank' aria-label='데몬셋(DaemonSet)'>데몬셋(DaemonSet)</a>의 일부로서, 특정 <a class='glossary-tooltip' title='노드는 쿠버네티스의 작업 장비(worker machine)이다.' data-bs-toggle='tooltip' data-bs-placement='top' href='/ko/docs/concepts/architecture/nodes/' target='_blank' aria-label='노드'>노드</a>에서만 <a class='glossary-tooltip' title='파드는 클러스터에서 실행 중인 컨테이너의 집합을 나타낸다.' data-bs-toggle='tooltip' data-bs-placement='top' href='/ko/docs/concepts/workloads/pods/' target='_blank' aria-label='파드'>파드</a>를 실행하는 방법을 보여준다.

## 시작하기 전에

<p>쿠버네티스 클러스터가 필요하고, kubectl 커맨드-라인 툴이 클러스터와
통신할 수 있도록 설정되어 있어야 한다. 이 튜토리얼은 컨트롤 플레인 호스트가 아닌 노드가 적어도 2개 포함된 클러스터에서 실행하는 것을 추천한다. 만약, 아직 클러스터를 가지고
있지 않다면,
<a href="/ko/docs/tasks/tools/#minikube">minikube</a>를 사용해서 생성하거나
다음 쿠버네티스 플레이그라운드 중 하나를 사용할 수 있다.</p>
<ul>
<li><a href="https://labs.iximiuz.com/playgrounds?category=kubernetes&filter=all">iximiuz Labs</a></li>
<li><a href="https://killercoda.com/playgrounds/scenario/kubernetes">Killercoda</a></li>
<li><a href="https://kodekloud.com/public-playgrounds">KodeKloud</a></li>
</ul>


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

<a class='glossary-tooltip' title='파드의 복제본을 클러스터 노드 집합에서 동작하게 한다.' data-bs-toggle='tooltip' data-bs-placement='top' href='/ko/docs/concepts/workloads/controllers/daemonset' target='_blank' aria-label='데몬셋'>데몬셋</a>을 실행하려고 하는데, 로컬 솔리드 스테이트 드라이브(SSD) 
스토리지가 있는 노드에서만 데몬 파드를 실행해야 한다고 가정하자. 예를 들어, 파드는 노드에 캐시 서비스를 제공할 수 있으며, 
이 캐시는 저지연 로컬 스토리지를 사용할 수 있을 때만 유용하다.

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

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

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

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

SSD 레이블이 붙은 <a class='glossary-tooltip' title='노드는 쿠버네티스의 작업 장비(worker machine)이다.' data-bs-toggle='tooltip' data-bs-placement='top' href='/ko/docs/concepts/architecture/nodes/' target='_blank' aria-label='노드'>노드</a>에서만 데몬 파드를 프로비저닝하는 <a class='glossary-tooltip' title='파드의 복제본을 클러스터 노드 집합에서 동작하게 한다.' data-bs-toggle='tooltip' data-bs-placement='top' href='/ko/docs/concepts/workloads/controllers/daemonset' target='_blank' aria-label='데몬셋'>데몬셋</a>을 생성해보자.


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























<div class="highlight code-sample">
    <div class="copy-code-icon">
    <a href="https://raw.githubusercontent.com/kubernetes/website/main/content/en/examples/controllers/daemonset-label-selector.yaml" download="controllers/daemonset-label-selector.yaml"><code>controllers/daemonset-label-selector.yaml</code>
    </a><img src="/images/copycode.svg" class="icon-copycode" onclick="copyCode('controllers-daemonset-label-selector-yaml')" title="Copy controllers/daemonset-label-selector.yaml to clipboard"></img></div>
    <div class="includecode" id="controllers-daemonset-label-selector-yaml"><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nt">apiVersion</span><span class="p">:</span><span class="w"> </span><span class="l">apps/v1</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">kind</span><span class="p">:</span><span class="w"> </span><span class="l">DaemonSet</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">metadata</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">ssd-driver</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="nt">labels</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">app</span><span class="p">:</span><span class="w"> </span><span class="l">nginx</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">spec</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="nt">selector</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">matchLabels</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="nt">app</span><span class="p">:</span><span class="w"> </span><span class="l">ssd-driver-pod</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="nt">template</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">metadata</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="nt">labels</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">app</span><span class="p">:</span><span class="w"> </span><span class="l">ssd-driver-pod</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">spec</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="nt">nodeSelector</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">ssd</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;true&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="nt">containers</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span>- <span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">example-container</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span><span class="nt">image</span><span class="p">:</span><span class="w"> </span><span class="l">example-image</span></span></span></code></pre></div></div>
</div>

### 단계 3: 데몬셋 생성하기

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

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

```shell
kubectl label nodes example-node-3 ssd=true
```

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

```shell
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
```
