PaaS/Kubernetes

(Kubernetes) Command And Argument

armyost 2021. 3. 24. 22:20
728x90

컨테이너를 위한 커맨드와 인자 정의하기

파드를 생성할 때, 파드 안에서 동작하는 컨테이너를 위한 커맨드와 인자를 정의할 수 있다. 커맨드를 정의하기 위해서는, 파드 안에서 실행되는 컨테이너에 command 필드를 포함시킨다. 커맨드에 대한 인자를 정의하기 위해서는, 구성 파일에 args 필드를 포함시킨다. 정의한 커맨드와 인자들은 파드가 생성되고 난 이후에는 변경될 수 없다.

구성 파일 안에서 정의하는 커맨드와 인자들은 컨테이너 이미지가 제공하는 기본 커맨드와 인자들보다 우선시 된다. 만약 인자들을 정의하고 커맨드를 정의하지 않는다면, 기본 커맨드가 새로운 인자와 함께 사용된다.

 

※ The Definition of Command (entry-point) is overwritten by Definition-YAML file.

 

apiVersion: v1
kind: Pod
metadata:
  name: command-demo
  labels:
    purpose: demonstrate-command
spec:
  containers:
  - name: command-demo-container
    image: debian
    command: ["printenv"]
    args: ["HOSTNAME", "KUBERNETES_PORT"]
  restartPolicy: OnFailure

 

Dockerfile Entrypoint 와 CMD

ENTRYPOINT 와 CMD 의 가장 큰 차이점은 바로 컨테이너 시작시 실행 명령에 대한 Default 지정 여부이다.

만약 ENTRYPOINT 를 사용하여 컨테이너 수행 명령을 정의한 경우, 해당 컨테이너가 수행될 때 반드시 ENTRYPOINT 에서 지정한 명령을 수행되도록 지정 된다.(다시 running시 인자변경 불가)

하지만, CMD를 사용하여 수행 명령을 정의한 경우에는, 컨테이너를 실행할때 인자값을 주게 되면 Dockerfile 에 지정된 CMD 값을 대신 하여 지정한 인자값으로 변경하여 실행되게 된다.(다시 running시 인자변경 가능)


'PaaS > Kubernetes' 카테고리의 다른 글

(Kubernetes) Secret  (0) 2021.03.25
(Kubernetes) ConfigMap  (0) 2021.03.25
(Kubernetes) Rollout  (0) 2021.03.24
(Kubernetes) Monitoring  (0) 2021.03.23
(Kubernetes) Scheduler  (0) 2021.03.23