k8s的pv和pvc创建

本文讲解了如何在Kubernetes中设置NFS存储,涉及静态PV创建、PVC定义,以及动态PV创建步骤。

//NFS使用PV和PVC

1、配置nfs存储
2、定义PV 

 实现 下图的pv和pvc测试

 pv的定义

这里定义5个PV,并且定义挂载的路径以及访问模式,还有PV划分的大小

vim /pv.yaml

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv001
spec:
  capacity:
    storage: 1Gi
  accessModes:
  - ReadWriteOnce
  - ReadWriteMany
  #persistentVolumeReclaimPolicy: Recycle
  #storageClassName: slow
  nfs:
    path: /opt/k8s/v1
    server: 192.168.47.60
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv002
spec:
  capacity:
    storage: 2Gi
  accessModes:
  - ReadWriteOnce
  #persistentVolumeReclaimPolicy: Recycle
  #storageClassName: slow
  nfs:
    path: /opt/k8s/v2
    server: 192.168.47.60
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv003
spec:
  capacity:
    storage: 2Gi
  accessModes:
  - ReadWriteOnce
  - ReadWriteMany
  #persistentVolumeReclaimPolicy: Recycle
  #storageClassName: slow
  nfs:
    path: /opt/k8s/v3
    server: 192.168.47.60
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv004
spec:
  capacity:
    storage: 4Gi
  accessModes:
  - ReadWriteOnce
  - ReadWriteMany
  #persistentVolumeReclaimPolicy: Recycle
  #storageClassName: slow
  nfs:
    path: /opt/k8s/v4
    server: 192.168.47.60
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv005
spec:
  capacity:
    storage: 5Gi
  accessModes:
  - ReadWriteOnce
  - ReadWriteMany
  #persistentVolumeReclaimPolicy: Recycle
  #storageClassName: slow
  nfs:
    path: /opt/k8s/v5
    server: 192.168.47.60
---

创建使用静态pv 

 定义PVC

这里定义了pvc的访问模式为多路读写,该访问模式必须在前面pv定义的访问模式之中。定义PVC申请的大小为2Gi,此时PVC会自动去匹配多路读写且大小为2Gi的PV,匹配成功获取PVC的状态即为Bound

 

 

 

 

测试访问

在存储服务器上创建index.html,并写入数据,通过访问Pod进行查看,可以获取到相应的页面

 

 

 

 实现 NFS 的动态 PV 创建

配置nfs存储

 

创建存储卷插件的pod 

 

 创建 StorageClass,负责建立 PVC 并调用 NFS provisioner 进行预定的工作,并让 PV 与 PVC 建立关联

 

 

 

 

<think>我们正在讨论KubernetesPVPVC的扩容方法。根据提供的引用,我们可以总结出以下关键点:1.**StorageClass配置**:首先,StorageClass必须允许卷扩容。这通过在StorageClass中设置`allowVolumeExpansion:true`来实现(如引用[4]所示)。2.**PVC扩容**:在PVC创建后,可以直接编辑PVC定义,增加`spec.resources.requests.storage`字段的值(引用[3][4]提到了PVC的扩容操作)。3.**底层存储支持**:扩容操作依赖于底层存储插件(如ceph-csi)是否支持卷扩容(引用[3]提到基于ceph-csi的扩容原理)。具体步骤:1.**检查StorageClass**:确保StorageClass已设置`allowVolumeExpansion:true`。2.**编辑PVC**:使用`kubectleditpvc<pvc-name>`命令,增加请求的存储大小。3.**验证扩容**:查看PVCPV的状态,确认容量已更新。注意:某些存储系统(如本地卷)可能不支持动态扩容(引用[1]提到local-storage的provisioner为`kubernetes.io/no-provisioner`,通常不支持扩容)。相关问题:1.如何检查一个StorageClass是否允许卷扩容?2.PVC扩容后,底层PV的容量是如何自动调整的?3.哪些类型的存储(如NFS、CephRBD)支持PVC动态扩容?4.如果StorageClass不支持扩容,还有其他方法扩容PV吗?</think>### Kubernetes PV/PVC 扩容方法详解 在 Kubernetes 中对 PersistentVolume (PV) PersistentVolumeClaim (PVC) 进行扩容,需要满足以下核心条件并执行相应步骤: #### 前提条件 1. **存储类(StorageClass)支持扩容** 必须在 StorageClass 中显式启用卷扩容功能: ```yaml apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: standard provisioner: kubernetes.io/<your-provisioner> allowVolumeExpansion: true # 关键配置 ``` 此配置允许该 StorageClass 创建PVC 进行扩容[^4]。 2. **底层存储系统支持** 实际存储后端(如 Ceph RBD、AWS EBS、GCP PD 等)必须支持在线扩容功能。例如 Ceph CSI 插件需要特定版本支持 RBD 卷扩容[^3]。 #### 扩容操作步骤 1. **修改 PVC 存储请求** 直接编辑 PVC 定义,增加 `spec.resources.requests.storage` 值: ```bash kubectl edit pvc my-pvc ``` ```yaml spec: resources: requests: storage: 20Gi # 从原值(如10Gi)修改为新值 ``` 2. **触发自动扩容流程** 提交修改后,Kubernetes 将自动执行: - CSI 驱动程序接收扩容请求 - 底层存储系统调整卷容量 - PV 对象自动更新容量值 ```bash kubectl get pvc my-pvc -w # 监控状态变化 ``` 3. **文件系统扩展(可选)** 对于块存储类型,需在 Pod 内扩展文件系统: ```bash # 进入运行中的Pod kubectl exec -it <pod-name> -- bash # 扩展文件系统(以ext4为例) resize2fs /dev/<device-path> ``` #### 验证扩容 ```bash # 检查PVC容量 kubectl get pvc my-pvc -o=jsonpath=&#39;{.status.capacity.storage}&#39; # 检查PV容量 kubectl get pv $(kubectl get pvc my-pvc -o=jsonpath=&#39;{.spec.volumeName}&#39;) -o=jsonpath=&#39;{.spec.capacity.storage}&#39; ``` #### 注意事项 1. **动态卷绑定模式** 使用 `volumeBindingMode: WaitForFirstConsumer` 时,扩容可能需重启 Pod[^1]。 2. **存储系统限制** 本地存储(local-volume)等插件通常不支持动态扩容[^3]。 3. **应用感知** 有状态应用(如数据库)需确保支持在线存储扩容,否则需重启 Pod。 4. **回滚限制** PVC 扩容不可逆,无法缩减存储空间。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值