首页 > 解决方案 > 为什么 kubectl exec 需要--?

问题描述

如果我运行命令

$ kubectl exec pod-name echo Hello World 

我收到一条弃用错误消息,要求我包含“--”字符。

kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead.

为什么决定在此处使用“--”字符?对我来说似乎没有必要。我知道它已被弃用,我只是想了解该决定背后的原因。

标签: kubernetes

解决方案


根据 Marko Luksa 的《Kubernetes in action》一书:

为什么是双破折号?

命令中的双破折号 (--) 表示 kubectl 的命令选项结束。双破折号之后的所有内容都是应该在 pod 内执行的命令。如果命令没有以破折号开头的参数,则不需要使用双破折号。但是在您的情况下,如果您不在那里使用双破折号, -s 选项将被解释为 kubectl exec 的选项,并会导致以下奇怪且高度误导的错误: $ kubectl exec kubia-7nog1 curl -s http://10.111.249.153 与服务器 10.111.249.153 的连接被拒绝 - 您是否指定了正确的主机或端口?这与您的服务拒绝连接无关。这是因为 kubectl 无法连接到位于 10.111.249.153 的 API 服务器(-s 选项用于告诉 kubectl 连接到与默认值不同的 API 服务器)。


推荐阅读