-
Operator의 spec과 status 필드 역할Kubernetes 2025. 3. 26. 20:40728x90
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'Kubernetes' 카테고리의 다른 글
Kubernetes API 서버에서 "Lock"을 관리하는 방법 (0) 2025.04.02 Amazon EKS Auto Mode (0) 2025.04.01 Operator에서 idempotency(멱등성)를 보장하는 방법 (0) 2025.03.26 CRD를 생성하면 벌어지는 일들 (0) 2025.03.25 KubeBuilder와 Operator SDK의 관계 (0) 2025.03.25