美文网首页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