如何給執行在kubernetes(k8s) pod中的容器定義環境變數、命令列和引數?
必須有乙個kubernets集群,和乙個能和集群溝通的kubectl命令列工具。如果你還沒有集群,你可以用minikube建立乙個集群。
當你建立了乙個pod,你可以給你執行在pod中的容器設定環境變數。設定環境變數包含兩個欄位env和envfrom在配置檔案中。
在本次練習中,建了乙個執行了乙個container的pod。這個配置檔案給這個pod定義了乙個名為demo_greeting值為」hello from the environment」的環境變數。下面是這個pod的配置檔案:
apiversion: v1
kind: pod
metadata:
name: envar-demo
labels:
purpose: demonstrate-envars
spec:
containers:
– name: envar-demo-container
image: gcr.io/google-samples/node-hello:1.0
env:
– name: demo_greeting
value: 「hello from the environment」
kubectl create -f
kubectl get pods -l purpose=demonstrate-envars
kubectl exec -it envar-demo — /bin/bash
root@envar-demo:/# printenv
輸出類似於下面:
node_version=4.4.2
example_service_port_8080_tcp_addr=10.3.245.237
hostname=envar-demo
…demo_greeting=hello from the environment
5.退出shell,輸入exit。
必須有乙個kubernets集群,和乙個能和集群溝通的kubectl命令列工具。如果你還沒有集群,你可以用minikube建立乙個集群。
新建pod的時候定義命令列和引數
建立pod的時候,可以為執行在裡面的容器定義乙個命令列和引數。定義乙個命令列,在配置檔案中包含command欄位。給這個命令列定義引數包含乙個args欄位在配置檔案中。當pod建立之後該命令列和引數是不可以修改的。
如果在配置檔案中定義了命令列和引數,將覆蓋容器映象提供的預設引數。如果定義了引數但是沒有定義命令列,那麼引數將和預設的命令列一起使用。更多詳細資訊可以參考commands and capabilities。
在本次練習中,建立乙個執行乙個容器的pod。下面pod的配置檔案定義了乙個命令列和兩個引數。
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.建立pod基於yaml配置檔案:
kubectl create -f
2.獲取執行中的pod列表:
kubectl get pods
輸出顯示在command-demo pod中執行的容器已完成。
3.檢視命令列在容器裡面的輸出,可以檢視pod的日誌:
kubectl logs command-demo
輸出展示了hostname,kubernetes_root的環境變數的值:
command-demo
tcp:
使用環境變數定義命令列引數
在前面的例子中,直接通過字串定義了命令列引數。作為直接用字串替代方法,你可以用環境變數定義引數:
env:
– name: message
value: 「hello world」
command: [「/bin/echo」]
args: [「$(message)」]
這意味著你可以使用可用於定義環境變數的任何技術來定義pod的引數,包括configmaps 和 secrets。
注意:環境變數呈現在括號中,」$(var)」。這是在command或args欄位中擴充套件變數所必須的。
在shell中執行命令列
在一些情況,你需要在shell中執行你的命令。例如:你的命令可能是由多個命令組合在一起,或者是乙個shell指令碼。要在shell中執行你的命令,可以這樣包裝它:
command: [「/bin/sh」]
args: [「-c」, 「while true; do echo hello; sleep 10;done」]
本文轉移k8s技術社群-文件解讀 | k8s中的pod和容器配置(一)
文件解讀 K8S中的Pod和容器配置(二)
接上篇,如何給執行在kubernetes pod中的容器分配cpu和ram資源?給執行在kubernetes pod中的容器分配cpu和ram資源 開始之前 必須有乙個kubernetes集群,和乙個能和集群溝通的kubectl命令列工具。如果你還沒有集群,你可以用minikube建立乙個集群。給容...
k8s排程 原理 K8s排程原理和Pod生命週期
1 k8s排程原理 pod只存在某乙個物理節點上,可以執行多個container 2 pod的生命週期 暫停pod,可以暫停deployment kubectl get depolyment kubectl scale replicas 0 deployment 刪除pod。刪除之後,狀態變成suc...
k8s發布pod並設定容器引數
1 k8s部署es的時候需要初始化很多linux的核心引數。但是檔案系統掛載到pod容器中就會變成read only,難以進行操作實現需求。所以需要給pod privileged許可權,然後在容器的初始化指令碼或 中去修改sysctl引數。建立pod deployment daemonset等物件時...