쿠버네티스에서 리소스를 관리하는 두 가지 주요 방법은 명령형(Imperative) 방식과 선언형(Declarative) 방식입니다.
1. Imperative - 명령형 방식
명령형 방식은, 말 그대로 리소스를 단계별로 명령어로 직접 지정하고 생성하는 방식입니다.
kubectl run, create, expose 명령어가 명령형에 해당합니다.
단일 명령으로 리소스를 빠르게 생성하고 변경할 수 있지만, 변경 내용을 추적하기 어렵다는 단점이 있습니다.
2. Declarative - 선언형 방식
리소스의 상태를 Yaml 파일 같은 선언적인 형식으로 정의하고, 이를 쿠버네티스에 제출하여 원하는 상태로 유지하도록 하는 방식을 선언형 이라고 합니다.
달성해야 할 최종 상태만 쿠버네티스에 전달합니다.
kubectl -f apply [파일 명]
원하는 상태를 정확히 정의하여 관리할 수 있고, 현재 상태를 Yaml 파일에 저장하고 버전 관리를 할 수 있기 때문에, 변경 이력을 추적할 수 있고 롤백이 편리합니다.
쿠버네티스는 일반적으로 선언적 방식을 추천합니다. 쿠버네티스는 declarative 하다는 점에서 여타 클라우드 서비스(오픈스택)과 다릅니다.
- --dry-run
- --dry-run=client
- 명령어 실행 전 유효성을 테스트 가능
- -o yaml
- 리소스 정의를 yaml 형식으로 출력
Apply 명령어
Last Applied Configuration
각 쿠버네티스 리소스 객체의 일부 메타데이터로, 해당 리소스의 상태를 설정하기 위해 사용된 선언적 업데이트의 구성을 보유합니다.
kubectl.kubernetes.io/last-applied-configuration 주석으로 리소스의 설정과 함께 저장됩니다.
이 last applied configuration은 현재 리소스 상태와 원하는 리소스 상태 간의 차이르 확인하는 데 사용됩니다.
apply 명령어 사용 시
1) local file update → 2) live configuration에서 비교, 업데이트. → 3) last applied configuration 수정
이렇게 하는 이유는, kubernetes live configuration에 오류가 생길 시 local과 last applied configuration 을 비교해서 live configuration의 오류를 찾을 수 있기 때문입니다.
create, edit 명령어 사용 시
위와 같은 last applied configuration이 저장되지 않습니다. 따라서 혼란을 초래할 수 있으므로 조심해야 합니다.
'K8S > 주요 개념' 카테고리의 다른 글
Service (0) | 2024.01.18 |
---|---|
Pod, ReplicaSet, Deployment (0) | 2024.01.18 |
K8S의 6가지 Core Concept (0) | 2024.01.18 |