ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Operator의 spec과 status 필드 역할
    Kubernetes 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
Designed by Tistory.