当从 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]
它们再次被忽略,而不是被设置。 难道我做错了什么?我该如何解决这个问题?谢谢
答案 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 模块)运行外部命令的一般方法,您可以在其中指定每个单独的命令片段,这些命令本身就意味着什么。