# 파일로 컨테이너에 파드 정보 노출하기

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

---

<!-- overview -->

본 페이지는 파드가 
[`downwardAPI` 볼륨](/ko/docs/concepts/storage/volumes/#downwardapi)을 사용하여 
파드에서 실행되는 컨테이너에 자신에 대한 정보를 노출하는 방법에 대해 설명한다. 
`downwardAPI` 볼륨은 파드 필드와 컨테이너 필드를 노출할 수 있다.

쿠버네티스에는 실행 중인 컨테이너에 파드 필드 및 컨테이너 필드를 노출하는 두 가지 방법이 있다.

* [환경 변수](/ko/docs/tasks/inject-data-application/environment-variable-expose-pod-information/)
* 볼륨 파일

파드 및 컨테이너 필드를 노출하는 이 두 가지 방법을
_downward API_ 라고 한다.

## 시작하기 전에

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



<!-- steps -->

## 파드 필드 저장

이 연습에서는 컨테이너가 한 개 있는 파드를 생성하고, 해당 파드의
파드 수준(Pod-level) 필드를 실행 중인 컨테이너에 파일 형태로 생성한다.
다음은 파드를 위한 매니페스트를 보여준다.

















<div class="highlight code-sample">
    <div class="copy-code-icon">
    <a href="https://raw.githubusercontent.com/kubernetes/website/main/content/ko/examples/pods/inject/dapi-volume.yaml" download="pods/inject/dapi-volume.yaml"><code>pods/inject/dapi-volume.yaml</code>
    </a><img src="/images/copycode.svg" class="icon-copycode" onclick="copyCode('pods-inject-dapi-volume-yaml')" title="Copy pods/inject/dapi-volume.yaml to clipboard"></img></div>
    <div class="includecode" id="pods-inject-dapi-volume-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">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">Pod</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">kubernetes-downwardapi-volume-example</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">zone</span><span class="p">:</span><span class="w"> </span><span class="l">us-est-coast</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">cluster</span><span class="p">:</span><span class="w"> </span><span class="l">test-cluster1</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">rack</span><span class="p">:</span><span class="w"> </span><span class="l">rack-22</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="nt">annotations</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">build</span><span class="p">:</span><span class="w"> </span><span class="l">two</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">builder</span><span class="p">:</span><span class="w"> </span><span class="l">john-doe</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">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">client-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">registry.k8s.io/busybox</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="nt">command</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s2">&#34;sh&#34;</span><span class="p">,</span><span class="w"> </span><span class="s2">&#34;-c&#34;</span><span class="p">]</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="nt">args</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span>- <span class="l">while true; do</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span><span class="l">if [[ -e /etc/podinfo/labels ]]; then</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="l">echo -en &#39;\n\n&#39;; cat /etc/podinfo/labels; fi;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span><span class="l">if [[ -e /etc/podinfo/annotations ]]; then</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="l">echo -en &#39;\n\n&#39;; cat /etc/podinfo/annotations; fi;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span><span class="l">sleep 5;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="l">done;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="nt">volumeMounts</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">podinfo</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span><span class="nt">mountPath</span><span class="p">:</span><span class="w"> </span><span class="l">/etc/podinfo</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="nt">volumes</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">podinfo</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="nt">downwardAPI</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">items</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span>- <span class="nt">path</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;labels&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="nt">fieldRef</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="nt">fieldPath</span><span class="p">:</span><span class="w"> </span><span class="l">metadata.labels</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span>- <span class="nt">path</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;annotations&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="nt">fieldRef</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="nt">fieldPath</span><span class="p">:</span><span class="w"> </span><span class="l">metadata.annotations</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span></code></pre></div></div>
</div>

매니페스트에서, 파드에 `downwardAPI` 볼륨이 있고, 
컨테이너가 `/etc/podinfo`에 볼륨을 마운트하는 것을 확인할 수 있다.

`downwardAPI` 아래의 `items` 배열을 살펴보자. 배열의 각 요소는
`downwardAPI` 볼륨을 의미한다. 
첫 번째 요소는 파드의 `metadata.labels` 필드 값이 
`labels`라는 파일에 저장되어야 함을 지정한다.
두 번째 요소는 파드의 `annotations` 필드 값이 
`annotations`라는 파일에 저장되어야 함을 지정한다.


<div class="alert alert-info" role="note"><h4 class="alert-heading">참고:</h4>이 예제의 필드는 파드에 있는 컨테이너의 필드가 아니라
파드 필드이다.</div>


파드를 생성한다.

```shell
kubectl apply -f https://k8s.io/examples/pods/inject/dapi-volume.yaml
```

파드의 컨테이너가 실행 중인지 확인한다.

```shell
kubectl get pods
```

컨테이너의 로그를 본다.

```shell
kubectl logs kubernetes-downwardapi-volume-example
```

출력은 `labels` 파일과 `annotations` 파일의 내용을 보여준다.

```
cluster="test-cluster1"
rack="rack-22"
zone="us-est-coast"

build="two"
builder="john-doe"
```

파드에서 실행 중인 컨테이너의 셸을 가져온다.

```shell
kubectl exec -it kubernetes-downwardapi-volume-example -- sh
```

셸에서 `labels` 파일을 보자.

```shell
/# cat /etc/podinfo/labels
```

출력을 통해 모든 파드의 레이블이 
`labels` 파일에 기록되었음을 확인할 수 있다.

```shell
cluster="test-cluster1"
rack="rack-22"
zone="us-est-coast"
```

마찬가지로 `annotations` 파일을 확인하자.

```shell
/# cat /etc/podinfo/annotations
```

`etc/podinfo` 디렉터리에 파일을 확인하자.

```shell
/# ls -laR /etc/podinfo
```

출력에서 `labels` 및 `annotations` 파일이 
임시 하위 디렉터리에 있음을 알 수 있다. 이 예제에서는 
`..2982_06_02_21_47_53.299460680`이다. `/etc/podinfo` 디렉터리에서 `..data`는 
임시 하위 디렉토리에 대한 심볼릭 링크이다. `/etc/podinfo` 디렉토리에서 
`labels`와 `annotations` 또한 심볼릭 링크이다.

```
drwxr-xr-x  ... Feb 6 21:47 ..2982_06_02_21_47_53.299460680
lrwxrwxrwx  ... Feb 6 21:47 ..data -> ..2982_06_02_21_47_53.299460680
lrwxrwxrwx  ... Feb 6 21:47 annotations -> ..data/annotations
lrwxrwxrwx  ... Feb 6 21:47 labels -> ..data/labels

/etc/..2982_06_02_21_47_53.299460680:
total 8
-rw-r--r--  ... Feb  6 21:47 annotations
-rw-r--r--  ... Feb  6 21:47 labels
```

심볼릭 링크를 사용하면 메타데이터의 동적(dynamic) 원자적(atomic) 갱신이 가능하다.
업데이트는 새 임시 디렉터리에 기록되고, `..data` 심볼릭 링크는 
[rename(2)](http://man7.org/linux/man-pages/man2/rename.2.html)을 사용하여 원자적(atomic)으로 갱신한다.


<div class="alert alert-info" role="note"><h4 class="alert-heading">참고:</h4>다운워드 API를 <a href="/ko/docs/concepts/storage/volumes/#using-subpath">subPath</a>
볼륨 마운트로 사용하는 컨테이너는
다운워드 API 업데이트를 수신하지 않는다.</div>


셸을 종료한다.

```shell
/# exit
```

## 컨테이너 필드 저장

이전 연습에서는 downward API를 사용하여 파드 수준 필드에 액세스할 수
있도록 했다.
이번 연습에서는 파드 전체가 아닌 특정 
[컨테이너](/docs/reference/kubernetes-api/workload-resources/pod-v1/#Container)의 
일부 필드만 전달한다. 다음은 기존과 마찬가지로 하나의
컨테이너만 가진 파드의 매니페스트를
보여준다.

















<div class="highlight code-sample">
    <div class="copy-code-icon">
    <a href="https://raw.githubusercontent.com/kubernetes/website/main/content/ko/examples/pods/inject/dapi-volume-resources.yaml" download="pods/inject/dapi-volume-resources.yaml"><code>pods/inject/dapi-volume-resources.yaml</code>
    </a><img src="/images/copycode.svg" class="icon-copycode" onclick="copyCode('pods-inject-dapi-volume-resources-yaml')" title="Copy pods/inject/dapi-volume-resources.yaml to clipboard"></img></div>
    <div class="includecode" id="pods-inject-dapi-volume-resources-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">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">Pod</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">kubernetes-downwardapi-volume-example-2</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">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">client-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">registry.k8s.io/busybox:1.24</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="nt">command</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s2">&#34;sh&#34;</span><span class="p">,</span><span class="w"> </span><span class="s2">&#34;-c&#34;</span><span class="p">]</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="nt">args</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span>- <span class="l">while true; do</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span><span class="l">echo -en &#39;\n&#39;;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span><span class="l">if [[ -e /etc/podinfo/cpu_limit ]]; then</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="l">echo -en &#39;\n&#39;; cat /etc/podinfo/cpu_limit; fi;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span><span class="l">if [[ -e /etc/podinfo/cpu_request ]]; then</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="l">echo -en &#39;\n&#39;; cat /etc/podinfo/cpu_request; fi;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span><span class="l">if [[ -e /etc/podinfo/mem_limit ]]; then</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="l">echo -en &#39;\n&#39;; cat /etc/podinfo/mem_limit; fi;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span><span class="l">if [[ -e /etc/podinfo/mem_request ]]; then</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="l">echo -en &#39;\n&#39;; cat /etc/podinfo/mem_request; fi;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span><span class="l">sleep 5;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="l">done;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="nt">resources</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">requests</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span><span class="nt">memory</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;32Mi&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span><span class="nt">cpu</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;125m&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">limits</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span><span class="nt">memory</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;64Mi&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span><span class="nt">cpu</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;250m&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="nt">volumeMounts</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">podinfo</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span><span class="nt">mountPath</span><span class="p">:</span><span class="w"> </span><span class="l">/etc/podinfo</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="nt">volumes</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">podinfo</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="nt">downwardAPI</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">items</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span>- <span class="nt">path</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;cpu_limit&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="nt">resourceFieldRef</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="nt">containerName</span><span class="p">:</span><span class="w"> </span><span class="l">client-container</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="nt">resource</span><span class="p">:</span><span class="w"> </span><span class="l">limits.cpu</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="nt">divisor</span><span class="p">:</span><span class="w"> </span><span class="l">1m</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span>- <span class="nt">path</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;cpu_request&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="nt">resourceFieldRef</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="nt">containerName</span><span class="p">:</span><span class="w"> </span><span class="l">client-container</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="nt">resource</span><span class="p">:</span><span class="w"> </span><span class="l">requests.cpu</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="nt">divisor</span><span class="p">:</span><span class="w"> </span><span class="l">1m</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span>- <span class="nt">path</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;mem_limit&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="nt">resourceFieldRef</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="nt">containerName</span><span class="p">:</span><span class="w"> </span><span class="l">client-container</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="nt">resource</span><span class="p">:</span><span class="w"> </span><span class="l">limits.memory</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="nt">divisor</span><span class="p">:</span><span class="w"> </span><span class="l">1Mi</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span>- <span class="nt">path</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;mem_request&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="nt">resourceFieldRef</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="nt">containerName</span><span class="p">:</span><span class="w"> </span><span class="l">client-container</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="nt">resource</span><span class="p">:</span><span class="w"> </span><span class="l">requests.memory</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="nt">divisor</span><span class="p">:</span><span class="w"> </span><span class="l">1Mi</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span></code></pre></div></div>
</div>

매니페스트에서 파드에 [`downwardAPI` 볼륨](/ko/docs/concepts/storage/volumes/#downwardapi)이 있고 
단일 컨테이너는 `/etc/podinfo`에 
볼륨을 마운트하는 것을 확인할 수 있다.

`downwardAPI` 아래의 `items` 배열을 살펴보자.
배열의 각 요소는 downward API 볼륨의 파일을 의미한다.

첫 번째 요소는 `client-container`라는 컨테이너에서 
`1m`으로 지정된 형식의 `limits.cpu` 필드 값이 
`cpu_limit`이라는 파일에 배포되어야 함을 지정한다.
`divisor` 필드는 선택 사항이며, 지정하지 않을 경우 `1`의 값을 갖는다.
divisor 1은 `cpu` 리소스를 위한 코어 수를 의미하거나 `memory` 리소스에 대한 바이트 수를 의미한다.

파드를 생성한다.

```shell
kubectl apply -f https://k8s.io/examples/pods/inject/dapi-volume-resources.yaml
```

파드에서 실행 중인 컨테이너의 셸을 가져온다.

```shell
kubectl exec -it kubernetes-downwardapi-volume-example-2 -- sh
```

셸에서 `cpu_limit` 파일을 확인한다.

```shell
# 컨테이너 내부의 쉘에서 실행하자.
cat /etc/podinfo/cpu_limit
```

비슷한 명령을 통해 `cpu_request`, `mem_limit` 및 
`mem_request` 파일을 확인할 수 있다.

<!-- discussion -->

## 특정 경로 및 파일 권한에 대한 프로젝트 키

키(key)를 파드 안의 특정 경로에, 특정 권한으로, 파일 단위로 투영(project)할 수 있다.
자세한 내용은 
[시크릿(Secrets)](/ko/docs/concepts/configuration/secret/)을 참조한다.

## 다음 내용

* [`spec`](/docs/reference/kubernetes-api/workload-resources/pod-v1/#PodSpec)을 읽어보자.
  파드에 대한 API 정의다. 여기에는 컨테이너 (파드의 일부)의 정의가 포함되어 있다.
* downward API를 사용하여 노출할 수 있는 [이용 가능한 필드](/ko/docs/concepts/workloads/pods/downward-api/#사용-가능한-필드) 목록을 읽어보자.

레거시 API 레퍼런스에서 볼륨에 대해 읽어본다.
* 컨테이너가 접근할 파드 내의 일반 볼륨을 정의하는 
  [`Volume`](/docs/reference/generated/kubernetes-api/v1.36/#volume-v1-core) API 정의를 확인한다.
* 다운워드 API 정보를 포함하는 볼륨을 정의하는 
  [`DownwardAPIVolumeSource`](/docs/reference/generated/kubernetes-api/v1.36/#downwardapivolumesource-v1-core) API 정의를 확인한다.
* 다운워드 API 볼륨 내 파일을 채우기 위한 
  오브젝트 또는 리소스 필드로의 레퍼런스를 포함하는 
  [`DownwardAPIVolumeFile`](/docs/reference/generated/kubernetes-api/v1.36/#downwardapivolumefile-v1-core) API 정의를 확인한다.
* 컨테이너 리소스 및 이들의 출력 형식을 지정하는 
  [`ResourceFieldSelector`](/docs/reference/generated/kubernetes-api/v1.36/#resourcefieldselector-v1-core) API 정의를 확인한다.
