-
Kubernetes의 동작 철학 중 하나인 Level-Triggered 방식의 개념Kubernetes 2025. 3. 22. 18:10728x90
Kubernetes의 동작 철학 중 하나인 Level-Triggered 방식은 Kubernetes가 어떻게 상태를 감지하고 반응(reconcile) 하는지를 이해하는 데 아주 핵심적인 개념입니다.
이걸 Edge-Triggered와 비교하면서 설명하면 훨씬 명확해져요.
Kubernetes는 Level-Triggered 방식으로 동작하며,
이는 Polling 기반 + 이벤트 알림을 혼합한 구조예요.
핵심은 “현재 상태와 원하는 상태의 차이를 계속 관찰하고, 필요할 때만 동작”한다는 점입니다.개념 정리
구분Edge-TriggeredLevel-Triggered (K8s 방식)의미 변화가 발생했을 때만 트리거됨 원하는 상태와 현재 상태의 차이를 지속적으로 확인 예시 파일이 변경된 순간에만 이벤트 발생 “이 파일이 이 상태인지”를 계속 확인 상태 기반 vs 이벤트 기반 이벤트 기반 상태 기반 Kubernetes에서? ❌ 사용 안 함 ✅ 사용 Kubernetes는 왜 Level-Triggered인가?
Kubernetes의 핵심은 선언적(desired state) 시스템이에요:
"나는 이 Deployment가 항상 3개의 Pod를 갖고 있기를 원해."
Kubernetes는 이 선언된 원하는 상태(desired state)와
현재의 실제 상태(current state)를 계속 비교하면서
차이가 있을 때만 reconcile 하도록 설계되어 있어요.이걸 Level-Triggered 방식이라고 합니다.
동작 흐름 요약 (controller-runtime 기준)
- 사용자가 Deployment를 생성 (desired state 선언)
- Controller는 watch를 통해 이 리소스를 감지
- Reconcile 루프가 돌며 현재 상태와 원하는 상태를 비교
- 차이가 있다면 조치를 취해 desired state에 맞춤
- 차이가 없으면 아무것도 하지 않음 (idempotent)
👉 이 과정은 단순히 이벤트에만 반응하는 게 아니라,
"내가 원하는 상태에 도달했는가?"라는 상태 기반 루프로 이루어져 있어요.이벤트 vs Polling?
Kubernetes는 이벤트 기반과 polling의 중간입니다:
- Watch API를 통해 etcd의 리소스 변화 이벤트를 받지만,
- 결국 Reconcile 루프에서 상태를 비교해서 동작하기 때문에,
- 단순한 이벤트 기반(Edge-Triggered)와는 다르고,
- 매초마다 무조건 확인하는 Polling과도 달라요.
즉:
"상태 변화 이벤트로 Reconcile을 트리거하되, 실제로는 항상 상태를 확인하고 반응한다."
💡 예시로 이해해보기
Edge-Triggered 시스템이라면:
- Pod가 삭제되었는지 이벤트가 없으면 복구 못 함
Level-Triggered 시스템(Kubernetes):
- Pod가 사라졌든, 네트워크 문제로 이벤트를 못 받았든 상관없이
- "3개 있어야 되는데 지금 2개네?" → 1개 추가!
✅ 요약
- Kubernetes는 Level-Triggered 방식
- 상태 변화 이벤트로 Reconcile 루프를 트리거하지만,
- 실제 동작은 항상 현재 상태와 원하는 상태를 비교
- idempotent한 로직이 핵심
- Edge-Triggered와는 달리, 이벤트를 놓쳐도 다음 상태 비교에서 다시 복구 가능
728x90'Kubernetes' 카테고리의 다른 글
StatefulSet + headless service 조합의 사용 (0) 2025.03.23 Kubernetes Operator의 RequeueAfter 개념 (0) 2025.03.22 K8S Operator의 Custom Resource 상태 정보를 외부 DB나 외부 API 호출을 통해서 업데이트 해야하는 경우 (0) 2025.03.22 Kubernetes Operator를 작성할 때 피해야 할 Anti-patterns (0) 2025.03.22 Custom Pod Scheduling (0) 2025.03.21