반응형
Command Argument.
Configuring Application은 아래 세 가지 의미를 포함한다.
- Configuring Command / Argument on Application
- Configuring Env variable
- Configuring secret
시험에서의 공식 범위는 아니지만, 과소평가해서는 안 되는 영억. docker 커멘드가 k8s에는 어떻게 대응할 수 있는지 확인하기 위함.
- docker run ubuntu를 실행하면, 컨테이너는 실행을 완료하고 종료한다.
- 종료된 컨테이너까지 확인하려면 docker ps -a 명령어를 써야 한다. 이미 exit한 컨테이너를 확인할 수 있다.
VM과 달리 Container는 OS 호스팅을 하지 않는다. 프로세스 가상화 개념이므로, 프로세스가 끝나는 순간 컨테이너도 종료되어야 한다.
그럼, 어떤 프로세스가 컨테이너에서 실행되는지는 누가 결정하지?
- nginx나 mysql 이미지의 명령어를 확인해보면, 이미지 맨 마지막 CMD에서
[nginx] / [mysqld]
와 같이 프로그램을 실행하는 명령어가 들어 있다.
- ubunut의 경우 cmd에 bash가 들어가 있다. bash는 위의 명령어와 달리 사용자에게서 input을 받는 프로세스.
- 우분투 이미지를 docker run으로 실행하면, 내부적으로는 bash 터미널이 생성되어 명령어를 기다리는 상태가 된다. 하지만 docker는 별다른 명령어가 없다면 생성하고 실행한 프로세스에 더 이상 접근하지 않으므로, bash는 명령어를 입력할 터미널을 찾지 못한다. 그러므로 프로세스를 종료함.
도커 이미지에 기본적으로 세팅된 명령어를 override하는 방법
docker run <image-name> [run-command]
입력하기. ex) docker run ubuntu sleep 5
- 만약 매번 프로그램이 실행될 때마다 같은 명령어를 override하고 싶다면 - 새로운 Dockerfile을 생성하는 경우가 일반적이다.
여기서 더, 만약 sleep 뒤에 입력하는 숫자값을 하드코딩하는 대신 파라미터로 받아서 매번 변경하고 싶다면?
docker run ubuntu-sleeper sleep 10
형태로 직접 입력하기. 명령어까지 직접 입력하면 되지만, 애초에 sleep 명령어를 추가한 이미지까지 새로 만들었는데 굳이 이렇게?- 도커 이미지에 cmd 대신
Entrypoint
를 사용한다. entrypoint는 명령어만 넣고, 파라미터는 사용자가 실행할 때 추가할 수 있도록 되어 있다.
- entrypoint만 있을 경우, 사용자가 별다른 입력값을 넣지 않고 시작할 경우 에러를 반환할 수 있다. 디폴트 값이 설정되어 있지 않기 때문 (sleep의 경우 'missing operand' 에러가 뜬다)
- 따라서 이런 에러를 막기 위해
Entrypoint + CMD
형태의 이미지를 사용한다. 옵션이 있으면 옵션을 우선하되, 기본값을 설정하는 식.- 두 가지를 함께 사용할 경우, 반드시 json format (대괄호 + 문자열 + 띄어쓰기)을 만족해야 한다.
Entrypoint 자체를 override하고 싶다면 docker run 명령어에서 --entrypoint sleep2.0
형태로 사용할 수 있다. entrypoint 명령어를 덮어쓰는 것.
Command and Argument in K8s
kubernetes의 yaml 파일에서
- args : docker 이미지의 파라미터 (cmd) 를 변경하고 싶을 경우. 반드시 문자열 리스트 형태로 입력해야 한다.
- command : docker 이미지의 entrypoint를 변경하고 싶을 경우 사용.
반응형
'학습일지 > kubernetes' 카테고리의 다른 글
CKA 대비 kubernetes 스터디 - 5. Cluster Maintenance (0) | 2022.03.14 |
---|---|
CKA 대비 kubernetes 스터디 - 4. Application LifeCycle Management (0) | 2022.03.09 |
CKA 대비 kubernetes 스터디 - 3. Logging / Monitoring (0) | 2022.03.01 |
CKA 대비 kubernetes 스터디 - 2. Scheduler (0) | 2022.02.27 |
CKA 대비 kubernetes 스터디 - 1. Core Concept (0) | 2022.02.25 |