如何在Kubernetes中传递命令行参数?

18

需要在pod.yaml中为docker容器appContainer1和appContainer2传递命令行参数。

pod.yaml

apiVersion: v1
kind: Pod
metadata:
  name: microservices
  labels:
    app: apps
spec:
  containers:
    - name: appContainer1 
      image: gcr.io/mybucket/appContainerImage1 
      ports:
        - containerPort: 8080
    - name: appContainer2
      image: b.gcr.io/mybucket/appContainerImage2
      ports:
        - containerPort: 9090
在docker中,我可以通过环境变量(-e)传递命令行参数。
docker run --rm -it -p 9090:9090 -e spring.profiles.dynamic=local applicationimage1

同样,在 Kubernetes 中运行容器时,我需要传递命令行参数。

1个回答

34

听起来您实际上并不需要命令行参数,而是环境变量 - 您可以使用env 来实现:

- name: appContainer1 
  image: gcr.io/mybucket/appContainerImage1 
  ports:
    - containerPort: 8080
  env:
    - name: spring.profiles.dynamic
      value: local

您可以使用命令行参数:

- name: appContainer1 
  image: gcr.io/mybucket/appContainerImage1 
  ports:
    - containerPort: 8080
  args:
    - foo
    - bar
    - "String containing:colons:"

抱歉,env:键仅支持大写字母,不允许使用特殊字符如点(.),而args无法工作。请给予建议。 - Shiva
@Shiva,“不工作”这个描述太过含糊了。请更加具体地说明问题。 - Jon Skeet
@Shiva:同样,当您尝试使用 env 时会发生什么(大写字母的限制有文档记录吗?我没有看到,但我可能错过了...) - Jon Skeet
@JonSkeet 请问我该如何传递标记?例如: docker run --rm -it lapplicationimage1 -auth-file=somefile - dina
@user5980143:我已经有一段时间没有使用Docker了,而且我现在也不想查找那些标志,但你可能只需要查看容器文档:https://kubernetes.io/docs/api-reference/v1.6/#container-v1-core - Jon Skeet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接