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

Utk*_*thi 2 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
Run Code Online (Sandbox Code Playgroud)

它说找不到或不存在容器命令“foo”。我正在传递一个脚本作为入口点,它有exec /usr/local/bin/foo. 它出什么问题了 ?

del*_*fer 7

如果你想./foo bar -a=A -b=B在容器中启动,你的部署应该包含

- name: foo
  image: username/image:tag
  command: ["foo"]
  args: ["bar", "-a=A", "-b=B"]
Run Code Online (Sandbox Code Playgroud)

https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/

确保在图像内的$PATH环境变量中有foo二进制文件的路径username/image:tag(或使用完整路径/usr/local/bin/foo)。

您可以$PATH通过

kubectl run  test -ti --rm --image=username/image:tag --command -- echo $PATH

kubectl run  test -ti --rm --image=username/image:tag --command -- foo
Run Code Online (Sandbox Code Playgroud)