定义容器命令行和参数
这个章节展示了当运行了容器在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"]
网友评论