kubectl create, apply, replace
1. kubectl create
Create a new kubernetes resource in the cluster
: 새로운 Object를 생성합니다. 만약 이미 존재하는 경우, Error
kubectl run
과 같은 명령어(Imperative Command)를 통한 Pod 배포의 경우,
Pod1개만 생성하고 관리하지만, create
는 그룹 내 파드 1개를 생성하고 관리합니다.
2. kubectl replace
Update a resource in the live cluster
: Object가 이미 존재하는 경우 Error가 발생합니다.
kubectl replace --force -f [pod name] 을 통해 deleted and created
3. kubectl apply
If i want to do create and replace
: 새로운 object를 생성하지만, 이미 존재하는 경우에도 부분적인 spec을 받아들입니다.
(기존 Objetct를 Deployment로 지정하여, replicas=3 -> replicas=6)
ENDPOINT & CMD | command & args
- ENDPOINT & CMD
: ENDPOINT와 CMD는 해당 컨테이너가 수행하게 될 실행 명령얼 정의하는 선언문입니다.
Dockerfile의 작성에서 마지막 부분에 선언하게 되며, 이는 컨테이너가 마지막 단계에서 어떠한 동작을 하는지를 정의하는 명령어입니다.
이 2가지 선언의 차이점은 컨테이너 시작 시, 실행 명령에 대한 Default 지정 여부입니다.
- ENDPOINT
이를 사용하여 컨테이너 수행 명령을 정의했다면, 해당 컨테이너가 수행될 때 반드시 ENDPOINT에서 지정한 명령을 수행되도록 지정합니다.
- CMD
컨테이너를 실행할 때, 인자값을 주면 Dockerfile에 지정된 CMD 값을 대신하여 지정한 인자값으로 변경되어 실행합니다. 하지만 docker run
명령에 의해 실행된다면, 가장 마지막에 있는 값만 남게 된다.(override)
- command & args
: kubernetes yaml 파일에서 정의되는 args는 Dockerfile의 CMD와 유사한 역할을 합니다.
즉, args를 통해 argument의 전달인자를 지정해줄 수 있습니다.
- command
컨테이너 기동 시 실행할 커맨드로 args가 인자로 적용됩니다.
- args
command의 실행 인자
- env
컨테이너 내에 환경 변수를 설정