W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
本頁展示了如何為 Kubernetes Pod 中的容器定義相互依賴的環(huán)境變量。
你必須擁有一個(gè) Kubernetes 的集群,同時(shí)你的 Kubernetes 集群必須帶有 kubectl 命令行工具。 建議在至少有兩個(gè)節(jié)點(diǎn)的集群上運(yùn)行本教程,且這些節(jié)點(diǎn)不作為控制平面主機(jī)。 如果你還沒有集群,你可以通過 Minikube 構(gòu)建一個(gè)你自己的集群,或者你可以使用下面任意一個(gè) Kubernetes 工具構(gòu)建:
當(dāng)創(chuàng)建一個(gè) Pod 時(shí),你可以為運(yùn)行在 Pod 中的容器設(shè)置相互依賴的環(huán)境變量。 設(shè)置相互依賴的環(huán)境變量,你就可以在配置清單文件的 ?env
?的 ?value
?中使用 $(VAR_NAME)。
在本練習(xí)中,你會(huì)創(chuàng)建一個(gè)單容器的 Pod。 此 Pod 的配置文件定義了一個(gè)已定義常用用法的相互依賴的環(huán)境變量。 下面是 Pod 的配置清單:
apiVersion: v1
kind: Pod
metadata:
name: dependent-envars-demo
spec:
containers:
- name: dependent-envars-demo
args:
- while true; do echo -en '\n'; printf UNCHANGED_REFERENCE=$UNCHANGED_REFERENCE'\n'; printf SERVICE_ADDRESS=$SERVICE_ADDRESS'\n';printf ESCAPED_REFERENCE=$ESCAPED_REFERENCE'\n'; sleep 30; done;
command:
- sh
- -c
image: busybox:1.28
env:
- name: SERVICE_PORT
value: "80"
- name: SERVICE_IP
value: "172.17.0.1"
- name: UNCHANGED_REFERENCE
value: "$(PROTOCOL)://$(SERVICE_IP):$(SERVICE_PORT)"
- name: PROTOCOL
value: "https"
- name: SERVICE_ADDRESS
value: "$(PROTOCOL)://$(SERVICE_IP):$(SERVICE_PORT)"
- name: ESCAPED_REFERENCE
value: "$(PROTOCOL)://$(SERVICE_IP):$(SERVICE_PORT)"
kubectl apply -f https://k8s.io/examples/pods/inject/dependent-envars.yaml
pod/dependent-envars-demo created
kubectl get pods dependent-envars-demo
NAME READY STATUS RESTARTS AGE
dependent-envars-demo 1/1 Running 0 9s
kubectl logs pod/dependent-envars-demo
UNCHANGED_REFERENCE=$(PROTOCOL)://172.17.0.1:80
SERVICE_ADDRESS=https://172.17.0.1:80
ESCAPED_REFERENCE=$(PROTOCOL)://172.17.0.1:80
如上所示,你已經(jīng)定義了 ?SERVICE_ADDRESS
?的正確依賴引用, ?UNCHANGED_REFERENCE
?的錯(cuò)誤依賴引用, 并跳過了 ?ESCAPED_REFERENCE
?的依賴引用。
如果環(huán)境變量被引用時(shí)已事先定義,則引用可以正確解析, 比如 ?SERVICE_ADDRESS
?的例子。
當(dāng)環(huán)境變量未定義或僅包含部分變量時(shí),未定義的變量會(huì)被當(dāng)做普通字符串對(duì)待, 比如 ?UNCHANGED_REFERENCE
?的例子。 注意,解析不正確的環(huán)境變量通常不會(huì)阻止容器啟動(dòng)。
?$(VAR_NAME)
? 這樣的語法可以用兩個(gè) ?$
? 轉(zhuǎn)義,既:?$$(VAR_NAME)
?。 無論引用的變量是否定義,轉(zhuǎn)義的引用永遠(yuǎn)不會(huì)展開。 這一點(diǎn)可以從上面 ?ESCAPED_REFERENCE
?的例子得到印證。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: