Kubernetes 存储
在Kubernetes中,存储是一个关键概念,用于管理容器化应用程序的数据持久性。与容器本身的生命周期不同,存储需要独立于容器的生命周期,以确保数据在容器重启或迁移时不会丢失。Kubernetes提供了多种存储解决方案,帮助用户管理持久化数据。
1. 存储的核心概念
Kubernetes中的存储主要围绕以下几个核心组件展开:
- 持久卷(Persistent Volume, PV):集群中的一块存储资源,由管理员预先配置或动态分配。
- 持久卷声明(Persistent Volume Claim, PVC):用户对存储资源的请求,类似于Pod对计算资源的需求。
- 存储类(StorageClass):定义存储的类型和属性,允许动态创建PV。
1.1 持久卷(PV)
持久卷是集群中的一块存储资源,可以由管理员手动创建,也可以通过存储类动态分配。PV独立于Pod的生命周期,即使Pod被删除,PV中的数据仍然存在。
apiVersion: v1
kind: PersistentVolume
metadata:
name: example-pv
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
hostPath:
path: /mnt/data
1.2 持久卷声明(PVC)
持久卷声明是用户对存储资源的请求。Pod通过PVC来使用PV。PVC会根据请求的存储大小和访问模式,自动绑定到合适的PV。
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: example-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
1.3 存储类(StorageClass)
存储类定义了存储的类型和属性,允许动态创建PV。不同的存储类可以对应不同的存储后端,例如本地存储、云存储等。
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: fast
provisioner: kubernetes.io/gce-pd
parameters:
type: pd-ssd