1. 程式人生 > 其它 >【K8s任務】配置 Pod 使用 ConfigMap

【K8s任務】配置 Pod 使用 ConfigMap

參考:https://kubernetes.io/zh/docs/tasks/configure-pod-container/configure-pod-configmap/

ConfigMap 允許你將配置檔案與映象檔案分離,以使容器化的應用程式具有可移植性。 本頁提供了一系列使用示例,這些示例演示瞭如何建立 ConfigMap 以及配置 Pod 使用儲存在 ConfigMap 中的資料。

建立 ConfigMap

你可以使用 kubectl create configmap 或者在 kustomization.yaml 中的 ConfigMap 生成器 來建立 ConfigMap。注意,kubectl 從 1.14 版本開始支援 kustomization.yaml。

使用 kubectl create configmap 建立 ConfigMap

你可以使用 kubectl create configmap 命令基於 目錄、檔案 或者字面值來建立 ConfigMap:

kubectl create configmap <map-name> <data-source>

其中,<map-name> 是要設定的 ConfigMap 名稱,<data-source> 是要從中提取資料的目錄、 檔案或者字面值。 ConfigMap 物件的名稱必須是合法的 DNS 子域名.

在你基於檔案來建立 ConfigMap 時,<data-source> 中的鍵名預設取自 檔案的基本名,而對應的值則預設為檔案的內容。

你可以使用kubectl describe 或者 kubectl get 獲取有關 ConfigMap 的資訊。

基於目錄建立 ConfigMap

你可以使用 kubectl create configmap 基於同一目錄中的多個檔案建立 ConfigMap。 當你基於目錄來建立 ConfigMap 時,kubectl 識別目錄下基本名可以作為合法鍵名的 檔案,並將這些檔案打包到新的 ConfigMap 中。普通檔案之外的所有目錄項都會被 忽略(例如,子目錄、符號連結、裝置、管道等等)。

例如:

# 建立本地目錄
mkdir -p configure-pod-container/configmap/

# 將例項檔案下載到 `configure-pod-container/configmap/` 目錄
wget https://kubernetes.io/examples/configmap/game.properties -O configure-pod-container/configmap/game.properties
wget https://kubernetes.io/examples/configmap/ui.properties -O configure-pod-container/configmap/ui.properties

# 建立 configmap
kubectl create configmap game-config --from-file=configure-pod-container/configmap/

以上命令將 configure-pod-container/configmap 目錄下的所有檔案,也就是 game.properties 和 ui.properties 打包到 game-config ConfigMap 中。你可以使用下面的命令顯示 ConfigMap 的詳細資訊:

kubectl describe configmaps game-config

輸出類似以下內容:

Name:         game-config
Namespace:    default
Labels:       <none>
Annotations:  <none>

Data
====
game.properties:
----
enemies=aliens
lives=3
enemies.cheat=true
enemies.cheat.level=noGoodRotten
secret.code.passphrase=UUDDLRLRBABAS
secret.code.allowed=true
secret.code.lives=30
ui.properties:
----
color.good=purple
color.bad=yellow
allow.textmode=true
how.nice.to.look=fairlyNice

configure-pod-container/configmap/ 目錄中的 game.properties 和 ui.properties 檔案出現在 ConfigMap 的 data 部分。

kubectl get configmaps game-config -o yaml

輸出類似以下內容:

apiVersion: v1
kind: ConfigMap
metadata:
  creationTimestamp: 2016-02-18T18:52:05Z
  name: game-config
  namespace: default
  resourceVersion: "516"
  selfLink: /api/v1/namespaces/default/configmaps/game-config
  uid: b4952dc3-d670-11e5-8cd0-68f728db1985
data:
  game.properties: |
    enemies=aliens
    lives=3
    enemies.cheat=true
    enemies.cheat.level=noGoodRotten
    secret.code.passphrase=UUDDLRLRBABAS
    secret.code.allowed=true
    secret.code.lives=30    
  ui.properties: |
    color.good=purple
    color.bad=yellow
    allow.textmode=true
    how.nice.to.look=fairlyNice    

基於檔案建立 ConfigMap

你可以使用 kubectl create configmap 基於單個檔案或多個檔案建立 ConfigMap。

例如:

kubectl create configmap game-config-2 --from-file=configure-pod-container/configmap/game.properties

將產生以下 ConfigMap:

kubectl describe configmaps game-config-2

輸出類似以下內容:

Name:         game-config-2
Namespace:    default
Labels:       <none>
Annotations:  <none>

Data
====
game.properties:
----
enemies=aliens
lives=3
enemies.cheat=true
enemies.cheat.level=noGoodRotten
secret.code.passphrase=UUDDLRLRBABAS
secret.code.allowed=true
secret.code.lives=30

你可以多次使用 --from-file 引數,從多個數據源建立 ConfigMap。

kubectl create configmap game-config-2 --from-file=configure-pod-container/configmap/game.properties --from-file=configure-pod-container/configmap/ui.properties

描述上面建立的 game-config-2 configmap

kubectl describe configmaps game-config-2

輸出類似以下內容:

Name:         game-config-2
Namespace:    default
Labels:       <none>
Annotations:  <none>

Data
====
game.properties:
----
enemies=aliens
lives=3
enemies.cheat=true
enemies.cheat.level=noGoodRotten
secret.code.passphrase=UUDDLRLRBABAS
secret.code.allowed=true
secret.code.lives=30
ui.properties:
----
color.good=purple
color.bad=yellow
allow.textmode=true
how.nice.to.look=fairlyNice

當 kubectl 基於非 ASCII 或 UTF-8 的輸入建立 ConfigMap 時, 該工具將這些輸入放入 ConfigMap 的 binaryData 欄位,而不是 data 中。 同一個 ConfigMap 中可同時包含文字資料和二進位制資料來源。 如果你想檢視 ConfigMap 中的 binaryData 鍵(及其值), 你可以執行 kubectl get configmap -o jsonpath='{.binaryData}'

使用 --from-env-file 選項從環境檔案建立 ConfigMap,例如:

Env 檔案包含環境變數列表。 其中適用以下語法規則:

    Env 檔案中的每一行必須為 VAR=VAL 格式。
    以#開頭的行(即註釋)將被忽略。
    空行將被忽略。
    引號不會被特殊處理(即它們將成為 ConfigMap 值的一部分)。

將示例檔案下載到 configure-pod-container/configmap/ 目錄

wget https://kubernetes.io/examples/configmap/game-env-file.properties -O configure-pod-container/configmap/game-env-file.properties

env 檔案 game-env-file.properties 如下所示:

cat configure-pod-container/configmap/game-env-file.properties

enemies=aliens
lives=3
allowed="true"

kubectl create configmap game-config-env-file \
       --from-env-file=configure-pod-container/configmap/game-env-file.properties

將產生以下 ConfigMap:

kubectl get configmap game-config-env-file -o yaml

輸出類似以下內容:

apiVersion: v1
kind: ConfigMap
metadata:
  creationTimestamp: 2017-12-27T18:36:28Z
  name: game-config-env-file
  namespace: default
  resourceVersion: "809965"
  selfLink: /api/v1/namespaces/default/configmaps/game-config-env-file
  uid: d9d1ca5b-eb34-11e7-887b-42010a8002b8
data:
  allowed: '"true"'
  enemies: aliens
  lives: "3"

注意: 當多次使用 --from-env-file 來從多個數據源建立 ConfigMap 時,僅僅最後一個 env 檔案有效。

下面是一個多次使用 --from-env-file 引數的示例:

# 將樣本檔案下載到 `configure-pod-container/configmap/` 目錄
wget https://k8s.io/examples/configmap/ui-env-file.properties -O configure-pod-container/configmap/ui-env-file.properties

# 建立 configmap
kubectl create configmap config-multi-env-files \
        --from-env-file=configure-pod-container/configmap/game-env-file.properties \
        --from-env-file=configure-pod-container/configmap/ui-env-file.properties

將產生以下 ConfigMap:

kubectl get configmap config-multi-env-files -o yaml

輸出類似以下內容:

apiVersion: v1
kind: ConfigMap
metadata:
  creationTimestamp: 2017-12-27T18:38:34Z
  name: config-multi-env-files
  namespace: default
  resourceVersion: "810136"
  selfLink: /api/v1/namespaces/default/configmaps/config-multi-env-files
  uid: 252c4572-eb35-11e7-887b-42010a8002b8
data:
  color: purple
  how: fairlyNice
  textmode: "true"

定義從檔案建立 ConfigMap 時要使用的鍵

在使用 --from-file 引數時,你可以定義在 ConfigMap 的 data 部分出現鍵名, 而不是按預設行為使用檔名:

kubectl create configmap game-config-3 --from-file=<my-key-name>=<path-to-file>

<my-key-name> 是你要在 ConfigMap 中使用的鍵名,<path-to-file> 是你想要鍵表示資料來源檔案的位置。

例如:

kubectl create configmap game-config-3 --from-file=game-special-key=configure-pod-container/configmap/game.properties

將產生以下 ConfigMap:

kubectl get configmaps game-config-3 -o yaml

輸出類似以下內容:

apiVersion: v1
kind: ConfigMap
metadata:
  creationTimestamp: 2016-02-18T18:54:22Z
  name: game-config-3
  namespace: default
  resourceVersion: "530"
  selfLink: /api/v1/namespaces/default/configmaps/game-config-3
  uid: 05f8da22-d671-11e5-8cd0-68f728db1985
data:
  game-special-key: |
    enemies=aliens
    lives=3
    enemies.cheat=true
    enemies.cheat.level=noGoodRotten
    secret.code.passphrase=UUDDLRLRBABAS
    secret.code.allowed=true
    secret.code.lives=30    

根據字面值建立 ConfigMap

你可以將 kubectl create configmap 與 --from-literal 引數一起使用,從命令列定義文字值:

kubectl create configmap special-config --from-literal=special.how=very --from-literal=special.type=charm

你可以傳入多個鍵值對。命令列中提供的每對鍵值在 ConfigMap 的 data 部分中均表示為單獨的條目。

kubectl get configmaps special-config -o yaml

輸出類似以下內容:

apiVersion: v1
kind: ConfigMap
metadata:
  creationTimestamp: 2016-02-18T19:14:38Z
  name: special-config
  namespace: default
  resourceVersion: "651"
  selfLink: /api/v1/namespaces/default/configmaps/special-config
  uid: dadce046-d673-11e5-8cd0-68f728db1985
data:
  special.how: very
  special.type: charm

基於生成器建立 ConfigMap

自 1.14 開始,kubectl 開始支援 kustomization.yaml。 你還可以基於生成器建立 ConfigMap,然後將其應用於 API 伺服器上建立物件。 生成器應在目錄內的 kustomization.yaml 中指定。

基於檔案生成 ConfigMap

例如,要從 configure-pod-container/configmap/kubectl/game.properties 檔案生成一個 ConfigMap:

# 建立包含 ConfigMapGenerator 的 kustomization.yaml 檔案
cat <<EOF >./kustomization.yaml
configMapGenerator:
- name: game-config-4
  files:
  - configure-pod-container/configmap/kubectl/game.properties
EOF

使用 kustomization 目錄建立 ConfigMap 物件:

kubectl apply -k .

configmap/game-config-4-m9dm2f92bt created

你可以檢查 ConfigMap 是這樣建立的:

kubectl get configmap

NAME                       DATA   AGE
game-config-4-m9dm2f92bt   1      37s


kubectl describe configmaps/game-config-4-m9dm2f92bt
Name:         game-config-4-m9dm2f92bt
Namespace:    default
Labels:       <none>
Annotations:  kubectl.kubernetes.io/last-applied-configuration:
                {"apiVersion":"v1","data":{"game.properties":"enemies=aliens\nlives=3\nenemies.cheat=true\nenemies.cheat.level=noGoodRotten\nsecret.code.p...

Data
====
game.properties:
----
enemies=aliens
lives=3
enemies.cheat=true
enemies.cheat.level=noGoodRotten
secret.code.passphrase=UUDDLRLRBABAS
secret.code.allowed=true
secret.code.lives=30
Events:  <none>

請注意,生成的 ConfigMap 名稱具有通過對內容進行雜湊而附加的字尾, 這樣可以確保每次修改內容時都會生成新的 ConfigMap。

定義從檔案生成 ConfigMap 時要使用的鍵

在 ConfigMap 生成器,你可以定義一個非檔名的鍵名。 例如,從 configure-pod-container/configmap/game.properties 檔案生成 ConfigMap, 但使用 game-special-key 作為鍵名:

# 建立包含 ConfigMapGenerator 的 kustomization.yaml 檔案
cat <<EOF >./kustomization.yaml
configMapGenerator:
- name: game-config-5
  files:
  - game-special-key=configure-pod-container/configmap/kubectl/game.properties
EOF

使用 Kustomization 目錄建立 ConfigMap 物件。

kubectl apply -k .

configmap/game-config-5-m67dt67794 created

從字面值生成 ConfigMap

要基於字串 special.type=charm 和 special.how=very 生成 ConfigMap, 可以在 kusotmization.yaml 中配置 ConfigMap 生成器:

# 建立帶有 ConfigMapGenerator 的 kustomization.yaml 檔案
cat <<EOF >./kustomization.yaml
configMapGenerator:
- name: special-config-2
  literals:
  - special.how=very
  - special.type=charm
EOF

應用 Kustomization 目錄建立 ConfigMap 物件。

kubectl apply -k .

configmap/special-config-2-c92b5mmcf2 created

使用 ConfigMap 資料定義容器環境變數

使用單個 ConfigMap 中的資料定義容器環境變數

    1.在 ConfigMap 中將環境變數定義為鍵值對:

    kubectl create configmap special-config --from-literal=special.how=very

    2.將 ConfigMap 中定義的 special.how 值分配給 Pod 規範中的 SPECIAL_LEVEL_KEY 環境變數。
    pods/pod-single-configmap-env-variable.yaml [Copy pods/pod-single-configmap-env-variable.yaml to clipboard]

    apiVersion: v1
    kind: Pod
    metadata:
      name: dapi-test-pod
    spec:
      containers:
        - name: test-container
          image: k8s.gcr.io/busybox
          command: [ "/bin/sh", "-c", "env" ]
          env:
            # Define the environment variable
            - name: SPECIAL_LEVEL_KEY
              valueFrom:
                configMapKeyRef:
                  # The ConfigMap containing the value you want to assign to SPECIAL_LEVEL_KEY
                  name: special-config
                  # Specify the key associated with the value
                  key: special.how
      restartPolicy: Never

    建立 Pod:

    kubectl create -f https://kubernetes.io/examples/pods/pod-single-configmap-env-variable.yaml

    現在,Pod 的輸出包含環境變數 SPECIAL_LEVEL_KEY=very。

使用來自多個 ConfigMap 的資料定義容器環境變數

    1.與前面的示例一樣,首先建立 ConfigMap。
    configmap/configmaps.yaml [Copy configmap/configmaps.yaml to clipboard]

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: special-config
      namespace: default
    data:
      special.how: very
    ---
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: env-config
      namespace: default
    data:
      log_level: INFO

    建立 ConfigMap:

    kubectl create -f https://kubernetes.io/examples/configmap/configmaps.yaml

    2.在 Pod 規範中定義環境變數。
    pods/pod-multiple-configmap-env-variable.yaml [Copy pods/pod-multiple-configmap-env-variable.yaml to clipboard]

    apiVersion: v1
    kind: Pod
    metadata:
      name: dapi-test-pod
    spec:
      containers:
        - name: test-container
          image: k8s.gcr.io/busybox
          command: [ "/bin/sh", "-c", "env" ]
          env:
            - name: SPECIAL_LEVEL_KEY
              valueFrom:
                configMapKeyRef:
                  name: special-config
                  key: special.how
            - name: LOG_LEVEL
              valueFrom:
                configMapKeyRef:
                  name: env-config
                  key: log_level
      restartPolicy: Never

    建立 Pod:

    kubectl create -f https://kubernetes.io/examples/pods/pod-multiple-configmap-env-variable.yaml

    現在,Pod 的輸出包含環境變數 SPECIAL_LEVEL_KEY=very 和 LOG_LEVEL=INFO。

將 ConfigMap 中的所有鍵值對配置為容器環境變數

說明: Kubernetes v1.6 和更高版本支援此功能。

    1.建立一個包含多個鍵值對的 ConfigMap。
    configmap/configmap-multikeys.yaml [Copy configmap/configmap-multikeys.yaml to clipboard]

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: special-config
      namespace: default
    data:
      SPECIAL_LEVEL: very
      SPECIAL_TYPE: charm

    建立 ConfigMap:

    kubectl create -f https://kubernetes.io/examples/configmap/configmap-multikeys.yaml

    2.使用 envFrom 將所有 ConfigMap 的資料定義為容器環境變數,ConfigMap 中的鍵成為 Pod 中的環境變數名稱。
    pods/pod-configmap-envFrom.yaml [Copy pods/pod-configmap-envFrom.yaml to clipboard]

    apiVersion: v1
    kind: Pod
    metadata:
      name: dapi-test-pod
    spec:
      containers:
        - name: test-container
          image: k8s.gcr.io/busybox
          command: [ "/bin/sh", "-c", "env" ]
          envFrom:
          - configMapRef:
              name: special-config
      restartPolicy: Never

    建立 Pod:

    kubectl create -f https://kubernetes.io/examples/pods/pod-configmap-envFrom.yaml

    現在,Pod 的輸出包含環境變數 SPECIAL_LEVEL=very 和 SPECIAL_TYPE=charm。

在 Pod 命令中使用 ConfigMap 定義的環境變數

你可以使用 $(VAR_NAME) Kubernetes 替換語法在容器的 command 和 args 部分中使用 ConfigMap 定義的環境變數。

例如,以下 Pod 規範
pods/pod-configmap-env-var-valueFrom.yaml [Copy pods/pod-configmap-env-var-valueFrom.yaml to clipboard]

apiVersion: v1
kind: Pod
metadata:
  name: dapi-test-pod
spec:
  containers:
    - name: test-container
      image: k8s.gcr.io/busybox
      command: [ "/bin/sh", "-c", "echo $(SPECIAL_LEVEL_KEY) $(SPECIAL_TYPE_KEY)" ]
      env:
        - name: SPECIAL_LEVEL_KEY
          valueFrom:
            configMapKeyRef:
              name: special-config
              key: SPECIAL_LEVEL
        - name: SPECIAL_TYPE_KEY
          valueFrom:
            configMapKeyRef:
              name: special-config
              key: SPECIAL_TYPE
  restartPolicy: Never

通過執行下面命令建立 Pod:

kubectl create -f https://kubernetes.io/examples/pods/pod-configmap-env-var-valueFrom.yaml

在 test-container 容器中產生以下輸出:

very charm

將 ConfigMap 資料新增到一個卷中

如基於檔案建立 ConfigMap 中所述,當你使用 --from-file 建立 ConfigMap 時,檔名成為儲存在 ConfigMap 的 data 部分中的鍵, 檔案內容成為鍵對應的值。

本節中的示例引用了一個名為 special-config 的 ConfigMap,如下所示:
configmap/configmap-multikeys.yaml [Copy configmap/configmap-multikeys.yaml to clipboard]

apiVersion: v1
kind: ConfigMap
metadata:
  name: special-config
  namespace: default
data:
  SPECIAL_LEVEL: very
  SPECIAL_TYPE: charm

建立 ConfigMap:

kubectl create -f https://kubernetes.io/examples/configmap/configmap-multikeys.yaml

使用儲存在 ConfigMap 中的資料填充資料卷

在 Pod 規約的 volumes 部分下新增 ConfigMap 名稱。 這會將 ConfigMap 資料新增到指定為 volumeMounts.mountPath 的目錄(在本例中為 /etc/config)。 command 部分引用儲存在 ConfigMap 中的 special.level。
pods/pod-configmap-volume.yaml [Copy pods/pod-configmap-volume.yaml to clipboard]

apiVersion: v1
kind: Pod
metadata:
  name: dapi-test-pod
spec:
  containers:
    - name: test-container
      image: k8s.gcr.io/busybox
      command: [ "/bin/sh", "-c", "ls /etc/config/" ]
      volumeMounts:
      - name: config-volume
        mountPath: /etc/config
  volumes:
    - name: config-volume
      configMap:
        # Provide the name of the ConfigMap containing the files you want
        # to add to the container
        name: special-config
  restartPolicy: Never

建立 Pod:

kubectl create -f https://kubernetes.io/examples/pods/pod-configmap-volume.yaml

Pod 執行時,命令 ls /etc/config/ 產生下面的輸出:

SPECIAL_LEVEL
SPECIAL_TYPE

注意: 如果在 /etc/config/ 目錄中有一些檔案,它們將被刪除。

說明: 文字資料會使用 UTF-8 字元編碼的形式展現為檔案。如果使用其他字元編碼, 可以使用 binaryData。

將 ConfigMap 資料新增到資料卷中的特定路徑

使用 path 欄位為特定的 ConfigMap 專案指定預期的檔案路徑。 在這裡,ConfigMap中,鍵值 SPECIAL_LEVEL 的內容將掛載在 config-volume 資料卷中 /etc/config/keys 檔案下。
pods/pod-configmap-volume-specific-key.yaml [Copy pods/pod-configmap-volume-specific-key.yaml to clipboard]

apiVersion: v1
kind: Pod
metadata:
  name: dapi-test-pod
spec:
  containers:
    - name: test-container
      image: k8s.gcr.io/busybox
      command: [ "/bin/sh","-c","cat /etc/config/keys" ]
      volumeMounts:
      - name: config-volume
        mountPath: /etc/config
  volumes:
    - name: config-volume
      configMap:
        name: special-config
        items:
        - key: SPECIAL_LEVEL
          path: keys
  restartPolicy: Never

建立Pod:

kubectl create -f https://kubernetes.io/examples/pods/pod-configmap-volume-specific-key.yaml

當 pod 執行時,命令 cat /etc/config/keys 產生以下輸出:

very

注意: 如前,/etc/config/ 目錄中所有先前的檔案都將被刪除。

對映鍵以指定路徑和檔案許可權

你可以通過指定鍵名到特定目錄的投射關係,也可以逐個檔案地設定訪問許可權。 Secret 使用者指南 中對這一語法提供瞭解釋。

掛載的 ConfigMap 將自動更新

更新已經在資料卷中使用的 ConfigMap 時,已對映的鍵最終也會被更新。 kubelet 在每次定期同步時都會檢查已掛載的 ConfigMap 是否是最新的。 但是,它使用其本地的基於 TTL 的快取來獲取 ConfigMap 的當前值。 因此,從更新 ConfigMap 到將新鍵對映到 Pod 的總延遲可能與 kubelet 同步週期 + ConfigMap 在 kubelet 中快取的 TTL 一樣長。

說明: 使用 ConfigMap 作為 subPath 的資料卷將不會收到 ConfigMap 更新。

瞭解 ConfigMap 和 Pod

ConfigMap API 資源將配置資料儲存為鍵值對。 資料可以在 Pod 中使用,也可以提供系統元件(如控制器)的配置。 ConfigMap 與 Secret 類似, 但是提供了一種使用不包含敏感資訊的字串的方法。 使用者和系統元件都可以在 ConfigMap 中儲存配置資料。

說明: ConfigMap 應該引用屬性檔案,而不是替換它們。可以將 ConfigMap 理解為類似於 Linux /etc 目錄及其內容的東西。例如,如果你從 ConfigMap 建立 Kubernetes 卷,則 ConfigMap 中的每個資料項都由該資料卷中的單個檔案表示。

ConfigMap 的 data 欄位包含配置資料。如下例所示,它可以簡單 (如用 --from-literal 的單個屬性定義)或複雜 (如用 --from-file 的配置檔案或 JSON blob定義)。

apiVersion: v1
kind: ConfigMap
metadata:
  creationTimestamp: 2016-02-18T19:14:38Z
  name: example-config
  namespace: default
data:
  # 使用 --from-literal 定義的簡單屬性
  example.property.1: hello
  example.property.2: world
  # 使用 --from-file 定義複雜屬性的例子
  example.property.file: |-
    property.1=value-1
    property.2=value-2
    property.3=value-3    

限制

    在 Pod 規範中引用之前,必須先建立一個 ConfigMap(除非將 ConfigMap 標記為"可選")。 如果引用的 ConfigMap 不存在,則 Pod 將不會啟動。同樣,引用 ConfigMap 中不存在的鍵也會阻止 Pod 啟動。

    如果你使用 envFrom 基於 ConfigMap 定義環境變數,那麼無效的鍵將被忽略。 可以啟動 Pod,但無效名稱將記錄在事件日誌中(InvalidVariableNames)。 日誌訊息列出了每個跳過的鍵。例如:

    kubectl get events

    輸出與此類似:

    LASTSEEN FIRSTSEEN COUNT NAME          KIND  SUBOBJECT  TYPE      REASON                            SOURCE                MESSAGE
    0s       0s        1     dapi-test-pod Pod              Warning   InvalidEnvironmentVariableNames   {kubelet, 127.0.0.1}  Keys [1badkey, 2alsobad] from the EnvFrom configMap default/myconfig were skipped since they are considered invalid environment variable names.

    ConfigMap 位於特定的名字空間 中。每個 ConfigMap 只能被同一名字空間中的 Pod 引用.

    你不能將 ConfigMap 用於 靜態 Pod, 因為 Kubernetes 不支援這種用法。
作者:Varden 出處:http://www.cnblogs.com/varden/ 本文內容如有雷同,請聯絡作者! 本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連線,否則保留追究法律責任的權利。