【问题标题】:Kubernetes command arguments being ignoredKubernetes 命令参数被忽略
【发布时间】:2021-02-04 17:40:35
【问题描述】:

从 linux 终端运行特定命令时,命令如下:

/opt/front/arena/sbin/ads_start  ads  -db_server vmazfassql01 -db_name Test1

在常规的 docker compose yaml 文件中,我们这样定义它:

ENTRYPOINT ["/opt/front/arena/sbin/ads_start", "ads" ]
command: ["-db_server vwmazfassql01","-db_name Test1"]

然后我尝试将其转换为 Kubernetes

command: ["/opt/front/arena/sbin/ads_start","ads"]
args: ["-db_server vwmazfassql01","-db_name Test1"]

或不带引号的 args

command: ["/opt/front/arena/sbin/ads_start","ads"]
args: [-db_server vwmazfassql01,-db_name Test1]

但我在这两种情况下都遇到了错误:

Unknown parameter value '-db_server vwmazfassql01'
Unknown parameter value '-db_name Test1'

然后我尝试从 args 中删除破折号,但似乎这些值被忽略并且没有设置。在初始化值过程中,在容器启动期间,这些属性似乎具有默认值,例如db_name:“广告”。至少在初始化期间它是如何在日志中打印出来的。

我尝试了更多可能性: 在命令中定义所有这些:

command:
  - /opt/front/arena/sbin/ads_start
  - ads
  - db_server vwmazfassql01
  - db_name Test1

以稍微不同的方式定义它们:

command: ["/opt/front/arena/sbin/ads_start","ads"]
args:
  - db_server vwmazfassql01
  - db_name Test1


command: ["/opt/front/arena/sbin/ads_start","ads"]
args: [db_server vwmazfassql01,db_name Test1]
   

它们再次被忽略,而不是被设置。 难道我做错了什么?我该如何解决这个问题?谢谢

【问题讨论】:

    标签: kubernetes docker-compose azure-aks kubernetes-pod


    【解决方案1】:

    我会尝试按照文档示例 (https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#run-a-command-in-a-shell) 分离 args

    类似:

    command: ["/opt/front/arena/sbin/ads_start", "ads"]
    args: ["-db_server", "vwmazfassql01", "-db_name", "Test1"]
    

    或者,它甚至可以像这样工作并且看起来更干净:

    command: ["/opt/front/arena/sbin/ads_start"]
    args: ["ads", "-db_server", "vwmazfassql01", "-db_name", "Test1"]
    

    这遵循从代码运行外部命令的一般方法(一个随机示例是 python 子进程模块),您可以在其中指定每个单独的命令片段。

    【讨论】:

    • 太棒了!你是真正的 K8S 专家 :-) 这解决了这个问题并设置了参数。我用第一种方法!如果我可以再问你一件事-我还有一个参数-unicode,我没有提到,但这也是必需的,只有那个不能设置,当我尝试设置它时再次显示未知错误这个:args: ["-unicode","1","-db_server", "vwmazfassql01"..... 或者像这个args: ["-unicode","-db_server", "vwmazfassql01"..... 你能帮我做那个吗?谢谢
    • 再次出现未知参数错误?和以前一样的错误?如果您尝试从 linux 终端使用该参数运行命令,它可以正常工作吗?
    • 是的,就是那个。这个属性只是一个特定的属性,因为它没有“值”,只有“unicode”的“key”值,并且以这种方式为应用程序启用了 Unicode。使用linux终端它可以工作。您是否知道可能是什么问题?
    • 如果它只有一个键,那么第一个示例添加“1”对我来说似乎是错误的,但第二个示例中您只需在 args 中添加“-unicode”(以正确的顺序您的应用程序期望它)理论上应该可以工作,如果命令和所有参数的连接一起创建您在 linux 控制台上运行的相同命令。它可以与 docker compose 一起使用吗?
    • 我必须仔细检查 docker compose 因为我目前没有它。明天我会回复你的。再次感谢您!
    猜你喜欢
    • 2018-07-11
    • 1970-01-01
    • 2015-04-03
    • 1970-01-01
    • 1970-01-01
    • 2019-11-04
    • 2019-11-15
    • 2020-12-24
    • 1970-01-01
    相关资源
    最近更新 更多