«

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进行存储挂载。

解释

  1. PV:是存储资源的抽象,由管理员创建和管理,它包含了存储实现的细节(如NFS、iSCSI或云存储等)。
  2. PVC:是用户对存储资源的需求申请,它不需要关心底层的存储实现细节,只需要指定所需的存储容量和访问模式等。
  3. 在Deployment中使用PVC:通过在Deployment的YAML文件中定义volumeMounts和volumes字段,将PVC挂载到Pod的容器中,从而实现持久化存储。

综上所述,虽然PV和PVC不是直接在Deployment YAML文件中定义的,但可以通过PVC在Deployment的Pod中进行存储挂载,从而实现持久化存储的需求。

本文完结,相关标签: NFS k8s pv pvc

 版权所有:Anglei
 文章标题:K8S中创建deployment控制器pod存储持久化(创建PV和PVC并配置NFS共享存储)
 除非注明,本站文章如未特殊说明均为 MAXADA社区知识库 原创,且版权所有,请勿用于任何商业用途。

推荐阅读:

看完后感想如何?

路过(0)

雷人(0)

握手(0)

鲜花(0)

鸡蛋(0)
分享到: