K8S中创建deployment控制器pod存储持久化(创建PV和PVC并配置NFS共享存储)
时间:2025-2-26 17:47 作者:Anglei 分类: 虚拟化
在Kubernetes(K8s)中,使用YAML文件创建Deployment的Pod时,通常不会直接在Deployment YAML文件中定义PersistentVolume(PV)和PersistentVolumeClaim(PVC)。PV和PVC是Kubernetes中用于管理持久化存储的资源对象,它们与Pod或Deployment是分离的,但可以通过PVC在Pod中进行挂载使用。
以下是如何分别创建PV和PVC,并在Deployment中使用PVC的详细步骤和解释:
一、创建PersistentVolume(PV)
PV是由管理员创建的存储资源,它独立于使用它的Pod的生命周期。创建PV的YAML文件示例如下:
apiVersion: v1
kind: PersistentVolume
metadata:
name: example-pv
spec:
capacity:
storage: 10Gi # 存储容量
accessModes:
- ReadWriteOnce # 访问模式
persistentVolumeReclaimPolicy: Retain # 回收策略
nfs: # 使用NFS作为后端存储
server: 192.168.1.100 # NFS服务器地址
path: /path/to/nfs/share # NFS共享目录
在这个示例中,我们创建了一个名为example-pv
的PV,存储容量为10Gi,访问模式为ReadWriteOnce(即只能被一个Pod以读写模式挂载),回收策略为Retain(即保留数据,手动删除PV)。后端存储使用的是NFS。
二、创建PersistentVolumeClaim(PVC)
PVC是用户存储的请求,它与Pod相似,但消耗的是PV资源。创建PVC的YAML文件示例如下:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: example-pvc
spec:
accessModes:
- ReadWriteOnce # 请求的访问模式
resources:
requests:
storage: 5Gi # 请求的存储容量
在这个示例中,我们创建了一个名为example-pvc
的PVC,请求的访问模式为ReadWriteOnce,存储容量为5Gi(注意:这里请求的容量应小于或等于某个可用的PV的容量)。
三、在Deployment中使用PVC
在Deployment的YAML文件中,我们可以通过volumeMounts字段将PVC挂载到Pod的容器中。示例如下:
apiVersion: apps/v1
kind: Deployment
metadata:
name: example-deployment
spec:
replicas: 1
selector:
matchLabels:
app: example
template:
metadata:
labels:
app: example
spec:
containers:
- name: example-container
image: nginx
volumeMounts:
- mountPath: /usr/share/nginx/html # 挂载路径
name: example-volume # 引用下方定义的volume名称
volumes:
- name: example-volume
persistentVolumeClaim:
claimName: example-pvc # 引用上面创建的PVC名称
在这个示例中,我们创建了一个名为example-deployment
的Deployment,它包含一个Pod,Pod中有一个容器使用了名为example-pvc
的PVC进行存储挂载。
解释
- PV:是存储资源的抽象,由管理员创建和管理,它包含了存储实现的细节(如NFS、iSCSI或云存储等)。
- PVC:是用户对存储资源的需求申请,它不需要关心底层的存储实现细节,只需要指定所需的存储容量和访问模式等。
- 在Deployment中使用PVC:通过在Deployment的YAML文件中定义volumeMounts和volumes字段,将PVC挂载到Pod的容器中,从而实现持久化存储。
综上所述,虽然PV和PVC不是直接在Deployment YAML文件中定义的,但可以通过PVC在Deployment的Pod中进行存储挂载,从而实现持久化存储的需求。

推荐阅读:
![]() 路过(0) |
![]() 雷人(0) |
![]() 握手(0) |
![]() 鲜花(0) |
![]() 鸡蛋(0) |