• 카테고리

    질문 & 답변
  • 세부 분야

    데브옵스 · 인프라

  • 해결 여부

    미해결

3.5 인자값 args 질문

23.10.01 16:25 작성 조회수 165

0

안녕하세요!

 

사소한 질문이지만 3.5강 args 강의를 듣다 궁금증이 생겨서 질문드려요

 

쿠버네티스 yaml 파일 내 command는 docker에서는 Entrypoint와 같고 args는 Cmd와 동일하다고 하셨는데

 

docker에서 cmd의 경우 docker run 명령어 마지막에 인자값을 넣으면 빌드 파일에 정의된 CMD의 명령어가 아닌 인자값에 전달된 명령어로 실행이 되는걸로 알고 있어요

 

그래서 3.5/multiple-command-w-args.yaml에 있는 파일의 인자값을 변경해보려고 아래와 같이 시도를 해봤어요

 

[root@m-k8s 3.5]# k apply -f multiple-command-w-args.yaml echo run kkk\ echo add ccc\ sleep 111

error: Unexpected args: [echo run kkk echo add ccc sleep 111]

 

[root@m-k8s 3.5]# k apply -f multiple-command-w-args.yaml echo run kkk && echo add ccc && sleep 111

error: Unexpected args: [echo run kkk]

 

[root@m-k8s 3.5]# k apply -f multiple-command-w-args.yaml echo run kkk

error: Unexpected args: [echo run kkk]

 

그런데 위와 같이 'Unexpected args' 와 같은 오류가 발생이 됐어요

 

  1. command와 args가 docker 와는 다르게 동작이 되는걸까요?

     

  2. 만약 docker와 동일하다면 multiple-command-w-args.yaml파일에서 args의 인자값을 전달하려면 전달 방식이 어떻게 될까요?

 

답변 1

답변을 작성해보세요.

0

안녕하세요

동작하는게 같다는거지 (도커 사용자들을 위한 예시) yaml 뒤에 넣는다고 동작한다는 뜻은 아니었습니다.

API서버가 저런 형태를 응답 받도록 설계하는 경우는 거의 없을 것 같습니다.

인자 값을 이미 파일 형태(YAML, JSON)로 보내기로 했을 경우 파일 내부에 함께 넣으셔야 할 것 같습니다.

그리고 시작이 docker run <이미지> <args> 였던거 같은데 이거는 해당 명령어가 런타임을 호출하는 구조로 현재 쿠버네티스에 API 서버에 요청하는 것과는 구조가 많이 다릅니다.

 

따라서 결론으로 인자를 추가하기를 원하신다면 YAML, JSON 파일 포맷으로 감싸서 해당 파일을 API 서버에 적용 (apply) 해주시면 될 것 같습니다.