k8s中configmap的使用方法


  ConfigMaps允許您將配置構件與映像內容解耦,以保持容器化應用程序的可移植性。本文展示如何創建configmap,修改configmap以及如何把configmap應用於pod.

創建configmap


1.configmap的yaml文件 myconfigmap.yaml,該文件包含兩個configmap,以第一個configmap為例說明。special-config是該configmap的名稱,default是該configmap所屬的域名。該configmap僅包含一個數據special.how,值是very.內容如下:

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

2.創建configmap,以下命令都可以

kubectl create -f myconfigmap.yaml
kubectl create configmap gameconfig --from-file=myconfigmap.yaml -n test

第一行命令完全按照yaml文件中的設定來可以同時創建多個configmap;而第二條命令是gameconfig是新創建的configmap的名稱,只能創建出一個configmap,其中包含多個數值,test是namespace. 正常會輸出

configmap/gameconfig created

如果報錯Error from server (NotFound): namespaces "test" not found則需要先創建該域名。
3.查看configmap,假設我們之前用kubectl create -f myconfigmap.yaml創建了configmap,那么查看結果如下

[root@k8s-master sj]# kubectl get configmap --all-namespaces
NAMESPACE     NAME                                 DATA   AGE
default       env-config                           1      2s
default       special-config                       1      2s

[root@k8s-master sj]# kubectl describe configmap special-config
Name:         special-config
Namespace:    default
Labels:       <none>
Annotations:  <none>

Data
====
special.how:
----
very
Events:  <none>

使用configmap中的數值來定義容器的環境變量


用configmap中的數值來創建一個容器環境變量

1.定義一個configmap數值,可以用如上的方法定義,也可以使用如下的命令:

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

2.在Pod specification中,環境變量 SPECIAL_LEVEL_KEY 的值由configmap的special.how來定義,同樣的也可以使用多個configmap中多個值來定義多個環境變量。pod yaml文件 configmap-pod.yaml 如下所示:

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 configmap-pod.yaml
現在,Pod的啟動輸出了它所有的環境變量其中包括變量 SPECIAL_LEVEL_KEY=veryLOG_LEVEL=INFO


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM