kubernetes存儲篇 —— Configmap

1. ConfigMap配置管理

1.1 ConfigMap作用及使用場景

  • ConfigMap用於保存配置數據,以鍵值對形式存儲
  • ConfigMap 資源提供了向 Pod 注入配置數據的方法
  • 旨在讓鏡像和配置文件解耦,以便實現鏡像的可移植性和可複用性
    典型的使用場景
  • 填充環境變量的值
  • 設置容器內的命令行參數
  • 填充卷的配置文件

1.2 ConfigMap的創建

創建方式

  • 使用字面值創建
  • 使用文件創建
  • 使用目錄創建
  • 編寫configmap的yaml文件創建

字面值創建

kubectl create configmap my-config --from-literal=key1=config1 --from-literal=key2=config2

在這裏插入圖片描述
使用文件創建

kubectl create configmap my-config-2 --from-file=/etc/resolv.conf

在這裏插入圖片描述
使用目錄創建

kubectl create configmap my-config-3 --from-file=test

在這裏插入圖片描述
編寫configmap的yaml文件
在這裏插入圖片描述

kubectl create -f cm-test.yaml

在這裏插入圖片描述

1.3 如何使用configmap

  • 通過環境變量的方式直接傳遞給pod
  • 通過在pod的命令行下運行的方式
  • 作爲volume的方式掛載到pod內

使用configmap設置環境變量

vim pod1.yaml

在這裏插入圖片描述

kubectl create -f pod1.yaml 

在這裏插入圖片描述

vim pod2.yaml

在這裏插入圖片描述

kubectl create -f pod2.yaml

在這裏插入圖片描述
使用conigmap設置命令行參數

vim pod2.yaml

在這裏插入圖片描述
在這裏插入圖片描述
通過數據卷(volume)使用configmap

vim pod3.yaml

在這裏插入圖片描述
在這裏插入圖片描述

1.4 configmap熱更新

vim pod4.yaml

在這裏插入圖片描述

kubectl create -f pod4.yaml 

在這裏插入圖片描述
查看
在這裏插入圖片描述
修改

kubectl edit cm cm-test-config

在這裏插入圖片描述
等待幾秒查看
在這裏插入圖片描述
數據已經修改成功並更新
configmap熱更新後,並不會觸發相關Pod的滾動更新,需要手動觸發

kubectl patch deployments.apps my-nginx --patch '{"spec": {"template": {"metadata": {"annotations": {"version/config": "20200625"}}}}}'
  • 每次通過修改“version/config”來觸發Pod滾動更新
  • 使用configmap掛載的env環境變量是不會更新的

1.5 實驗

vim nginx.conf

在這裏插入圖片描述

kubectl create configmap nginxconf --from-file=nginx.conf

在這裏插入圖片描述

vim nginx.yaml

在這裏插入圖片描述

kubectl apply -f nginx.yaml 

在這裏插入圖片描述
訪問8080端口
在這裏插入圖片描述
修改端口(熱更新)

kubectl edit cm nginxconf

在這裏插入圖片描述
訪問修改後的端口
在這裏插入圖片描述
訪問不成功

kubectl exec my-nginx-5f6dc9664-cmlz8 -- cat /etc/nginx/conf.d/nginx.conf | grep listen

在這裏插入圖片描述
查看發現數據熱更新已經生效
這時候訪問8080不成功,手動觸發Pod滾動更新, 這樣才能再次加載nginx.conf配置文件
在這裏插入圖片描述
重新訪問(注意,這裏的ip需要重新查看,pod滾動更新後會重新分配)
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章