使用 Persistent Volumes 管理存储

简介: 使用 Persistent Volumes 管理存储

在 Kubernetes 中,Persistent Volumes (PV) 和 Persistent Volume Claims (PVC) 是用来管理存储的抽象概念。PV 是集群中的一块存储,它已经被管理员预先配置好或通过存储类动态创建。PVC 是用户对存储的请求,它指定了存储的大小、访问模式等要求。Kubernetes 会自动匹配合适的 PV 来满足 PVC 的需求。

以下是使用 Persistent Volumes 管理存储的基本步骤:

  1. 创建 Persistent Volume (PV)

    • PV 是集群中的一块存储,可以是本地磁盘、网络存储(如 NFS、iSCSI、云存储等)。管理员需要预先创建 PV 资源。
    • 示例 PV 配置文件 pv.yaml
      apiVersion: v1
      kind: PersistentVolume
      metadata:
        name: my-pv
      spec:
        capacity:
          storage: 5Gi
        accessModes:
          - ReadWriteOnce
        hostPath:
          path: "/mnt/data"
      
    • 应用 PV 配置:
      kubectl apply -f pv.yaml
      
  2. 创建 Persistent Volume Claim (PVC)

    • PVC 是用户对存储的请求。它指定了所需的存储大小、访问模式等。
    • 示例 PVC 配置文件 pvc.yaml
      apiVersion: v1
      kind: PersistentVolumeClaim
      metadata:
        name: my-pvc
      spec:
        accessModes:
          - ReadWriteOnce
        resources:
          requests:
            storage: 2Gi
      
    • 应用 PVC 配置:
      kubectl apply -f pvc.yaml
      
  3. 使用 PVC 在 Pod 中

    • 在 Pod 配置文件中,你可以引用 PVC 来为容器提供持久化存储。
    • 示例 Pod 配置文件 pod.yaml
      apiVersion: v1
      kind: Pod
      metadata:
        name: my-pod
      spec:
        containers:
        - name: my-container
          image: nginx
          volumeMounts:
          - mountPath: "/usr/share/nginx/html"
            name: my-pv
        volumes:
        - name: my-pv
          persistentVolumeClaim:
            claimName: my-pvc
      
    • 应用 Pod 配置:
      kubectl apply -f pod.yaml
      
  4. 存储类的使用

    • 存储类允许管理员定义存储的动态供应策略。当 PVC 与存储类匹配时,存储系统会自动创建相应的 PV。
    • 创建存储类配置文件 storage-class.yaml
      apiVersion: storage.k8s.io/v1
      kind: StorageClass
      metadata:
        name: my-storage-class
      provisioner: kubernetes.io/aws-ebs
      parameters:
        type: gp2
      reclaimPolicy: Retain
      
    • 应用存储类配置:
      kubectl apply -f storage-class.yaml
      
  5. 动态供应

    • 当 PVC 被创建且没有现成的 PV 与之匹配时,如果 PVC 指定了存储类,且存储类的 provisioner 有效,Kubernetes 将自动创建一个新的 PV。
  6. 管理存储

    • 使用 kubectl get pv 查看集群中的所有 PV。
    • 使用 kubectl get pvc 查看集群中的所有 PVC。
    • 使用 kubectl describe pv/[PV_NAME]kubectl describe pvc/[PVC_NAME] 获取更多详细信息。
  7. 回收策略

    • 你可以为 PV 设置回收策略,如 RetainRecycleDelete。默认策略是 Delete,这意味着当 PVC 被删除时,PV 也会被自动删除。
  8. 备份和迁移数据

    • 在删除 PVC 或 PV 之前,确保备份重要数据,以防数据丢失。
  9. 监控存储使用情况

    • 使用 Kubernetes 监控工具(如 Prometheus 和 Grafana)来监控存储使用情况。

通过以上步骤,你可以在 Kubernetes 集群中有效地管理存储资源。记得在生产环境中进行详细的规划和测试,以确保存储解决方案满足应用程序的需求。

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
2月前
|
存储 Kubernetes 监控
使用 Persistent Volumes 管理存储
【10月更文挑战第3天】使用 Persistent Volumes 管理存储
|
2月前
|
存储 监控 数据安全/隐私保护
GlusterFS存储卷创建
GlusterFS存储卷创建
49 7
|
5月前
|
存储 Kubernetes 应用服务中间件
k8s使用rbd作为存储
k8s使用rbd作为存储
63 6
|
7月前
|
存储 Kubernetes 应用服务中间件
k8s-配置与存储-持久化存储-NFS 挂载、StorageClass 存储类 动态创建NFS-PV案例
k8s-配置与存储-持久化存储-NFS 挂载、StorageClass 存储类 动态创建NFS-PV案例
623 0
|
7月前
|
存储 Kubernetes 关系型数据库
kubernetes学习之持久化存储StorageClass(4---nfs存储服务)
kubernetes学习之持久化存储StorageClass(4---nfs存储服务)
139 0
|
7月前
|
存储 Kubernetes Docker
k8s持久化储存:pv,pvc和nfs等相关技术
k8s持久化储存:pv,pvc和nfs等相关技术
|
7月前
|
存储 Kubernetes 安全
k8s学习-持久化存储(Volumes、hostPath、emptyDir、PV、PVC)详解与实战
k8s学习-持久化存储(Volumes、hostPath、emptyDir、PV、PVC)详解与实战
460 0
|
存储 Kubernetes 应用服务中间件
Kubernetes的Local Persistent Volumes使用小记
Local Persistent Volumes使用小记
172 4
Kubernetes的Local Persistent Volumes使用小记
|
存储 Kubernetes Docker
kubernetes存储对象volume
kubernetes存储对象volume
|
存储 Kubernetes 容器
k8s--数据存储、PV、PVC
k8s--数据存储、PV、PVC