kubernetes - 第一个参数未传递给 kubernetes 部署中的映像
问题描述
我有一个带有以下入口点的泊坞窗图像。
ENTRYPOINT ["sh", "-c", "python3 -m myapp ${*}"]
我尝试在我的 kubernetes 部署中将参数传递给该图像,以便将${*}
其替换为它们,但在检查日志后,似乎第一个参数被忽略了。无论图像如何,我都尝试重现结果,并在 pod 下方应用:
apiVersion: v1
kind: Pod
metadata:
name: test
spec:
containers:
- name: test
image: postgres # or any image you may like
command: ["bash -c /bin/echo ${*}"]
args:
- sth
- serve
- arg
当我检查日志时,我只看到serve arg
,并且sth
完全被忽略了。关于出了什么问题或者我应该怎么做才能将参数传递给 exec 样式的入口点的任何想法?
解决方案
首先,你command
有引用问题——你正在有效地运行bash -c echo
.
其次,您需要仔细阅读该-c
选项的文档(强调我的):
如果
-c
存在该选项,则从第一个非选项参数 command_string 中读取命令。如果 command_string 之后有参数,则将第一个参数分配给 $0,并将任何剩余的参数分配给位置参数。对 $0 的赋值设置了 shell 的名称,该名称用于警告和错误消息。
所以你要:
command: ["bash", "-c", "echo ${*}", "bash"]
给定您的 pod 定义,这将设置$0
为bash
,然后设置$1
为sth
,$2
toserve
和$3
to arg
。
推荐阅读
- transactions - Coinbase API 中汇款端点的 Idem 参数未按预期运行
- python - 使用 Django REST 框架进行批量 POST 时检查记录是否存在
- python - 如何在 tflite 模型中组合数据预处理代码(在 tflite 中集成数据预处理代码)
- java - 当前请求不是 Postman 的多部分请求
- excel - 扩展 Excel 的书面 VBA 脚本
- r - 如何并排排列“ggplot2”对象并确保绘图区域相等?
- javascript - 我怎样才能摆脱这么多的调度?
- java - Symmetricds:添加列运行时
- python - 如何使用类方法而不是调用构造函数来初始化父类?
- c - 有人可以帮我 idk 这意味着 1 做