[K8S] Kubernetes Controller

조성열·2025년 11월 21일

Kubernetes

목록 보기
3/3
post-thumbnail

k8s Controller

지난 포스트에서 쿠버네티스의 구조와 구성 요소에 대해 알아봤다. 쿠버네티스 환경을 구성하는 구성 요소들이 운영자가 선언한대로 동작하는지 모니터링하여 항상 의도된 상태로 동작하도록 만드는 것이 필수적이다.
이번 포스트에서는 이러한 역할을 하는 k8s Controller에 대해 알아보도록 하자.

Replica Set

Worker node에서 실행중인 Pod들을 안정적으로 관리하고 명시된 Pod에 대한 가용성을 보장하는 기능을 한다.
파드를 식별하는 셀렉터, 유지해야 하는 파드 개수를 명시하는 레플리카의 개수, 레플리카 수를 유지하기 위해 생성하는 신규 파드에 대한 데이터를 명시하는 파드 템플릿으로 정의한다.

cf) Replica Set 선언

실무에서는 ReplicaSet을 직접 생성하거나 관리하는 경우는 드물다고 한다. 대다수의 경우 상위 개념인 Deployment를 생성하면, Deployment가 알아서 ReplicaSet을 생성하고 관리하는 방식을 사용한다.

Deployment

쿠버네티스에서 가장 널리 사용되는 워크로드 리소스로, ReplicaSet의 상위 개념이다. ReplicaSet이 단순히 Pod의 개수(Scaling)를 유지하는 데 집중한다면, Deployment는 애플리케이션의 배포와 업데이트 관리를 담당한다.

예를 들어 사용자가 서비스 업데이트를 한다고 할 때 Deployment는 내부적으로 새로운 ReplicaSet을 생성하고 기존 파드를 점진적으로 교체하는 Rolling Update를 수행하여 무중단 배포를 지원하고, 만약 이 과정에서 문제가 생긴다면 기존 버전으로 되돌리는 Roll Back을 수행한다.

Daemon Set

DaemonSet은 클러스터의 모든(또는 특정) 노드에 하나의 DaemonSet Pod가 반드시 실행되도록 보장하는 쿠버네티스 컨트롤러다. 주로 로그 수집, 모니터링 에이전트, 스토리지 데몬과 같이 노드 단위로 실행되어야 하는 백그라운드 프로세스를 위해 사용한다.

Stateful Set

Stateful Set은 애플리케이션의 배포와 Scaling을 관리하고 Pod들의 실행 순서와 고유성을 보장하는 컨트롤러다. Deployment와 유사하게 동일한 컨테이너 스펙을 기반으로 하여 Pod들을 관리하는데, 동일한 스펙으로 생성된 Pod들을 식별자(id)를 통해 구분한다.
이는 DB와 같이 데이터의 보존과 순서가 중요한 애플리케이션에 사용한다.

Job

Job은 하나 이상의 Pod를 생성하여 특정 작업이 성공적으로 완료되는 것을 보장하는 컨트롤러다. 웹서버와 같이 지속적인 작업이 아닌 데이터 백업과 같은 일시적인 작업을 수행할 때 사용한다.
만약 작업 도중 실패가 발생하면, 지정된 횟수만큼 Pod를 재시작하여 성공하도록 관리한다.


지금까지 쿠버네티스에서 지원하는 컨트롤러의 종류와 기능에 대해 알아봤다. 다음 포스트에서는 쿠버네티스 네트워크 통신 과정에 대해 알아보도록 하자!

0개의 댓글