6.7.2. 클라이언트에서 원격 명령을 시작하는 프로토콜
클라이언트는 Kubernetes API 서버에 대한 요청을 발행하여 컨테이너에서 원격 명령 실행을 시작합니다.
/proxy/nodes/<node_name>/exec/<namespace>/<pod>/<container>?command=<command>
위 URL에서
-
<node_name>
은 노드의 FQDN입니다. -
<namespace>
는 대상 Pod의 프로젝트입니다. -
<pod>
는 대상 Pod의 이름입니다. -
<container>
는 대상 컨테이너의 이름입니다. -
<command>
는 실행하기를 원하는 명령입니다.
예를 들면 다음과 같습니다.
/proxy/nodes/node123.openshift.com/exec/myns/mypod/mycontainer?command=date
또한 클라이언트는 요청에 매개변수를 추가하여 다음에 대한 여부를 표시할 수 있습니다.
- 클라이언트에서 원격 컨테이너의 명령(stdin)에 입력을 보내야 합니다.
- 클라이언트의 터미널이 TTY입니다.
- 원격 컨테이너의 명령에서 stdout의 출력을 클라이언트로 보내야 합니다.
- 원격 컨테이너의 명령에서 stderr의 출력을 클라이언트로 보내야 합니다.
클라이언트는 API 서버로 exec
요청을 보낸 후 다중 스트림을 지원하는 연결로 연결을 업그레이드합니다. 현재 구현에서는 HTTP/2 를 사용합니다.
클라이언트는 stdin, stdout, stderr에 대해 각각 하나의 스트림을 생성합니다. 클라이언트는 스트림을 구분하기 위해 스트림의 streamType
헤더를 stdin
, stdout
, stderr
중 하나로 설정합니다.
클라이언트는 원격 명령 실행 요청을 완료하면 모든 스트림, 업그레이드된 연결, 기본 연결을 종료합니다.