29.3. 协议
客户端通过向 Kubernetes API 服务器发出请求,来发起在容器中执行远程命令的操作:
/proxy/minions/<node_name>/exec/<namespace>/<pod>/<container>?command=<command>
在以上 URL 中:
-
<node_name>
是节点的 FQDN。 -
<namespace>
是目标 pod 的命名空间。 -
<pod>
是目标 pod 的名称。 -
<container>
是目标容器的名称。 -
<command>
是要执行的命令。
例如:
/proxy/minions/node123.openshift.com/exec/myns/mypod/mycontainer?command=date
另外,客户端也可以在请求中添加参数来指示是否有以下要求:
- 客户端应向远程容器的命令发送输入 (stdin)。
- 客户端的终端是 TTY。
- 远程容器的命令应该将来自 stdout 的输出发送到客户端。
- 远程容器的命令应该将来自 stderr 的输出发送到客户端。
在向 API 服务器发送 exec
请求后,客户端会将连接升级到支持多路复用的流;当前使用 SPDY。
客户端为 stdin、stdout 和 stderr 分别创建一个流。为了区分流,客户端将流的 streamType
标头设置为 stdin
、stdout
或 stderr
之一。
在完成远程命令执行请求后,客户端关闭所有流、升级的连接和底层连接。
注意
管理员可以查看 架构指南 以了解更多信息。