$ oc exec <pod> [-c <container>] -- <command> [<arg_1> ... <arg_n>]
您可以使用 CLI 在 OpenShift Container Platform 容器中执行远程命令。
CLI 内置对远程容器命令执行的支持。
要在容器中运行命令
$ oc exec <pod> [-c <container>] -- <command> [<arg_1> ... <arg_n>]
例如
$ oc exec mypod date
Thu Apr 9 02:21:53 UTC 2015
出于安全考虑,当访问特权容器时, |
客户端通过向 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
之一。
客户端在完成远程命令执行请求后,会关闭所有流、升级的连接和底层连接。