Kubernetes
Operator의 spec과 status 필드 역할
DevOps Engineer
2025. 3. 26. 20:40
728x90
spec은 사용자가 의도한 목표 상태이고, status는 현재 실제 시스템의 상태입니다.
Operator는 이 둘을 비교해 Reconciliation을 수행하고, 이를 통해 시스템이 항상 원하는 상태를 유지하도록 합니다.
정리: spec과 status의 용도
필드 | 용도 | 작성 주체 |
spec | 사용자가 원하는 목표 상태 (Desired State)를 정의 | 사용자 / Controller 외부 입력 |
status | 실제 시스템의 현재 상태 (Observed State)를 반영 | Operator / Controller (자동 갱신) |
자세한 설명
spec – "사용자가 원하는 상태"
- 사용자가 어떻게 동작하길 원하는지를 정의합니다.
- 예를 들어, 파드 개수, 이미지 버전, 리소스 제한, 설정 값 등이 여기에 들어갑니다.
- Controller는 이 spec을 기준으로 동작을 설계합니다.
예시
apiVersion: apps/v1
kind: Deployment
spec:
replicas: 3
template:
spec:
containers:
- name: my-app
image: my-app:v1
→ 사용자는 "3개의 파드를 실행해줘" 라고 요청하고 있는 것.
status – "지금 시스템이 어떤 상태인지"
- Operator 또는 Controller가 실제 시스템을 관찰하고 이를 기록합니다.
- 현재 몇 개의 파드가 실행 중인지, 에러가 있는지, 어떤 조건을 만족했는지 등
- 외부 시스템/사용자가 리소스의 진행 상황을 확인할 수 있도록 도와줍니다.
예시
status:
replicas: 3
readyReplicas: 2
conditions:
- type: Available
status: "False"
reason: "MinimumReplicasUnavailable"
→ 지금은 2개만 준비됐고, 아직 목표인 3개에 못 미친다는 것을 보여줌.
Operator에서의 역할 분담
- spec을 보고 → Controller가 시스템에 리소스를 조정하고
- status를 갱신 → 현재 상황을 사용자/다른 시스템에 보여줌
즉, spec은 명령, status는 보고!
728x90