kubernetes集群系列資料13--儲存機制介紹
阿新 • • 發佈:2021-06-18
一、K8S儲存機制介紹
k8s的stateful控制組件是為有狀態服務而設計的,有狀態服務需要對資料進行儲存;k8s有4種儲存機制,主要為:
1)configMap:為K8S儲存配置檔案而設計的,configMap可以用來儲存單個屬性,也可以用來儲存整個配置檔案或者JSON二進位制大物件。
2)secret:為了解決密碼、token、金鑰等敏感資料的配置加密而設計,而不需要將這些敏感資料暴露到映象或pod.spec中,可以volume或環境變數的方式使用。
3)volume:為容器提供共享儲存卷,避免發生容器崩潰重啟後容器中檔案丟失的問題。當pod不存在時,volume也不復存在;k8s支援多種型別的卷,pod可使用任意數量的卷。
4)persistentVolume/persistentVolumeClai:
二、configMap介紹
許多應用程式從配置檔案、命令列引數或環境變數中讀取配置資訊,而configMap API給我們提供了向容器注入配置資訊的機制。
傳統生成環境中,配置檔案註冊中心負責向n個叢集n個節點應用程式的提供配置資訊,該中心需要自行構建,沒有較好的開源方案。應用程式向配置檔案註冊中心提供本節點的資訊(如:IP、hostname),配置檔案註冊中心根據規則為該節點應用程式更新配置,應用程式按照新配置進行過載後執行。
k8s叢集中,configMap充當了配置檔案註冊中心的作用。pod向configMap申請配置,configMap為各pod下發不同的配置。
configMap建立配置有3中方式:使用目錄建立、使用檔案建立、使用字面值建立。
1、使用目錄建立configMap
mkdir configMapFile;cd configMapFile cat > game.properties <<eof enemies=aliens lives=3 enemies.cheat=true enemies.cheat.level=noGoodRotten enemies.code.passphrase=UUDDLRLRBABAS enemies.code.allowed=true enemies.code.lives=30 eof cat >ui.properties<<eof color.good=purple color.bad=yellow allow.textmode=true how.nice.to.look=fairlyNice eof kubectl create configmap game-config --from-file=../configMapFile #建立configMap; kubectl get configmap #檢視configMap; kubectl get cm game-config -o yaml #以yaml格式輸出game-config配置; kubectl get cm game-config -o json #以yaml格式輸出game-config配置;
2、使用檔案建立configMap
kubectl create configmap game-config2 --from-file=../configMapFile/game.properties #使用檔案建立configMap; kubectl get cm game-config2 -o yaml
多次使用檔案建立,與在該目錄下一次性批量建立效果相同。
3、使用字面量建立configMap
kubectl create configmap game-config3 --from-literal=special.how=very --from-literal=special.type=charm #使用字面量建立configMap; kubectl get cm game-config3 -o yaml