컨테이너의 명령과 인자 정의하기
컨테이너의 명령과 인자 정의하기
이 페이지에서는 파드에서 컨테이너를 실행할 때 명령과 인자를 정의하는 방법을 보여줘요.
출처: 문서
본문
시작하기 전에
쿠버네티스 클러스터가 필요하고, kubectl 명령줄 도구가 클러스터와 통신하도록 설정돼 있어야 해요.
파드를 만들 때 명령과 인자 정의하기
파드를 만들 때 파드에서 실행되는 컨테이너의 명령과 인자를 정의할 수 있어요. 명령을 정의하려면 구성 파일에 command 필드를 넣고, 명령의 인자를 정의하려면 args 필드를 넣어요. 정의한 명령과 인자는 파드가 생성된 뒤에는 변경할 수 없습니다.
구성 파일에서 정의한 명령과 인자는 컨테이너 이미지가 제공하는 기본 명령과 인자를 덮어써요. 인자를 정의하되 명령을 정의하지 않으면, 기본 명령이 새 인자와 함께 사용됩니다.
command 필드는 일부 컨테이너 런타임에서 ENTRYPOINT에, args 필드는 CMD에 해당합니다.
이 연습에서는 컨테이너 하나를 실행하는 파드를 만들어요. 파드의 구성 파일은 하나의 명령과 두 개의 인자를 정의합니다:
-
YAML 구성 파일을 기반으로 파드를 만든다:
kubectl apply -f https://k8s.io/examples/pods/commands.yaml -
실행 중인 파드를 나열한다:
kubectl get pods출력은 command-demo 파드에서 실행된 컨테이너가 완료되었음을 보여줍니다.
-
컨테이너에서 실행된 명령의 출력을 보려면 파드의 로그를 확인한다:
kubectl logs command-demo출력은 HOSTNAME과 KUBERNETES_PORT 환경 변수의 값을 보여줍니다:
command-demo tcp://10.3.240.1:443
환경 변수를 사용해 인자 정의하기
앞선 예시에서는 문자열을 직접 제공해 인자를 정의했어요. 문자열을 직접 제공하는 대신 환경 변수를 사용해 인자를 정의할 수 있습니다:
env:
- name: MESSAGE
value: "hello world"
command: ["/bin/echo"]
args: ["$(MESSAGE)"]
즉 파드의 인자를 정의할 때 환경 변수를 정의하는 데 사용할 수 있는 어떤 기법이든, ConfigMaps와 Secrets를 포함해 사용할 수 있어요.
환경 변수는 괄호 안에 나타나요. "$(VAR)". 이는 변수가 command나 args 필드에서 확장되기 위해 필수입니다.
셸에서 명령 실행하기
경우에 따라 명령이 셸에서 실행되어야 해요. 예를 들어 명령이 파이프로 연결된 여러 명령으로 구성될 수도 있고, 셸 스크립트일 수도 있습니다. 셸에서 명령을 실행하려면 다음과 같이 감싸세요:
command: ["/bin/sh"]
args: ["-c", "while true; do echo hello; sleep 10;done"]
더 알아보기 (Learn more)
- 파드와 컨테이너 구성하기에 대해 더 알아보기.
- 컨테이너에서 명령 실행하기에 대해 더 알아보기.
- Container 참조.