컨테이너의 명령과 인자 정의하기

컨테이너의 명령과 인자 정의하기

이 페이지에서는 파드에서 컨테이너를 실행할 때 명령과 인자를 정의하는 방법을 보여줘요.

출처: 문서

본문

시작하기 전에

쿠버네티스 클러스터가 필요하고, kubectl 명령줄 도구가 클러스터와 통신하도록 설정돼 있어야 해요.

파드를 만들 때 명령과 인자 정의하기

파드를 만들 때 파드에서 실행되는 컨테이너의 명령과 인자를 정의할 수 있어요. 명령을 정의하려면 구성 파일에 command 필드를 넣고, 명령의 인자를 정의하려면 args 필드를 넣어요. 정의한 명령과 인자는 파드가 생성된 뒤에는 변경할 수 없습니다.

구성 파일에서 정의한 명령과 인자는 컨테이너 이미지가 제공하는 기본 명령과 인자를 덮어써요. 인자를 정의하되 명령을 정의하지 않으면, 기본 명령이 새 인자와 함께 사용됩니다.

command 필드는 일부 컨테이너 런타임에서 ENTRYPOINT에, args 필드는 CMD에 해당합니다.

이 연습에서는 컨테이너 하나를 실행하는 파드를 만들어요. 파드의 구성 파일은 하나의 명령과 두 개의 인자를 정의합니다:

  1. YAML 구성 파일을 기반으로 파드를 만든다:

    kubectl apply -f https://k8s.io/examples/pods/commands.yaml
    
  2. 실행 중인 파드를 나열한다:

    kubectl get pods
    

    출력은 command-demo 파드에서 실행된 컨테이너가 완료되었음을 보여줍니다.

  3. 컨테이너에서 실행된 명령의 출력을 보려면 파드의 로그를 확인한다:

    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)"]

즉 파드의 인자를 정의할 때 환경 변수를 정의하는 데 사용할 수 있는 어떤 기법이든, ConfigMapsSecrets를 포함해 사용할 수 있어요.

환경 변수는 괄호 안에 나타나요. "$(VAR)". 이는 변수가 commandargs 필드에서 확장되기 위해 필수입니다.

셸에서 명령 실행하기

경우에 따라 명령이 셸에서 실행되어야 해요. 예를 들어 명령이 파이프로 연결된 여러 명령으로 구성될 수도 있고, 셸 스크립트일 수도 있습니다. 셸에서 명령을 실행하려면 다음과 같이 감싸세요:

command: ["/bin/sh"]
args: ["-c", "while true; do echo hello; sleep 10;done"]

더 알아보기 (Learn more)