IT·테크/인프라

쿠버네티스 오브젝트 — 의도를 적으면 클러스터가 그 상태를 유지한다

레루루 2026. 7. 30. 12:54
반응형

이 글은 2022년 10월 기준 기록입니다.

 

쿠버네티스(K8s)는 어떻게 컨테이너를 정의하고 동작시킬까요. 답의 중심에 오브젝트가 있습니다.

오브젝트는 클러스터의 상태를 나타낸다

쿠버네티스 오브젝트는 클러스터의 상태를 나타냅니다. 여기서 상태란 다음과 같은 것들입니다.

어떤 컨테이너화된 애플리케이션이 동작 중인지, 그 애플리케이션이 이용할 수 있는 리소스는 무엇인지, 그리고 그 애플리케이션의 재구동·업그레이드·내고장성 등에 대한 정책은 무엇인지입니다.

오브젝트는 명령이 아니라 의도를 담은 기록이다

중요한 것은 오브젝트가 "이렇게 해라"라는 명령이 아니라 의도를 담은 기록이라는 점입니다. 쿠버네티스 시스템에게 해당 오브젝트의 정보를 전달하면, 쿠버네티스는 그 상태를 유지하기 위해 동작합니다.

 

따라서 사용자가 하는 일은 세 단계로 정리됩니다.

  1. 쿠버네티스 오브젝트를 작성합니다.
  2. 작성한 오브젝트를 쿠버네티스 시스템에 전달합니다(kubectl 명령 사용).
  3. 쿠버네티스가 오브젝트 내용대로 동작합니다.

Spec은 원하는 상태, Status는 실제 상태다

오브젝트를 이해하는 열쇠는 이 두 단어입니다. Spec은 사용자가 원하는 동작의 상태, 즉 작성한 내용입니다. Status는 현재 동작하는 실제 쿠버네티스의 상태입니다.

 

둘 사이에서 벌어지는 일은 다음 순환입니다.

  1. Spec이 전달됩니다.
  2. Status를 Spec과 일치시킵니다.
  3. Spec의 변경이 발생합니다.
  4. 다시 Status를 Spec과 일치시킵니다.

사용자가 건드리는 것은 언제나 Spec뿐이고, Status를 거기에 맞추는 일은 쿠버네티스가 계속 반복합니다.

오브젝트 파일의 골격은 네 항목이다

apiVersion: # 쿠버네티스 api 버전
kind: # 생성하고자 하는 오브젝트의 종류
metadata: # 이름, UID, 네임스페이스 등 오브젝트를 유일하게 구분하는 데이터
  name: 
spec: # 오브젝트에 대한 명세

 

작성한 파일은 apply로 전달합니다.

$ kubectl apply -f 오브젝트파일
반응형