Kubernetes Cluster는 수많은 Resource와 Component가 함께 동작하는 복잡한 시스템입니다.
Pod가 정상적으로 실행되는지, Node 장애가 발생하지 않았는지, 원하는 상태가 유지되고 있는지를 지속적으로 관리해야 합니다.
Kubernetes에서는 이러한 역할을 담당하기 위해 Controller Manager를 제공합니다.
Controller Manager는 현재 상태(Current State)와 사용자가 원하는 상태(Desired State)를 비교하고 필요한 작업을 자동으로 수행하는 Kubernetes 핵심 Component입니다.
| 구성 요소 | 역할 |
|---|---|
| Controller Manager | Cluster 상태 관리 |
| Controller | Resource 상태 조정 |
| API Server | 상태 정보 전달 |
| Scheduler | Pod 배치 관리 |
Controller Manager를 활용하면 Kubernetes는 장애 상황에서도 자동으로 복구하고 안정적인 운영 상태를 유지할 수 있습니다.
Kubernetes Controller Manager란 무엇인가?
Kubernetes Controller Manager는 여러 Controller를 실행하고 관리하는 Kubernetes Control Plane Component입니다.
각 Controller는 특정 Resource의 상태를 감시하고 원하는 상태를 유지하도록 동작합니다.
예:
| Controller | 역할 |
|---|---|
| Node Controller | Node 상태 관리 |
| ReplicaSet Controller | Pod 개수 유지 |
| Deployment Controller | 배포 상태 관리 |
| Job Controller | 작업 상태 관리 |
Controller Manager는 이러한 Controller들을 통합 관리하는 역할을 합니다.
Kubernetes Controller가 필요한 이유
Kubernetes는 선언적(Declarative) 방식으로 동작합니다.
사용자는 원하는 상태를 정의하고 Kubernetes가 현재 상태를 자동으로 맞춥니다.
예:
사용자 설정:
“Web Pod 3개 유지”
현재 상태:
“Web Pod 2개 실행 중”
Controller 동작:
↓
부족한 Pod 1개 생성
↓
원하는 상태 유지
이러한 자동 조정 과정을 Reconciliation Loop라고 합니다.
Kubernetes Controller Manager 동작 구조
Controller Manager는 여러 Controller를 실행하면서 Cluster 상태를 관리합니다.
구조:
| 구성 요소 | 역할 |
|---|---|
| Controller Manager | Controller 실행 관리 |
| Controller | 상태 감시 및 조정 |
| API Server | Resource 정보 제공 |
| etcd | Cluster 상태 저장 |
동작 과정:
| 단계 | 내용 |
|---|---|
| 1단계 | Controller가 현재 상태 확인 |
| 2단계 | Desired State와 비교 |
| 3단계 | 차이점 발견 |
| 4단계 | 필요한 작업 수행 |
| 5단계 | 상태 업데이트 |
Kubernetes 자동 관리 기능의 핵심 구조입니다.
Kubernetes 주요 Controller 종류
Kubernetes에는 다양한 목적의 Controller가 존재합니다.
| Controller | 역할 |
|---|---|
| Node Controller | Node 상태 감시 |
| ReplicaSet Controller | Pod Replica 유지 |
| Deployment Controller | Rolling Update 관리 |
| StatefulSet Controller | Stateful Application 관리 |
| DaemonSet Controller | Node별 Pod 관리 |
| Job Controller | Batch 작업 관리 |
| CronJob Controller | 예약 작업 관리 |
각 Controller는 담당하는 Resource의 상태를 지속적으로 관리합니다.
Kubernetes Node Controller란?
Node Controller는 Kubernetes Cluster 내부 Node 상태를 관리합니다.
주요 역할:
| 기능 | 설명 |
|---|---|
| Node 상태 확인 | 정상 여부 감시 |
| 장애 감지 | 문제 Node 확인 |
| 상태 업데이트 | Node 정보 관리 |
예:
Node 장애 발생
↓
Node Controller 감지
↓
상태 변경
↓
필요한 대응 수행
Node Controller는 Cluster 안정성을 유지하는 중요한 기능입니다.
Kubernetes ReplicaSet Controller란?
ReplicaSet Controller는 지정된 개수의 Pod가 항상 실행되도록 관리합니다.
예:
설정:
Replica = 5
현재:
Pod 4개 실행
Controller:
↓
새로운 Pod 생성
이를 통해 Application 가용성을 유지합니다.
Kubernetes Deployment Controller란?
Deployment Controller는 Application 배포 상태를 관리합니다.
특히 Rolling Update와 Rollback 기능을 지원합니다.
주요 기능:
| 기능 | 설명 |
|---|---|
| Rolling Update | 점진적 업데이트 |
| Rollback | 이전 버전 복구 |
| Replica 관리 | Pod 개수 유지 |
Production 환경에서 Application 배포 안정성을 높이는 핵심 Controller입니다.
Kubernetes StatefulSet Controller란?
StatefulSet Controller는 상태 저장 Application을 관리합니다.
주요 관리 대상:
| 항목 | 설명 |
|---|---|
| Pod Identity | 고유 이름 유지 |
| Storage | Persistent Volume 연결 |
| 순서 관리 | 생성 및 삭제 순서 유지 |
Database 같은 Stateful Application 운영에 사용됩니다.
Kubernetes DaemonSet Controller란?
DaemonSet Controller는 모든 Node 또는 특정 Node에 Pod를 실행하도록 관리합니다.
활용 사례:
| Application | 용도 |
|---|---|
| Fluent Bit | Log 수집 |
| Node Exporter | Monitoring |
| Network Agent | Node 관리 |
새로운 Node가 추가되면 자동으로 Pod가 배치됩니다.
Kubernetes Job Controller란?
Job Controller는 완료되어야 하는 작업을 관리합니다.
예:
| 작업 | 용도 |
|---|---|
| Database Backup | 일회성 실행 |
| Data Migration | 데이터 처리 |
| Batch 작업 | 대량 처리 |
작업 성공 여부를 확인하고 필요한 경우 재시도를 수행합니다.
Kubernetes Controller Manager와 API Server 관계
Controller는 API Server를 통해 Cluster 정보를 확인합니다.
구조:
Controller
↓
API Server
↓
etcd
Controller는 직접 Database에 접근하지 않고 API Server를 통해 상태를 관리합니다.
Kubernetes Reconciliation Loop란?
Reconciliation Loop는 Kubernetes Controller의 핵심 동작 방식입니다.
과정:
현재 상태 확인
↓
원하는 상태 비교
↓
차이 발견
↓
수정 작업 실행
↓
상태 유지
이 반복 과정으로 Kubernetes는 자동 복구와 상태 유지를 수행합니다.
Kubernetes Controller Manager 장애 영향
Controller Manager가 중단되면 기존 Application 실행에는 즉시 큰 문제가 없을 수 있습니다.
하지만 자동 관리 기능이 정상적으로 동작하지 않습니다.
영향:
| 기능 | 영향 |
|---|---|
| 새 Pod 생성 | 자동 관리 제한 |
| 장애 복구 | 지연 가능 |
| Replica 유지 | 문제 발생 가능 |
| 배포 관리 | 영향 발생 |
따라서 Production Control Plane에서는 안정적인 관리가 필요합니다.
Kubernetes Controller Manager 운영 고려사항
| 항목 | 설명 |
|---|---|
| High Availability | Control Plane 이중화 |
| Monitoring | 상태 확인 |
| Log 관리 | 장애 분석 |
| 권한 관리 | 보안 설정 |
Control Plane Component의 안정성은 Kubernetes 전체 운영 안정성과 연결됩니다.
Kubernetes Controller Manager 장점
| 장점 | 설명 |
|---|---|
| 자동 복구 | 장애 대응 가능 |
| 상태 유지 | Desired State 유지 |
| 운영 자동화 | 수동 관리 감소 |
| 확장성 | 대규모 Cluster 지원 |
Controller Manager는 Kubernetes가 자동 운영 플랫폼으로 동작하는 핵심 이유입니다.
자주 묻는 질문
Controller와 Controller Manager의 차이는 무엇인가요?
Controller는 특정 Resource를 관리하는 개별 기능이고 Controller Manager는 여러 Controller를 실행하고 관리하는 Component입니다.
Controller Manager가 중단되면 Pod가 모두 종료되나요?
아닙니다.
기존 Pod는 계속 실행될 수 있지만 자동 복구와 상태 조정 기능이 제한됩니다.
Kubernetes가 자동으로 장애를 복구하는 이유는 무엇인가요?
Controller가 지속적으로 현재 상태와 원하는 상태를 비교하고 필요한 작업을 수행하기 때문입니다.
마무리
Kubernetes Controller Manager는 Cluster 상태를 유지하고 Application을 자동으로 관리하는 핵심 Control Plane Component입니다.
| 구성 요소 | 역할 |
|---|---|
| Controller Manager | Controller 관리 |
| Controller | 상태 조정 |
| API Server | 정보 전달 |
| etcd | 상태 저장 |
Controller Manager 구조를 이해하면 Kubernetes가 어떻게 자동 복구, Scaling, 배포 관리를 수행하는지 이해할 수 있습니다.
다음 글에서는 Kubernetes 핵심 저장소 역할을 담당하는 Kubernetes etcd 완벽 가이드! Cluster 상태 저장과 데이터 관리 구조 이해하기를 알아보겠습니다.