W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
本頁將展示如何為 Pod 中容器設(shè)置啟動時要執(zhí)行的命令及其參數(shù)。
你必須擁有一個 Kubernetes 的集群,同時你的 Kubernetes 集群必須帶有 kubectl 命令行工具。 建議在至少有兩個節(jié)點的集群上運行本教程,且這些節(jié)點不作為控制平面主機。 如果你還沒有集群,你可以通過 Minikube 構(gòu)建一個你自己的集群,或者你可以使用下面任意一個 Kubernetes 工具構(gòu)建:
要獲知版本信息,請輸入 ?kubectl version
?。
創(chuàng)建 Pod 時,可以為其下的容器設(shè)置啟動時要執(zhí)行的命令及其參數(shù)。如果要設(shè)置命令,就填寫在配置文件的 ?command
?字段下,如果要設(shè)置命令的參數(shù),就填寫在配置文件的 ?args
?字段下。一旦 Pod 創(chuàng)建完成,該命令及其參數(shù)就無法再進行更改了。
如果在配置文件中設(shè)置了容器啟動時要執(zhí)行的命令及其參數(shù),那么容器鏡像中自帶的命令與參數(shù)將會被覆蓋而不再執(zhí)行。如果配置文件中只是設(shè)置了參數(shù),卻沒有設(shè)置其對應(yīng)的命令,那么容器鏡像中自帶的命令會使用該新參數(shù)作為其執(zhí)行時的參數(shù)。
說明: 在有些容器運行時中,?
command
?字段對應(yīng) ?entrypoint
?,請參閱下面的 說明事項。
本示例中,將創(chuàng)建一個只包含單個容器的 Pod。在 Pod 配置文件中設(shè)置了一個命令與兩個參數(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"]
restartPolicy: OnFailure
kubectl apply -f https://k8s.io/examples/pods/commands.yaml
kubectl get pods
查詢結(jié)果顯示在 command-demo 這個 Pod 下運行的容器已經(jīng)啟動完成。
kubectl logs command-demo
日志中顯示了 HOSTNAME 與 KUBERNETES_PORT 這兩個環(huán)境變量的值:
command-demo
tcp://10.3.240.1:443
在上面的示例中,我們直接將一串字符作為命令的參數(shù)。除此之外,我們還可以將環(huán)境變量作為命令的參數(shù)。
env:
- name: MESSAGE
value: "hello world"
command: ["/bin/echo"]
args: ["$(MESSAGE)"]
這意味著你可以將那些用來設(shè)置環(huán)境變量的方法應(yīng)用于設(shè)置命令的參數(shù),其中包括了 ?ConfigMaps
?與 ?Secrets
?。
說明: 環(huán)境變量需要加上括號,類似于 ?
"$(VAR)"
?。這是在 ?command
?或 ?args
?字段使用變量的格式要求。
有時候,你需要在 Shell 腳本中運行命令。 例如,你要執(zhí)行的命令可能由多個命令組合而成,或者它就是一個 Shell 腳本。 這時,就可以通過如下方式在 Shell 中執(zhí)行命令:
command: ["/bin/sh"]
args: ["-c", "while true; do echo hello; sleep 10;done"]
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: