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

創(chuàng)新互聯是專業(yè)的普安網站建設公司,普安接單;提供網站設計、成都網站建設,網頁設計,網站設計,建網站,PHP網站建設等專業(yè)做網站服務;采用PHP框架,可快速的進行普安網站開發(fā)網頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網站,專業(yè)的做網站團隊,希望更多企業(yè)前來合作!
在開始之前
你必須擁有一個 Kubernetes 的集群,同時你的 Kubernetes 集群必須帶有 kubectl 命令行工具。 建議在至少有兩個節(jié)點的集群上運行本教程,且這些節(jié)點不作為控制平面主機。 如果你還沒有集群,你可以通過 Minikube 構建一個你自己的集群,或者你可以使用下面任意一個 Kubernetes 工具構建:
- Katacoda
- 玩轉 Kubernetes
為容器定義相互依賴的環(huán)境變量
當創(chuàng)建一個 Pod 時,你可以為運行在 Pod 中的容器設置相互依賴的環(huán)境變量。 設置相互依賴的環(huán)境變量,你就可以在配置清單文件的 ?env ?的 ?value ?中使用 $(VAR_NAME)。
在本練習中,你會創(chuàng)建一個單容器的 Pod。 此 Pod 的配置文件定義了一個已定義常用用法的相互依賴的環(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)"
- 依據清單創(chuàng)建 Pod:
- 列出運行的 Pod:
kubectl get pods dependent-envars-demoNAME READY STATUS RESTARTS AGE dependent-envars-demo 1/1 Running 0 9s - 檢查 Pod 中運行容器的日志:
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
如上所示,你已經定義了 ?SERVICE_ADDRESS ?的正確依賴引用, ?UNCHANGED_REFERENCE ?的錯誤依賴引用, 并跳過了 ?ESCAPED_REFERENCE ?的依賴引用。
如果環(huán)境變量被引用時已事先定義,則引用可以正確解析, 比如 ?SERVICE_ADDRESS ?的例子。
當環(huán)境變量未定義或僅包含部分變量時,未定義的變量會被當做普通字符串對待, 比如 ?UNCHANGED_REFERENCE ?的例子。 注意,解析不正確的環(huán)境變量通常不會阻止容器啟動。
?$(VAR_NAME)? 這樣的語法可以用兩個 ?$? 轉義,既:?$$(VAR_NAME)?。 無論引用的變量是否定義,轉義的引用永遠不會展開。 這一點可以從上面 ?ESCAPED_REFERENCE ?的例子得到印證。
網站欄目:創(chuàng)新互聯kubernetes教程:Kubernetes 定義相互依賴的環(huán)境變量
文章地址:http://fisionsoft.com.cn/article/dpgeisj.html


咨詢
建站咨詢
