以下内容均来自个人笔记并重新梳理,如有错误欢迎指正!
如果对您有帮助,烦请点赞、关注、转发!如果您有其他想要了解的,欢迎私信联系我~
基本介绍
在 Kubernetes 中,PersistentVolumeClaim(持久化卷声明,PVC)是一种与存储相关的资源对象,可以定义申请容量、访问模式等内容。
PVC 与 PV 共同构成了 Kubernetes 中持久存储的基础,它们之间的关系是请求与分配的关系:
工作原理
资源清单(示例)
# 静态存储供应模式
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: demo-pvc
spec:
storageClass: "" # 确保 PVC 绑定到由管理员预先创建的 PV,而不是由 SC 动态创建的新 PV
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi
------------------------------------------------------------------------------
# 动态存储供应模式
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: demo-pvc
spec:
storageClass: "demo-sc" # 确保 PVC 绑定到由 SC 动态创建的新 PV
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi
1、状态类型(Status)
PVC 对象创建后,通常会存在以下几种状态:
新建 PVC 对象后,Kubernetes 会根据资源清单的声明查找处于 Available 状态的 PV 对象
2、可能情形
3、Pod 挂载
# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: demo-deployment
spec:
replicas: 3
selector:
matchLabels:
app: demo-deployment
template:
metadata:
labels:
app: demo-deployment
spec:
containers:
- name: demo-container
image: demo-image:latest
ports:
- containerPort: 80
...
volumeMounts:
- name: pvc # 错误示范:data
mountPath: /data
subPath: data
- name: pvc # 错误示范:logs
mountPath: /logs
subPath: logs
volumes:
- name: pvc # 错误示范:volumes 有两个元素,分别是 data 和 logs
persistentVolumeClaim:
claimName: demo-pvc
...