部署、擴充與監控 Kubernetes 儲存

Kubernetes 入門

Frank Heilmann

Platform Architect and Freelance Instructor

Persistent Volumes 與 Persistent Volume Claims

Persistent Volumes and Persistent Volume Claims

  • 儲存的基礎物件:Persistent Volumes (PV),與 Pod 並行維護
  • 透過 Persistent Volume Claims (PVC) 將 PV 對應到 Pod
  • 已對應的 PV 讓 Pod 停止、被刪除或重啟時仍可保留資料
  • PV 使儲存與運算分離
Kubernetes 入門

Storage Classes

Storage Classes

  • PV 供應方式:
    • 由 Kubernetes 管理員手動建立
    • 由一般使用者動態建立
  • 動態供應透過 Storage Classes (SC), 無需人工介入
  • Storage Classes (SC)

    • 由 Kubernetes 管理員定義
    • 多種類型(不同延遲,如 SDD vs HDD、 不同備份策略)
  • 不確定時就用 Storage Classes ;-)

Kubernetes 入門

整合起來看

  • 讓儲存運作的三個物件:

    • PersistentVolume
    • PersistentVolumeClaim
    • StorageClass
  • 有持久化需求的 Pod 會使用 PersistentVolumeClaim

  • 此 PVC 會讓 Kubernetes 為該 Pod 建立 PersistentVolume
  • PersistentVolume 會對應到提出需求的 Pod
  • 會使用命名的 StorageClass,定義如延遲與 備份策略等細節
  • 這個 PersistentVolume(連同其資料)會在 Pod 終止後依然存在
Kubernetes 入門

Manifest 範例片段

具有 PersistentVolume 的 Pod

apiVersion: v1
kind: Pod
...

spec: containers: ... volumeMounts: - name: pv-mydata mountPath: /mydata
volumes: - name: pv-mydata persistentVolumeClaim: claimName: datacamp-pvc

具 StorageClass 的 PersistentVolumeClaim

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: datacamp-pvc

spec: storageClassName: "standard" accessModes: - ReadWriteOnce
resources: requests: storage: 5Gi
Kubernetes 入門

「kubectl」儲存相關指令

  • kubectl 提供完整指令可用於建立與監控 Kubernetes 儲存
  • 範例:
    • kubectl get sc 列出所有可用的 Storage Classes
    • kubectl get pvc 列出所有已部署的 Persistent Volume Claims
    • kubectl get pv 列出所有已部署的 Persistent Volumes
    • 如常,kubectl apply -f <manifest> 可用於部署 Manifest 中宣告的儲存資源。
Kubernetes 入門

一起來練習吧!

Kubernetes 入門

Preparing Video For Download...