1. 程式人生 > 其它 >kubernetes集群系列資料13--儲存機制介紹

kubernetes集群系列資料13--儲存機制介紹

一、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

三、secret介紹