kubernetes configMap詳解
這篇博文,我們來說一說,關於在kubernetes的pod中自定義配置的問題。
我們知道,在幾乎所有的應用開發中,都會涉及到配置文件的變更,比如說在web的程序中,需要連接數據庫,緩存甚至是隊列等等。而我們的一個應用程序從寫第一行代碼開始,要經歷開發環境、測試環境、預發布環境只到最終的線上環境。而每一個環境都要定義其獨立的各種配置。如果我們不能很好的管理這些配置文件,你的運維工作將頓時變的無比的繁瑣。為此業內的一些大公司專門開發了自己的一套配置管理中心,如360的Qcon,百度的disconf等。kubernetes也提供了自己的一套方案,即ConfigMap。kubernetes通過ConfigMap來實現對容器中應用的配置管理。
創建ConfigMap
創建ConfigMap的方式有4種:
通過直接在命令行中指定configmap參數創建,即
--from-literal
通過指定文件創建,即將一個配置文件創建為一個ConfigMap
--from-file=<文件>
通過指定目錄創建,即將一個目錄下的所有配置文件創建為一個ConfigMap,
--from-file=<目錄>
通過yaml文件來創建,另一種是通過kubectl直接在命令行下創建。事先寫好標準的configmap的yaml文件,然後kubectl create -f 創建
使用ConfigMap
使用ConfigMap有三種方式,一種是通過環境變量的方式,直接傳遞pod,另一種是通過在pod的命令行下運行的方式,第三種是使用volume的方式掛載入到pod內
更新 ConfigMap 後:
使用該 ConfigMap 掛載的 Env 不會同步更新
使用該 ConfigMap 掛載的 Volume 中的數據需要一段時間(實測大概10秒)才能同步更新
ENV 是在容器啟動的時候註入的,啟動之後 kubernetes 就不會再改變環境變量的值,且同一個 namespace 中的 pod 的環境變量是不斷累加的,參考 Kubernetes中的服務發現與docker容器間的環境變量傳遞源碼探究。為了更新容器中使用 ConfigMap 掛載的配置,可以通過滾動更新 pod 的方式來強制重新掛載 ConfigMap,也可以在更新了 ConfigMap 後,先將副本數設置為 0,然後再擴容。
Kubernetes的ConfigMap說明
參考https://www.cnblogs.com/breezey/p/6582082.html
kubernetes configMap 熱更新測試
https://www.kubernetes.org.cn/3138.html
Kubernetes的ConfigMap詳解
參考https://blog.csdn.net/liukuan73/article/details/79492374
kubernetes configMap詳解