美文网首页Kubernetes
Kubernetes 配置Pod和容器(十三) 定义容器命令行和

Kubernetes 配置Pod和容器(十三) 定义容器命令行和

作者: YiQinGuo | 来源:发表于2017-06-01 16:23 被阅读339次

    定义容器命令行和参数

    这个章节展示了当运行了容器在pod里面如何给容器定义命令行和参数。

    创建Pod的时候定义命令行和参数

    当创建了一个pod,可以给运行在pod里面的容器定义命令行和参数。定义命令行,配置文件里面包含一个command字段。给命令行定义参数,配置文件里面包含一个args字段。当pod创建以后定义的command和args不可以修改。如果定义了command和args在配置文件里面,将覆盖镜像默认的command和args。如果只定义了args没有定义command,默认的的command将使用新的参数。

    在本次试验中,创建运行一个容器的Pod。这个pod的配置文件定义了一个command和两个参数。

    apiVersion: v1
    kind: Pod
    metadata:
      name: command-demo
      labels:
        purpose: demonstrate-command
    spec:
      containers:
      - name: command-demo-container
        image: debian
        command: ["printenv"]
        args: ["HOSTNAME", "KUBERNETES_PORT"]
    

    1.通过yaml文件创建pod:

    kubectl create -f test.yaml
    

    2.查看pod列表:

    kubectl get pods
    

    输出展示自定义命令行和参数的容器已经运行

    3.查看运行command容器里面的输出,查看pod的日志:

    kubectl logs command-demo
    

    输出展示了HOSTNAME和KUBENETES_PORT环境变量的值:

     command-demo
     tcp://10.3.240.1:443
    

    使用环境变量定义参数

    在之前的例子,直接通过字符串定义参数。除了直接用字符串定义以外,可以使用环境变量定义参数:

    env:
    - name: MESSAGE
      value: "hello world"
    command: ["/bin/echo"]
    args: ["$(MESSAGE)"]
    

    这意味这可以使用定义环境变量的任何技术来定义pod的参数,包括ConfigMaps和Secrets。

    这一:环境变量出现在括号$(VAR)中,这是在command或args中扩展变量所必须的。

    在shell里面运行command

    一些情况,需要在shell里面运行command。例如,你的命令由多个命令组合在一起,也可能是一个shell脚本。要在shell里面运行你的命令,可以这样包装:

    command: ["/bin/sh"]
    args: ["-c", "while true; do echo hello; sleep 10;done"]
    

    相关文章

      网友评论

        本文标题:Kubernetes 配置Pod和容器(十三) 定义容器命令行和

        本文链接:https://www.haomeiwen.com/subject/nheefxtx.html