kubernetes 儲存

本地儲存(emptyDir和 hostPath)

  • emptyDir
    • 是host上的一個空目錄
    • 生存週期與pod一致
    • 適合 Pod 中的容器需要臨時共享存儲空間的場景
  • hostPath
    • 掛載host上指定目錄
    • 生存週期與host一致

持久化儲存(PV, PVC和StorageClass)

  • PVC 描述的,是 Pod 想要使用的持久化存儲的屬性,比如存儲的大小、讀寫權限等
  • PV 描述的,則是一個具體的 Volume 的屬性,比如 Volume 的類型、掛載目錄、遠程存儲服務器地址等
    • PVcluster level的,只能被同一個namespace下的PVC使用
  • PV和 PVC的關係
    • PV和PVC解耦的儲存的實現和使用,類似於 “接口”和“實現” 的思想
    • 用戶只要通過PVC聲明需要的儲存size和**access mode(rw, ro)**即可,它會自動與集羣中已經存在的PV去匹配
    • 儲存的實現細節交給管理員通過PV或者StorageClass配置
      • 避免了因爲向開發者暴露過多的存儲系統細節而帶來的隱患
      • 也意味着出現事故時可以更容易定位問題和明確責任

在這裏插入圖片描述

  • 不應該把一個宿主機上的目錄當作 PV 使用
    • 本地目錄的存儲行爲完全不可控,它所在的磁盤隨時都可能被應用寫滿,甚至造成整個宿主機宕機
  • 靜態分配:預分配一些儲存並綁定給PV
    • 缺點在於難以預測用戶真實需求,造成資源浪費
  • 動態分配:不預分配PV,而聲明StorageClass
    • StorageClass是一個包含PV創建信息的儲存模板, 用於自動創建 PV
    • 包含的內容
      • PV的屬性,比如儲存類型,大小等
      • 創建PV使用到的儲存插件
    • PVC指定使用的儲存模板,k8s自動生成所需的PV並綁定到PVC

儲存架構

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

拓撲調度

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

配置

在這裏插入圖片描述

  • 管理一些可變配置信息
    • 應用的配置文件、環境變量、命令行參數
  • 讓可變配置和容器鏡像進行解耦,保證了容器的可移植性

configMap

  • configMap必須在pod前創建,否則pod無法創建成功

  • 因爲ETCD數據寫入大小限制,ConfigMap數據大小要求小於1MB

  • volume形式掛載到pod的配置支持動態更新,而通過環境變量掛載的不支持

    • 數據放在etcd中,kubelet 組件在定時維護這些 Volume
    • 更新可能會有一定的延時
  • pod 引入 ConfigMap 的時候,必須是相同的 Namespace 中的
    在這裏插入圖片描述

secret

  • Secret 的用法幾乎與 ConfigMap完全相同
  • 用戶名、密碼等數據是以Secret對象的方式交給 Kubernetes 保存
    • 數據必須是經過 Base64 轉碼的,以免出現明文密碼
    • 僅僅是經過了轉碼,而並沒有被加密,在真正的生產環境中,需要開啓 Secret 的加密插件

在這裏插入圖片描述

ServiceAccount

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