Kubernetes 為容器設(shè)置環(huán)境變量

2022-06-13 13:42 更新

為容器設(shè)置環(huán)境變量

本頁(yè)將展示如何為 kubernetes Pod 下的容器設(shè)置環(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)建:

為容器設(shè)置一個(gè)環(huán)境變量

創(chuàng)建 Pod 時(shí),可以為其下的容器設(shè)置環(huán)境變量。通過配置文件的 ?env ?或者 ?envFrom ?字段來設(shè)置環(huán)境變量。

本示例中,將創(chuàng)建一個(gè)只包含單個(gè)容器的 Pod。Pod 的配置文件中設(shè)置環(huán)境變量的名稱為 ?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"
    - name: DEMO_FAREWELL
      value: "Such a sweet sorrow"
  1. 基于配置清單創(chuàng)建一個(gè) Pod:
  2. kubectl apply -f https://k8s.io/examples/pods/inject/envars.yaml
    
  3. 獲取一下當(dāng)前正在運(yùn)行的 Pods 信息:
    kubectl get pods -l purpose=demonstrate-envars
    

    查詢結(jié)果應(yīng)為:

    NAME            READY     STATUS    RESTARTS   AGE
    envar-demo      1/1       Running   0          9s
  4. 列出 Pod 容器的環(huán)境變量:
    kubectl exec envar-demo -- printenv
    

    打印結(jié)果應(yīng)為:

    NODE_VERSION=4.4.2
    EXAMPLE_SERVICE_PORT_8080_TCP_ADDR=10.3.245.237
    HOSTNAME=envar-demo
    ...
    DEMO_GREETING=Hello from the environment
    DEMO_FAREWELL=Such a sweet sorrow

說明: 通過 ?env ?或 ?envFrom ?字段設(shè)置的環(huán)境變量將覆蓋容器鏡像中指定的所有環(huán)境變量。

說明: 環(huán)境變量可以互相引用,但是順序很重要。 使用在相同上下文中定義的其他變量的變量必須在列表的后面。 同樣,請(qǐng)避免使用循環(huán)引用。

在配置中使用環(huán)境變量

你在 Pod 的配置中定義的環(huán)境變量可以在配置的其他地方使用, 例如可用在為 Pod 的容器設(shè)置的命令和參數(shù)中。 在下面的示例配置中,環(huán)境變量 ?GREETING ?,?HONORIFIC ?和 ?NAME ?分別設(shè)置為 ?Warm greetings to? , ?The Most Honorable? 和 ?Kubernetes?。然后這些環(huán)境變量在傳遞給容器 ?env-print-demo? 的 CLI 參數(shù)中使用。

apiVersion: v1
kind: Pod
metadata:
  name: print-greeting
spec:
  containers:
  - name: env-print-demo
    image: bash
    env:
    - name: GREETING
      value: "Warm greetings to"
    - name: HONORIFIC
      value: "The Most Honorable"
    - name: NAME
      value: "Kubernetes"
    command: ["echo"]
    args: ["$(GREETING) $(HONORIFIC) $(NAME)"]

創(chuàng)建后,命令 ?echo Warm greetings to The Most Honorable Kubernetes? 將在容器中運(yùn)行。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)