日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Kubernetes存储之ConfigMap

發布時間:2025/3/21 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Kubernetes存储之ConfigMap 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

ConfigMap功能在Kubernetes1.2版本中引入,許多應用程序會從配置文件,命令行參數或環境變量中讀取配置信息,ConfigMap API給我們提供了向容器中注入配置信息的機制,ConfigMap可以被用來保存單個屬性,也可以用來保存整個配置文件或者JSON二進制對象

ConfigMap的創建

1.使用目錄創建

$ ls docs/user-guide/configmap/kubectl/ game.properties ui.properties$ cat docs/user-guide/configmap/kubectl/game.properties enemies=aliens lives=3 enemies.cheat=true enemies.cheat.level=noGoodRotten enemies.code.passphrase=UUDDLRLRBABAS secret.code.allowed=true secret.code.lives=30$ cat docs/user-guide/configmap/kubectl/ui.properties color.good=purple color.bad=yellow aoolw.textmode=true how.nice.to.look=fairlyNice$ kubectl create configmap game-config --from-file=docs/user-guide/configmap/kubectl

--from-file 指定在目錄下的所有文件都會被用在ConfigMap里面創建一個鍵值對,鍵的名字就是文件名,值就是文件的內容

2.使用文件創建

$ kubectl create configmap game-config --from-file=docs/user-guide/configmap/kubectl/game.properties $ kubectl get configmaps game-config -o yaml

3.使用字面值創建

使用文字值創建,利用--from-literal 參數傳遞配置信息,該參數可以使用多次,格式如下:

$ kubectl create configmap special-config --from-literal=special.how --from-literal=special.type=charm $ kubectl get configmaps special-config -o yaml

Pod中使用ConfigMap

  • 使用ConfigMap來替代環境變量
  • apiVersion: v1 kind: ConfigMap metadata:name :special-confignamespace: default data:special.how: veryspecial.type.charm apiVersion: v1 kind: ConfigMap metadata:name: env-confignamespace: default data:log_level: INFO apiVersion: v1 kind: Pod metadata:name: dapi-test-pod spec:containers:- name: test-containerimage: myapp:v1command: ["/bin/sh","-c","env"]env:- name: SPECIAL_LEVEL_KEYcalueFrom:configMapKeyRef:name: special-configkey: special.how- name: SPECIAL_TYPE_KEYvalueFrom:configMapKeyRef:name: special-configkey: special.typeenvFrom:- configMapRef:name: env-configrestartPolicy: Never
  • 用ConfigMap設置命令行參數
  • apiVersion: v1 kind: ConfigMap metadata:name: special-confignamespace: default data:special.how: veryspecial.type: charm apiVersion: v1 kind: Pod metadata:name: dapi-test-pod spec:containers:- name: test-containerimage: myapp:v1command: ["/bin/sh", "-c", "echo $(SPECIAL_LEVEL_KEY) $(SPECIAL_TYPE_KEY)"]env:- name: SPECIAL_LEVEL_KEYvalueFrom:configMapKeyRef:name: special-configkey: special.how- name: SPECIAL_TYPE_KEYcalueFrom:configMapKeyRef:name: special-configkey: special.typerestartPolicy: Never
  • 通過數據卷插件使用ConfigMap
  • apiVersion: v1 kind: ConfigMap metadata:name: special-confignamespace: dafault data:special.how: veryspecial.type: charm

    在數據卷里面使用這個ConfigMap,有不同的選項,最基本的就是將文件填入數據卷,在這個文件中,鍵就是文件名,值就是文件內容

    apiVersion: v1 kind: Pod metadata:name: dapi-test-pod spec:containers:- name: test-containerimage: myapp:v1command: ["/bin/sh","-c","cat /etc/config/special.how"]volumeMounts:- name: config-volumemountPath: /etc/configvolumes:- name: config-volumeconfigMap:name: special-configrestartPolicy: Never

    ConfigMap的熱更新

    apiVersion: v1 kind: ConfigMap metadata:name: log-confignamespace: default data:log_level: INFO --- apiVersion: extensions/v1beta1 kind: Deployment metadata:name: my-nginx spec:replicas: 1template:metadata:labels:run: my-nginxspec:containers:- name: my-nginximage: myapp:v1ports:- containerPort: 80volumeMounts:- name: config-volumemountPath: /etc/configvolumes:- name: config-volumeconfigMap:name: log-config $ kubectl exec 'kubectl get pods -l run-my-nginx -o=name | cut -d "/" -f2' --it -- cat /etc/config/log_level INFO

    修改ConfigMap

    $ kubectl edit configmap log-config

    修改log_level 的值為DEBUG 等待大約10秒,再次查看環境變量的值

    $ kubectl exec 'kubectl get pods -l run-my-nginx -o=name | cut -d "/" -f2' --it -- cat /etc/config/log_level DEBUG

    注意: ConfigMap如果以ENV的方式掛載至容器,修改ConfigMap并不會實現熱更新

    ConfigMap更新后滾動更新Pod

    更新ConfigMap目前并不會觸發相關Pod的滾動更新,可以通過修改pod annotations的方式強制觸發滾動更新

    $ kubectl patch deployment my-nginx --patch '{"spec": {"template": {"metadata": {"annotations":{"version/config": "20210516"}}}}}'

    更新ConfigMap后:

    • 使用該ConfigMap掛載的ENV不會同步更新
    • 使用該ConfigMap掛載的Volume中的數據需要一段時間(10s)才能同步更新

    總結

    以上是生活随笔為你收集整理的Kubernetes存储之ConfigMap的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。