部署、扩缩与监控 Kubernetes 存储

Kubernetes 入门

Frank Heilmann

Platform Architect and Freelance Instructor

PersistentVolume 与 PersistentVolumeClaim

持久卷与持久卷声明

  • 存储的基础对象:PersistentVolume (PV),与 Pod 并行维护
  • 通过 PersistentVolumeClaim (PVC) 将 PV 映射到 Pod
  • 映射后的 PV 使 Pod 停止、被杀或重启时数据仍可保留
  • PV 实现存储与计算解耦
Kubernetes 入门

StorageClass(存储类)

存储类

  • PV 供给方式:
    • 由 Kubernetes 管理员手动供给
    • 由普通用户动态供给
  • 动态供给通过 StorageClass (SC) 自动完成
  • StorageClass (SC)

    • 由 Kubernetes 管理员定义
    • 类型多样(如延迟差异:SSD vs HDD,备份策略不同)
  • 不确定时,优先使用 StorageClass

Kubernetes 入门

整体流程

  • 仅三类对象让存储工作起来:

    • PersistentVolume
    • PersistentVolumeClaim
    • StorageClass
  • 需要持久数据的 Pod 使用 PersistentVolumeClaim

  • 该 PVC 促使 Kubernetes 为 Pod 创建 PersistentVolume
  • PersistentVolume 映射到发起声明的 Pod
  • 使用命名的 StorageClass,定义 PV 的延迟与备份策略等细节
  • 即使 Pod 终止,此 PersistentVolume(及其数据)仍保留
Kubernetes 入门

清单片段

带 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 列出所有 StorageClass
    • kubectl get pvc 列出所有已部署的 PersistentVolumeClaim
    • kubectl get pv 列出所有已部署的 PersistentVolume
    • 常规用法:kubectl apply -f <manifest> 可部署清单中声明的存储资源。
Kubernetes 入门

Passons à la pratique !

Kubernetes 入门

Preparing Video For Download...