Reconiliation Loop란
설명
- K8s에서 선언된 desired state와 실제 current state의 차이를 감지하고 해소하는 반복 루프
- Reconiliation Loop과 흔히 Controller 패턴, Operator 패턴는 비슷해서 크게 구분 안함
동작
[ 핵심 3개 동작 ]
Watch
- Controller가 API Server의 etcd 변경 이벤트를 watch
- Pod 생성/수정/샂게 등의 이벤트가 Informer를 통해 들어옴
Compare(= Analyze)
- 현재 상태와 선언된 desired state를 비교
- 변화가 차이를 탐지함
Reconsile(= Act)
- 차이를 해소하기 위해 액션을 수행
- Pod가 부족하면 생성, 초과하면 삭제함
동작 flow

[ 핵심 ]
- 기본 K8s Resoruce의 Reconsiliation Loop를 동작하는건 각 리소스의 Controller Manager
- Controller 종류
1. Deployment Controller
- Deployment 리소스를 watch -> ReplicaSet 생성/관리
2. ReplicaSet Controller
- ReplicaSet을 watch -> Pod 수 유지
3. DaemonSet Controller
- DaemonSet을 watch -> 노드당 Pod 1개 보장
4. StatefulSet Controller
- StatefulSet을 watch -> 순서 보장하며 Pod 관리
5. CronJob Controller
- CronJob을 watch -> 스케줄에 맞춰 Job 생성
6. ServiceAccount Controller
- ServiceAccount를 watch -> 토큰 생성/관리
Operator란
설명
- K8s Resource가 아닌 특정 CR을 reconcile하는 전담 Controller
- 정확히는 CRD + Custom Controller(CC) + CR 관리 전체를 하나로 묶은 패키지
- Helm chart나 OLM(Operator Lifecycle Manager)으로 설치하면 한 번에 설치 가능
구조

[ 핵심 차이 ]
- Contorller Manager와 다른 점은 Controller가 Master Node가 아닌 밖에 있다는 점
- 그 외에 동작은 동일