【问题标题】:Kubernetes command and args in YAML fileYAML 文件中的 Kubernetes 命令和参数
【发布时间】:2021-06-14 23:44:42
【问题描述】:

以下三个 Pod YAML 文件中的声明有什么区别:

  1. 容器:
  • 名称:busybox
    图片:busybox
    参数:
    -睡眠
    -“1000”
  1. 容器:

    • 名称:busybox
      图片:busybox
      命令:["/bin/sh", "-c", "sleep 1000"]
  2. 容器:

  • 名称:busybox
    图片:busybox
    参数:
    -/bin/sh
    --c
    -睡眠1000

另外,上面的 1、2 和 3 会产生相同的结果吗?



我进一步编辑。这真的越来越令人困惑。看来,以下两个将产生相同的结果。如果是这样,不确定每个的目的是什么:

命令:
- 睡觉
- “5000”

参数:
- 睡觉
- “5000”

【问题讨论】:

    标签: kubernetes-pod kubernetes-container


    【解决方案1】:

    根据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 映像中定义的默认值。

    【讨论】:

      【解决方案2】:

      对于第一种情况:

      如果您只为容器提供参数,则 Docker 映像中定义的默认入口点将使用您提供的参数运行。

      第二种情况:

      如果您为容器提供命令但没有参数,则仅使用提供的命令。 Docker 镜像中定义的默认 EntryPoint 和默认 Cmd 将被忽略。

      所以在第一种情况下,busybox 默认入口点将执行给定的参数。在第二种情况下,busybox 默认入口点被忽略,“/bin/sh”命令将执行给定的参数。

      参考:https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#notes

      【讨论】:

      • 那么,如果要求向容器添加 1000 的睡眠命令,那么在上述两个选项之间有什么更好的方法呢?
      • 经过您的编辑,我认为第三个更好。
      • 是的,都会产生相同的结果。
      • 感谢您的回复。但这真的让我感到困惑。我刚刚编辑了原始问题。
      猜你喜欢
      • 1970-01-01
      • 2021-05-06
      • 1970-01-01
      • 1970-01-01
      • 2018-11-18
      • 2018-01-31
      • 2022-09-25
      • 1970-01-01
      • 2019-08-01
      相关资源
      最近更新 更多