》 在pod配置中,command和args欄位用於定義容器的命令和引數
1、command
》 command欄位用於定義容器啟動時要執行的命令,並覆蓋映象中預設的啟動命令。它的值是一個字串列表型別,其中第一個元素視為命令名稱,後續元素視為命令的引數
- command配置例項如下
[root@k8s-master k8s]# cat pod-examplel1.yaml
apiVersion: v1
kind: Pod
metadata:
labels:
app: pod-examplel1
name: pod-examplel1
namespace: default
spec:
containers:
- image: uhub.service.ucloud.cn/librarys/centos:7
name: test
command: ["echo", "hello world"]
- 上述配置中,容器啟動時執行 echo hello world 命令
[root@k8s-master k8s]# kubectl logs pod-examplel1
hello world
- 檢視pod時會發現pod在不斷地重啟
[root@k8s-master k8s]# kubectl get pod pod-examplel1
NAME READY STATUS RESTARTS AGE
pod-examplel1 0/1 CrashLoopBackOff 4 (82s ago) 2m57s
- 第四列RESTARTS記錄了重啟次數。這是正常現象,因為 centos7映象是一個系統映象,預設情況下,前臺沒有執行的程序,容器在啟動後則會退出。因此,需要應用程式被放在前臺啟動,或者執行一個無限迴圈shell語句,以保持容器執行而不退出,例如執行一個無線迴圈
command: ["/bin/bash", "-c", "while true; do sleep 1;done"]
/bin/bash 是shell直譯器的可執行檔案,-c是一個選型,用於指定要執行的命令。while true; do sleep 1;done是執行的具體命令
2、args
》 args欄位用於指定容器啟動時的命令引數。它的值是一個字串列表型別,每個元素被視為command的一個引數
cat pod-examplel2.yaml
apiVersion: v1
kind: Pod
metadata:
labels:
app: pod-examplel2
name: pod-examplel2
namespace: default
spec:
containers:
- image: uhub.service.ucloud.cn/librarys/centos:7
name: test
command: ["echo"]
args: ["hello world"]
》 上述配置中,容器啟動時執行echo命令,而該命令後跟的引數是透過args欄位傳遞的,最終輸出為 hello world
- 建立pod並檢視日誌
[root@k8s-master k8s]# kubectl apply -f pod-examplel2.yaml
pod/pod-examplel2 unchanged
[root@k8s-master k8s]# kubectl logs pod-examplel2
hello world