CKA (Certified Kubernetes Administrator)/CKA TIP

kubernetes create vs apply & run

seulseul 2022. 1. 24. 17:18

1) kubectl run command

kubectl run nginx --image nginx

개발환경에서 사용하는것을 추천한다.

장점

- 클러스터에 특정 오브젝트를 한번에 실행하거나 시작할수 있는 가장 쉬운 방법.
(실제 이미지 바로 실행 시킴)

단점
- 기존 설정에 대한 히스토리를 제공하지 않음.
- 변경사항이나 audit 내역, 템플릿등을 제공하지 않음.

 

2) kubectl create command

kubectl create -f nginx.yaml

최소한 1개 이상의 YAML file 이나 JSON format file 을 이용해서 Object 를 생성한다.

장점

- 설정파일 내용을 git 같은곳에 저장이 가능하기 때문에 설정에대한 변경 히스토리가 확인 가능한다.
- 새로운 object 를 생성하기 위한 템플릿들을 제공한다.

단점

- YAML  파일 작성이 필요하며 템플릿 사용을 위해 Object scema 에 대한 이해가 필요.

3) kubectl apply command

모든 설정 파일들은 디렉토리 안에 들어있고 오브젝트를 생성하거나 패치한다.

 

장점

- 실행중인 오브젝트 직접 적용한 변경사항을 설정파일에 merge 하지 않더라고 유지된다.

단점

- 디버깅하기 어렵고 예상한 결과가 아닐경우 이해하기 어렵다.
- diffs 를 사용힌 부분 업데이트는 복잡한 병합과 패치를 만들게 된다.

 

apply 를 할경우에는 기존 설정에 대한 정보가 주석처리 되어 확인이 가능하다는 점이 큰 차이점.

create 기존 정보를 유지하지 않음.

- kubectl create = 명령형(Imperative) 

=  구성파일 내 완전하게 정의되고 기록되어질 경우 동작 & object가 이미 존재할 경우 Error 발생

 

- kubectl apply = 선언형(Declarative)

= 부분적인 spec만 주어져도 업데이트 가능 & object가 존재하지 않을 경우 새로운 object 생성

 

즉, 처음 생성은 create 로 실행하고 , 그 다음 업데이트가 발생할 경우 apply 를 하면됨.

 

 

https://kubernetes.io/ko/docs/reference/kubectl/overview/

 

kubectl 개요

Kubectl은 쿠버네티스 클러스터를 제어하기 위한 커맨드 라인 도구이다. 구성을 위해, kubectl 은 config 파일을 $HOME/.kube 에서 찾는다. KUBECONFIG 환경 변수를 설정하거나 --kubeconfig 플래그를 설정하여

kubernetes.io