Kubernetes에서 YAML 파일을 이용하여 kubectl apply나 kubectl delete를 수행할 수 있는 이유는 YAML 파일이 Kubernetes 리소스(API 객체)의 상태를 정의하는 데 사용되기 때문입니다. Kubernetes는 YAML 파일을 읽고 해당 내용을 클러스터에 적용하거나 제거하는 작업을 수행합니다.
YAML 파일은 Kubernetes의 리소스 사양(Resource Specification)을 기술합니다. YAML 파일은 Kubernetes가 관리하는 각 리소스의 Desired State(원하는 상태)를 정의하며, Kubernetes는 이를 클러스터의 실제 상태와 동기화하려고 노력합니다.
apiVersion:
v1, apps/v1.kind:
Pod, Service, Deployment.metadata:
metadata:
name: my-pod
namespace: defaultspec:
spec:
containers:
- name: nginx
image: nginx:1.19.6예제 YAML 파일 (Pod 정의):
apiVersion: v1
kind: Pod
metadata:
name: my-pod
namespace: default
spec:
containers:
- name: nginx
image: nginx:1.19.6
kubectl apply와 kubectl delete 동작 원리kubectl apply명령어 예시:
kubectl apply -f my-pod.yaml
my-pod라는 이름의 Pod가 클러스터에 생성.kubectl deletekubectl delete는 YAML 파일에 명시된 리소스 이름, 네임스페이스, 유형 등을 확인하고, 해당 리소스를 삭제 요청합니다.명령어 예시:
kubectl delete -f my-pod.yaml
my-pod라는 이름의 Pod가 삭제.Kubernetes의 리소스 관리 방식:
Kubernetes API 기반 작업:
kubectl 명령어는 API Server와 통신하여 YAML 파일에 정의된 리소스를 Kubernetes에 전달.YAML의 직렬화/구조화 데이터:
Declarative 방식:
사용자가 YAML 파일로 명령 실행:
kubectl apply -f my-pod.yaml
kubectl은 API Server에 요청:
API Server는 상태를 저장:
컨트롤러가 Desired State로 조정:
apply와 create의 차이kubectl apply:
kubectl create:
예시:
kubectl create -f my-pod.yaml
kubectl apply -f my-pod.yaml
Kubernetes에서 kubectl apply와 kubectl delete를 YAML 파일로 수행할 수 있는 이유는 YAML 파일이 Kubernetes의 리소스 상태를 선언적으로 정의하기 때문입니다. YAML 파일을 통해 사용자는 리소스의 원하는 상태를 기술하고, Kubernetes가 이를 클러스터 상태와 동기화합니다.
이를 통해 효율적이고 반복 가능한 애플리케이션 배포와 관리가 가능합니다. YAML 파일은 Kubernetes의 핵심 도구로, 모든 Kubernetes 작업에 사용될 수 있습니다.