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滾動更新後會重新分配)