반응형
이 글은 2022년 10월 기준 기록입니다.
쿠버네티스(K8s)는 어떻게 컨테이너를 정의하고 동작시킬까요. 답의 중심에 오브젝트가 있습니다.
오브젝트는 클러스터의 상태를 나타낸다
쿠버네티스 오브젝트는 클러스터의 상태를 나타냅니다. 여기서 상태란 다음과 같은 것들입니다.
어떤 컨테이너화된 애플리케이션이 동작 중인지, 그 애플리케이션이 이용할 수 있는 리소스는 무엇인지, 그리고 그 애플리케이션의 재구동·업그레이드·내고장성 등에 대한 정책은 무엇인지입니다.
오브젝트는 명령이 아니라 의도를 담은 기록이다
중요한 것은 오브젝트가 "이렇게 해라"라는 명령이 아니라 의도를 담은 기록이라는 점입니다. 쿠버네티스 시스템에게 해당 오브젝트의 정보를 전달하면, 쿠버네티스는 그 상태를 유지하기 위해 동작합니다.
따라서 사용자가 하는 일은 세 단계로 정리됩니다.
- 쿠버네티스 오브젝트를 작성합니다.
- 작성한 오브젝트를 쿠버네티스 시스템에 전달합니다(
kubectl명령 사용). - 쿠버네티스가 오브젝트 내용대로 동작합니다.
Spec은 원하는 상태, Status는 실제 상태다
오브젝트를 이해하는 열쇠는 이 두 단어입니다. Spec은 사용자가 원하는 동작의 상태, 즉 작성한 내용입니다. Status는 현재 동작하는 실제 쿠버네티스의 상태입니다.
둘 사이에서 벌어지는 일은 다음 순환입니다.
- Spec이 전달됩니다.
- Status를 Spec과 일치시킵니다.
- Spec의 변경이 발생합니다.
- 다시 Status를 Spec과 일치시킵니다.
사용자가 건드리는 것은 언제나 Spec뿐이고, Status를 거기에 맞추는 일은 쿠버네티스가 계속 반복합니다.
오브젝트 파일의 골격은 네 항목이다
apiVersion: # 쿠버네티스 api 버전
kind: # 생성하고자 하는 오브젝트의 종류
metadata: # 이름, UID, 네임스페이스 등 오브젝트를 유일하게 구분하는 데이터
name:
spec: # 오브젝트에 대한 명세
작성한 파일은 apply로 전달합니다.
$ kubectl apply -f 오브젝트파일반응형
'IT·테크 > 인프라' 카테고리의 다른 글
| 컨테이너 오케스트레이션과 쿠버네티스 — Docker와 무엇이 다른가 (0) | 2026.07.29 |
|---|---|
| Docker Compose scale과 nginx 로드 밸런싱으로 부하 나누기 (0) | 2026.07.28 |
| Docker Compose에서 .env 파일 하나만 바꿔 끼우기 (0) | 2026.07.28 |
| Docker External Config — 환경 변수로 이미지 밖에서 설정 주입하기 (0) | 2026.07.28 |
| Docker Compose — 여러 컨테이너를 한 덩어리로 묶어 관리하기 (0) | 2026.07.26 |