Kubernetes - 如何将 docker run 命令行参数映射到 kubectl 命令行

Kubernetes - 如何将 docker run 命令行参数映射到 kubectl 命令行

我需要在 Kubernetes 中运行这个 Docker 命令:

docker run -p 8080:8080 sagemath/sagemath sage -notebook

我可以映射除“-notebook”之外的所有内容 - 有人知道怎么做吗?

这是我目前所拥有的,当然它不起作用,因为“-notebook”没有正确翻译到 kubectl:

kubectl run --image=sagemath/sagemath sage --port=8080 --type=LoadBalancer -notebook

答案1

当你为你的 sage 定义 pod spec 时,你可以同时定义command和一个args数组,所以对你来说,它就像

command: sage
args:
- -notebook

用于启动kubectl run

Usage:
  kubectl run NAME --image=image [--env="key=value"] [--port=port] [--replicas=replicas] [--dry-run=bool] [--overrides=inline-json] [--command] -- [COMMAND] [args...] [options]

因此尝试使用--定界符运行:kubectl run --image=sagemath/sagemath --port=8080 --type=LoadBalancer -- sage -notebook

答案2

--可以解决问题。这意味着 kubectl 不会将以下以 开头的字符串解析为 kubectl 参数-

因此,您运行该容器并执行:

kubectl run --image=sagemath/sagemath --port=8080 sage -- -notebook

如果您想要 GKE 上的公共 IP,则应该公开执行以下命令的容器:

kubectl expose deploy sage --type=LoadBalancer --port=8080

您可以在EXTERNAL-IP 列kubectl get service中获取正在运行的公网 IPsage

答案3

command: sage notebook
args:

对于此类情况

k run --image=sagemath/sagemath --port=8080 --command=true -- sage notebook

--command=false 如果存在 true 和额外参数,则将它们用作容器中的“命令”字段,而不是默认的“args”字段。

相关内容