如何将命令和参数传递给kubernetes部署文件中的容器

时间:2017-10-24 11:01:56

标签: kubernetes

我必须为我的应用程序编写一个部署文件,它在运行时获取运行时命令和参数。 例如./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。 怎么了?

1 个答案:

答案 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 $PATHkubectl run test -ti --rm --image=username/image:tag --command -- foo

检查 $ PATH