워크로드 관리

워크로드 관리 (Workload Management)

Kubernetes는 워크로드와 그 워크로드의 컴포넌트를 선언적으로 관리하기 위한 여러 내장 API를 제공해요.

결국 애플리케이션은 파드 안의 컨테이너로 실행돼요. 하지만 개별 파드를 일일이 관리하는 것은 많은 노력이 들어요. 예를 들어 파드가 실패하면, 그것을 대체할 새 파드를 실행하고 싶을 거예요. Kubernetes가 그걸 대신 해줄 수 있어요.

파드보다 높은 추상화 수준을 나타내는 워크로드 객체를 Kubernetes API로 만들면, Kubernetes 컨트롤 플레인이 정의한 워크로드 객체의 사양을 기반으로 파드 객체를 자동으로 관리해요.

워크로드를 관리하는 내장 API는 다음과 같아요.

출처: 문서

본문

Deployment

Deployment (그리고 간접적으로 ReplicaSet)은 클러스터에서 애플리케이션을 실행하는 가장 흔한 방법이에요. Deployment는 클러스터에서 무상태(stateless) 애플리케이션 워크로드를 관리하기에 좋은데, Deployment의 어떤 파드든 서로 교체할 수 있고 필요하면 대체될 수 있기 때문이에요. (Deployment는 레거시 ReplicationController API를 대체하는 것이에요.)

StatefulSet

StatefulSet은 모두 같은 애플리케이션 코드를 실행하면서도 고유한 신원(identity) 에 의존하는 파드 하나 이상을 관리하게 해줘요. 파드가 교체 가능하다고 기대되는 Deployment와는 다르죠. StatefulSet의 가장 흔한 용도는 파드와 영구 스토리지 사이의 연결을 만드는 거예요. 예를 들어, 각 파드를 PersistentVolume에 연결하는 StatefulSet을 실행할 수 있어요. StatefulSet의 파드 하나가 실패하면, Kubernetes는 같은 PersistentVolume에 연결된 대체 파드를 만들어요.

DaemonSet

DaemonSet은 특정 노드에 로컬인 기능을 제공하는 파드를 정의해요. 예를 들어, 그 노드의 컨테이너가 스토리지 시스템에 접근하게 해주는 드라이버가 그렇죠. 드라이버나 다른 노드 수준 서비스가 유용한 노드에서 실행되어야 할 때 DaemonSet을 사용해요. DaemonSet의 각 파드는 고전적인 Unix/POSIX 서버의 시스템 데몬과 비슷한 역할을 수행해요.

DaemonSet은 클러스터 운영의 근간이 될 수 있어요. 이를테면 노드가 클러스터 네트워킹에 접근하게 해주는 플러그인이거나, 노드 관리를 돕거나, 실행 중인 컨테이너 플랫폼을 강화하는 덜 필수적인 기능을 제공할 수도 있죠. DaemonSet(과 그 파드)을 클러스터의 모든 노드에서, 또는 일부 노드에서만 실행할 수 있어요. (예를 들어 GPU가 설치된 노드에만 GPU 가속 드라이버를 설치하는 경우.)

Job과 CronJob

Job 및/또는 CronJob을 사용해 완료되면 멈추는 작업을 정의할 수 있어요. Job은 일회성 작업을 나타내고, 각 CronJob은 일정에 따라 반복돼요.

이 섹션의 다른 주제

더 알아보기 (Learn more)