# 워크로드 관리

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

---

쿠버네티스는
<a class='glossary-tooltip' title='워크로드는 클러스터의 컨테이너를 동작시키고 관리하기 위해 사용하는 오브젝트이다.' data-bs-toggle='tooltip' data-bs-placement='top' href='/ko/docs/concepts/workloads/' target='_blank' aria-label='워크로드'>워크로드</a>
및 해당 워크로드의 구성 요소를 선언적으로 관리하기 위한 여러 내장 API를 제공한다.

궁극적으로 애플리케이션은
<a class='glossary-tooltip' title='파드는 클러스터에서 실행 중인 컨테이너의 집합을 나타낸다.' data-bs-toggle='tooltip' data-bs-placement='top' href='/ko/docs/concepts/workloads/pods/' target='_blank' aria-label='파드'>파드</a> 내부의 컨테이너로 실행된다. 하지만, 개별
파드를 관리하는 것은 많은 노력을 필요로 한다. 예를 들어, 파드에 장애가 발생하면
대체하기 위해 새로운 파드를 실행하기를 원할 것이다. 쿠버네티스가 이를 대신해 줄 수 있다.

쿠버네티스 API를 사용하여 파드보다 더 높은 추상화 수준을 나타내는
<a class='glossary-tooltip' title='클러스터 상태의 일부를 나타내는 쿠버네티스 시스템의 엔티티이다.' data-bs-toggle='tooltip' data-bs-placement='top' href='https://kubernetes.io/ko/docs/concepts/overview/working-with-objects/kubernetes-objects/#kubernetes-objects' target='_blank' aria-label='오브젝트'>오브젝트</a> 워크로드를 생성하면
쿠버네티스
<a class='glossary-tooltip' title='컨테이너의 라이프사이클을 정의, 배포, 관리하기 위한 API와 인터페이스들을 노출하는 컨테이너 오케스트레이션 레이어.' data-bs-toggle='tooltip' data-bs-placement='top' href='/ko/docs/reference/glossary/?all=true#term-control-plane' target='_blank' aria-label='컨트롤 플레인'>컨트롤 플레인</a>이 사용자가 정의한 워크로드 오브젝트 사양에 따라 자동으로
파드 오브젝트를 관리한다.

워크로드 관리를 위한 기본 제공 API는 다음과 같다.

[디플로이먼트(Deployment)](/docs/concepts/workloads/controllers/deployment/) (및 간접적으로 [레플리카셋(ReplicaSet)](/docs/concepts/workloads/controllers/replicaset/))는 
클러스터에서 애플리케이션을 실행하는 가장 일반적인 방법이다.
디플로이먼트는 클러스터에서 스테이트리스 애플리케이션 워크로드를 관리하는 데 적합하며,
디플로이먼트의 모든 파드는 서로 교환 가능하며 필요한 경우 교체할 수 있다.
(디플로이먼트는 기존
<a class='glossary-tooltip' title='(사용 중단된) 복제된 애플리케이션을 관리하는 API 오브젝트' data-bs-toggle='tooltip' data-bs-placement='top' href='/ko/docs/reference/glossary/?all=true#term-replication-controller' target='_blank' aria-label='레플리케이션컨트롤러(ReplicationController)'>레플리케이션컨트롤러(ReplicationController)</a> API를 대체한다.)

[스테이풀셋(StatefulSet)](/docs/concepts/workloads/controllers/statefulset/)은
하나 이상의 파드가 동일한 애플리케이션 코드를 실행하도록 관리하며,
이때 각 파드가 고유한 식별자를 유지하도록 보장한다.
이는 파드들이 서로 교체 가능한 것으로 간주되는 디플로이먼트와는 다르다.
스테이풀셋의 가장 일반적인 용도는 파드와 
퍼시스턴트 스토리지를 연결하는 것이다. 예를 들어, 각 파드를 
[퍼시스턴트볼륨(PersistentVolume)](/docs/concepts/storage/persistent-volumes/)과 연결하는 스테이풀셋을 실행할 수 있다. 스테이풀셋에 있는 파드 중 하나에 
장애가 발생하면, 쿠버네티스는 동일한 퍼시스턴트볼륨에 연결된 
대체 파드를 만든다.

[데몬셋(DaemonSet)](/docs/concepts/workloads/controllers/daemonset/)은 특정 <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>에 
로컬인 기능을 제공하는 파드를 정의한다.
예를 들어, 해당 노드의 컨테이너가 저장소 시스템에 액세스할 수 있도록 하는 드라이버가 있다. 데몬셋은 
드라이버 또는 기타 노드 수준 서비스가 필요한 노드에서 실행되어야 할 때 사용한다.
데몬셋의 각 파드는 기존 Unix/POSIX 서버의 시스템 데몬과 유사한 역할을 수행한다.

데몬셋은 클러스터 운영에 필수적인 요소일 수 있다.
예를 들어, 해당 노드가 클러스터 네트워킹에 액세스할 수 있도록 하는 플러그인과 같은 역할을 할 수 있다.
[클러스터 네트워킹](/docs/concepts/cluster-administration/networking/#how-to-implement-the-kubernetes-network-model)
노드 관리에 도움이 될 수도 있고,
실행 중인 컨테이너 플랫폼을 향상시키는 덜 필수적인 기능을 제공할 수도 있다.
데몬셋 (및 해당 파드)은 클러스터의 모든 노드에서 실행하거나, 일부 노드에서만 실행할 수 있다 (예를 들어,
GPU가 설치된 노드에만 GPU 가속기 드라이버를 설치).

[잡(Job)](/docs/concepts/workloads/controllers/job/) 및 
[크론잡(CronJob)](/docs/concepts/workloads/controllers/cron-jobs/)을 사용하여
실행이 완료되면 종료되는 작업을 정의할 수 있다. 잡은 일회성 작업을 나타내는 반면, 
각 크론잡은 일정에 따라 반복된다.

이 섹션의 다른 주제:
<!-- 머리말의 simple_list: true에 의존 -->

---

Section pages:

- [디플로이먼트](/ko/docs/concepts/workloads/controllers/deployment/): 디플로이먼트는 애플리케이션 워크로드를 실행하기 위해 여러 파드 집합을 관리하며, 보통 스테이트리스(stateless) 애플리케이션을 대상으로 한다.
- [레플리카셋](/ko/docs/concepts/workloads/controllers/replicaset/)
- [스테이트풀셋](/ko/docs/concepts/workloads/controllers/statefulset/): 스테이풀셋은 파드 그룹을 실행하고 각 파드에 대해 고정된 식별자를 유지한다. 이는  영구 저장소 또는 안정적이고 고유한 네트워크 신원이 필요한 애플리케이션을 관리하는 데 유용하다.
- [데몬셋](/ko/docs/concepts/workloads/controllers/daemonset/): 데몬셋은 노드 로컬 기능을 제공하는 파드를 정의한다. 이러한 파드는 네트워킹 도우미 도구처럼 클러스터 운영에 필수적인 기능일 수도 있고 애드온의 일부일 수도 있다.
- [잡](/ko/docs/concepts/workloads/controllers/job/): 잡은 한 번 실행되어 완료된 후 종료되는 일회성 작업을 나타낸다.
- [완료된 잡 자동 정리](/ko/docs/concepts/workloads/controllers/ttlafterfinished/)
- [크론잡(CronJob)](/ko/docs/concepts/workloads/controllers/cron-jobs/): 크론잡(CronJob)은 반복적인 일정에 따라 일회성 작업을 시작한다.
- [레플리케이션 컨트롤러](/ko/docs/concepts/workloads/controllers/replicationcontroller/)
