定義容器命令行和參數(shù)
這個(gè)章節(jié)展示了當(dāng)運(yùn)行了容器在pod里面如何給容器定義命令行和參數(shù)菱阵。
創(chuàng)建Pod的時(shí)候定義命令行和參數(shù)
當(dāng)創(chuàng)建了一個(gè)pod,可以給運(yùn)行在pod里面的容器定義命令行和參數(shù)叔遂。定義命令行咏连,配置文件里面包含一個(gè)command字段诫舅。給命令行定義參數(shù)笛辟,配置文件里面包含一個(gè)args字段功氨。當(dāng)pod創(chuàng)建以后定義的command和args不可以修改。如果定義了command和args在配置文件里面手幢,將覆蓋鏡像默認(rèn)的command和args疑故。如果只定義了args沒有定義command,默認(rèn)的的command將使用新的參數(shù)弯菊。
在本次試驗(yàn)中,創(chuàng)建運(yùn)行一個(gè)容器的Pod踱阿。這個(gè)pod的配置文件定義了一個(gè)command和兩個(gè)參數(shù)管钳。
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文件創(chuàng)建pod:
kubectl create -f test.yaml
2.查看pod列表:
kubectl get pods
輸出展示自定義命令行和參數(shù)的容器已經(jīng)運(yùn)行
3.查看運(yùn)行command容器里面的輸出,查看pod的日志:
kubectl logs command-demo
輸出展示了HOSTNAME和KUBENETES_PORT環(huán)境變量的值:
command-demo
tcp://10.3.240.1:443
使用環(huán)境變量定義參數(shù)
在之前的例子软舌,直接通過字符串定義參數(shù)才漆。除了直接用字符串定義以外,可以使用環(huán)境變量定義參數(shù):
env:
- name: MESSAGE
value: "hello world"
command: ["/bin/echo"]
args: ["$(MESSAGE)"]
這意味這可以使用定義環(huán)境變量的任何技術(shù)來定義pod的參數(shù)佛点,包括ConfigMaps和Secrets醇滥。
這一:環(huán)境變量出現(xiàn)在括號$(VAR)中,這是在command或args中擴(kuò)展變量所必須的超营。
在shell里面運(yùn)行command
一些情況鸳玩,需要在shell里面運(yùn)行command。例如演闭,你的命令由多個(gè)命令組合在一起不跟,也可能是一個(gè)shell腳本。要在shell里面運(yùn)行你的命令米碰,可以這樣包裝:
command: ["/bin/sh"]
args: ["-c", "while true; do echo hello; sleep 10;done"]