【问题标题】:How to pass command line arguments in kubernetes?如何在 kubernetes 中传递命令行参数?
【发布时间】:2016-03-18 06:21:49
【问题描述】:

需要在 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 中运行时,我需要传递命令行参数。

【问题讨论】:

    标签: docker google-cloud-platform kubernetes


    【解决方案1】:

    听起来您实际上并不想要命令行参数,而是环境变量 - 您可以为此使用 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: key 只支持大写,它不允许特殊字符,如点(。)和 args 不起作用。请给我建议。
    • @Shiva“不工作”非常含糊。请更具体。
    • @Shiva:同样,当您尝试 env 时会发生什么。 (是否记录了大写字母的限制?我没看到,但我可能错过了......)
    • @JonSkeet 我如何传递标志?例如:docker run --rm -it lapplicationimage1 -auth-file=somefile
    • @user5980143:我已经有一段时间没有使用 docker,我现在不想查看这些标志,但您可能只想查看 Container 文档:kubernetes.io/docs/api-reference/v1.6/#container-v1-core
    猜你喜欢
    • 2011-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-25
    • 1970-01-01
    • 2020-08-27
    • 2015-08-29
    • 2016-02-22
    相关资源
    最近更新 更多