Kubernetes 命令参数被忽略

时间:2021-02-04 17:40:35

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

当从 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]
   

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

1 个答案:

答案 0 :(得分:2)

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

类似于:

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 subprocess 模块)运行外部命令的一般方法,您可以在其中指定每个单独的命令片段,这些命令本身就意味着什么。

相关问题