新聞中心
定義相互依賴的環(huán)境變量
本頁(yè)展示了如何為 Kubernetes Pod 中的容器定義相互依賴的環(huán)境變量。

創(chuàng)新互聯(lián)是專業(yè)的普安網(wǎng)站建設(shè)公司,普安接單;提供網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行普安網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!
在開(kāi)始之前
你必須擁有一個(gè) Kubernetes 的集群,同時(shí)你的 Kubernetes 集群必須帶有 kubectl 命令行工具。 建議在至少有兩個(gè)節(jié)點(diǎn)的集群上運(yùn)行本教程,且這些節(jié)點(diǎn)不作為控制平面主機(jī)。 如果你還沒(méi)有集群,你可以通過(guò) Minikube 構(gòu)建一個(gè)你自己的集群,或者你可以使用下面任意一個(gè) Kubernetes 工具構(gòu)建:
- Katacoda
- 玩轉(zhuǎn) Kubernetes
為容器定義相互依賴的環(huán)境變量
當(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)"
- 依據(jù)清單創(chuàng)建 Pod:
- 列出運(yùn)行的 Pod:
kubectl get pods dependent-envars-demoNAME READY STATUS RESTARTS AGE dependent-envars-demo 1/1 Running 0 9s - 檢查 Pod 中運(yùn)行容器的日志:
kubectl logs pod/dependent-envars-demoUNCHANGED_REFERENCE=$(PROTOCOL)://172.17.0.1:80 SERVICE_ADDRESS=https://172.17.0.1:80 ESCAPED_REFERENCE=$(PROTOCOL)://172.17.0.1:80
kubectl apply -f https://K8S.io/examples/pods/inject/dependent-envars.yamlpod/dependent-envars-demo created
如上所示,你已經(jīng)定義了 ?SERVICE_ADDRESS ?的正確依賴引用, ?UNCHANGED_REFERENCE ?的錯(cuò)誤依賴引用, 并跳過(guò)了 ?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)? 這樣的語(yǔ)法可以用兩個(gè) ?$? 轉(zhuǎn)義,既:?$$(VAR_NAME)?。 無(wú)論引用的變量是否定義,轉(zhuǎn)義的引用永遠(yuǎn)不會(huì)展開(kāi)。 這一點(diǎn)可以從上面 ?ESCAPED_REFERENCE ?的例子得到印證。
標(biāo)題名稱:創(chuàng)新互聯(lián)kubernetes教程:Kubernetes 定義相互依賴的環(huán)境變量
轉(zhuǎn)載來(lái)源:http://www.dlmjj.cn/article/dpgeisj.html


咨詢
建站咨詢
