问题描述
Pod YAML 文件中的以下三个声明有什么区别:
- 容器:
另外,上面的 1、2 和 3 会产生相同的结果吗?
我进一步编辑。这真的让人感到困惑。看起来下面两个会产生相同的结果。如果是这样,不确定每个的目的是什么:
命令:
- 睡觉
- “5000”
参数:
- 睡觉
- “5000”
解决方法
对于第一种情况:
如果您只为容器提供 args,则 Docker 映像中定义的默认入口点将使用您提供的 args 运行。
对于第二种情况:
如果您为容器提供命令但没有参数,则仅使用提供的命令。 Docker 镜像中定义的默认 EntryPoint 和默认 Cmd 将被忽略。
所以在第一种情况下,busybox 默认入口点将执行给定的参数。在第二种情况下,busybox 默认入口点被忽略,“/bin/sh”命令将执行给定的参数。
参考:https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#notes
,根据https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/
在 Shell 中运行命令
command: ["/bin/sh"]
args: ["-c","while true; do echo hello; sleep 10; done"]
command
需要 args
。或者
如果您不为容器提供命令或参数,则使用 Docker 镜像中定义的默认值。