我必须为我的应用程序编写一个部署文件,它在运行时获取运行时命令和参数。
例如./foo bar -a=A -b=B
这是我的部署文件:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: foo
spec:
replicas: 1
template:
metadata:
labels:
name: foo
spec:
containers:
- name: foo
image: username/image:tag
# command that to be executed at run time
command: ["bar"]
args:
# This is the flag to pass at runtime
- -a=A
- -b=B
ports:
- containerPort: 9500
它说容器命令'foo'未找到或不存在。
我将脚本作为入口点传递,它有exec /usr/local/bin/foo
。
怎么了?
答案 0 :(得分:4)
如果要在容器中启动./foo bar -a=A -b=B
,则部署应包含
- name: foo
image: username/image:tag
command: ["foo"]
args: ["bar", "-a=A", "-b=B"]
https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/
确保您在username/image:tag
图片内的 $ PATH 环境变量中有 foo 二进制文件的路径(或使用完整路径/usr/local/bin/foo
)。
您可以kubectl run test -ti --rm --image=username/image:tag --command -- echo $PATH
和kubectl run test -ti --rm --image=username/image:tag --command -- foo