Kubernetes----高级存储之PV

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: Kubernetes----高级存储之PV

【原文链接】

一、PV简介

1.1 PV资源文件

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv2
spec:
  nfs:   # 存储类型,与底层真正存储对应
  capacity:  # 存储能力,目前只支持存储空间的设置
    storage: 2Gi
  accessModes:  # 访问模式
  storageClassName:  # 存储类别
  persistentVolumeReclaimPolicy:  # 回收策略

PV的关键配置参数说明:

  • 存储类型

底层实际存储的类型,Kubernetes支持多种存储类型,每种存储类型的配置都有所差异

  • 存储能力(capacity)

目前只支持存储空间的设置(storage=1Gi),不过未来可能会加入IOPS,吞吐量等指标的配置

  • 访问模式(accessModes)

用于描述用户应用对存储资源的访问权限,访问权限包括下面几种方式

  • ReadWriteOnce(RWO):读写权限,但是只能被单个节点挂载
  • ReadONLYMany(ROX):只读权限,可以被多个节点挂载
  • ReadWriteMany(RWX):读写权限,可以被多个节点挂载

需要注意的是,底层不同的存储类型可以能支持的访问模式不同

  • 回收策略(persistentVolumeReclaimPolicy)

当PV不再被使用了以后,对其的处理方式,目前支持三种策略

  • Retain(保留)保留数据,需要管理员手工清理数据
  • Recycle(回收)清除PV中的数据,效果相当于执行 rm -rf /thevolume/*
  • Delete(删除)与PV相连的后端存储完成Volume的删除操作,当然这常见于云服务商的存储服务

需要注意的是,底层不同的存储类型可能支持的回收策略不同

  • 存储类别

PV可以通过storageClassName的参数指定一个存储类别

  • 具有特定类别的PV只能与请求了该类别的PVC进行绑定
  • 未设定类别的PV则只能与不请求任何类别的PVC进行绑定
  • 状态(status)
    一个PV的生命周期中,可能会处于4种不同的阶段:

    • Available(可用):表示可用状态,还未被任何PVC绑定
    • Bound(已绑定):表示PV已经被PVC绑定
    • Released(已释放):表示PVC被删除,但是资源还未被集群重新声明
    • Failed(失败):表示PV的自动回收失败

二、PV实例演示

2.1 准备NFS环境

创建目录

[root@master ~]# mkdir /root/data/{pv1,pv2,pv3} -pv
mkdir: created directory ‘/root/data/pv1’
mkdir: created directory ‘/root/data/pv2’
mkdir: created directory ‘/root/data/pv3’
[root@master ~]#

暴露服务,注意这里需要首先搭建好nfs服务,若为部署nfs服务,可参考 DevOps技术----安装部署NFS服务器

vi /etc/exports

增加如下三行

/root/data/pv1    192.168.0.0/16(rw,no_root_squash)
/root/data/pv2    192.168.0.0/16(rw,no_root_squash)
/root/data/pv3    192.168.0.0/16(rw,no_root_squash)

然后重启nfs服务

 systemctl restart nfs

2.2 创建PV

编写pv.yaml文件,内容如下:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv1
spec:
  capacity:
    storage: 2Gi
  accessModes:
  - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  nfs:
    server: 192.168.16.40
    path: /root/data/pv1

---

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv2
spec:
  capacity:
    storage: 2Gi
  accessModes:
  - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  nfs:
    server: 192.168.16.40
    path: /root/data/pv2

---

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv3
spec:
  capacity:
    storage: 2Gi
  accessModes:
  - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  nfs:
    server: 192.168.16.40
    path: /root/data/pv3

使用如下命令创建PV

[root@master volume]# kubectl apply -f pv.yaml
persistentvolume/pv1 created
persistentvolume/pv2 created
persistentvolume/pv3 created
[root@master volume]#

使用如下命令查看创建的PV资源

[root@master volume]# kubectl get pv -o wide
NAME            CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM                         STORAGECLASS   REASON   AGE     VOLUMEMODE
pv1             2Gi        RWX            Retain           Available                                                         112s    Filesystem
pv2             2Gi        RWX            Retain           Available                                                         112s    Filesystem
pv3             2Gi        RWX            Retain           Available                                                         112s    Filesystem
[root@master volume]#
相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
3月前
|
存储 Kubernetes 容器
Kubernetes 存储选项:持久化卷与存储类
【8月更文第29天】随着容器化的普及,越来越多的应用程序需要持久化数据以保持状态信息。Kubernetes 提供了一套完整的解决方案来管理和配置持久化存储,包括持久卷 (Persistent Volume, PV)、持久卷声明 (Persistent Volume Claim, PVC) 和存储类 (StorageClass)。本文将详细介绍这些概念,并通过实际示例来演示如何在 Kubernetes 中配置存储。
286 1
|
3月前
|
存储 Kubernetes Go
【Azure K8S | AKS】在AKS集群中创建 PVC(PersistentVolumeClaim)和 PV(PersistentVolume) 示例
【Azure K8S | AKS】在AKS集群中创建 PVC(PersistentVolumeClaim)和 PV(PersistentVolume) 示例
|
2月前
|
存储 Kubernetes 测试技术
k8s使用pvc,pv,sc关联ceph集群
文章介绍了如何在Kubernetes中使用PersistentVolumeClaim (PVC)、PersistentVolume (PV) 和StorageClass (SC) 来关联Ceph集群,包括创建Ceph镜像、配置访问密钥、删除默认存储类、编写和应用资源清单、创建资源以及进行访问测试的步骤。同时,还提供了如何使用RBD动态存储类来关联Ceph集群的指南。
143 7
|
3月前
|
存储 Kubernetes 容器
k8s创建NFS动态存储
k8s创建NFS动态存储
|
3月前
|
存储 Kubernetes 容器
在K8S中,PV的生命周期状态有哪些?
在K8S中,PV的生命周期状态有哪些?
|
3月前
|
存储 Kubernetes 调度
在K8S中,什么是PV和PVC?
在K8S中,什么是PV和PVC?
|
3月前
|
存储 缓存 Kubernetes
在K8S中,有状态服务与无状态服务都是怎么使用pv和pvc?(可以通过应用场景说明一下)
在K8S中,有状态服务与无状态服务都是怎么使用pv和pvc?(可以通过应用场景说明一下)
|
3月前
|
Kubernetes 关系型数据库 MySQL
k8s练习--通过NFS+PV+PVC+POD,部署一个MySQL服务,并将MySQL的数据进行持久化存储
本文档介绍了如何使用Kubernetes (K8s)、NFS、PersistentVolume (PV)、PersistentVolumeClaim (PVC)和Pod来部署并实现MySQL服务的数据持久化存储。Kubernetes是一个用于自动化部署、扩展和管理容器化应用的强大平台。NFS作为一种网络文件系统协议,能够使Kubernetes集群中的Pod跨节点访问共享文件。PV和PVC机制则提供了持久化的存储解决方案,确保数据即使在Pod生命周期结束后仍得以保留。
149 0
|
3月前
|
存储 Kubernetes 数据安全/隐私保护
在K8S中,如果后端nfs存储的ip发生变化如何解决?
在K8S中,如果后端nfs存储的ip发生变化如何解决?
|
3月前
|
存储 缓存 Kubernetes
在K8S中,业务Pod数据如何存储?
在K8S中,业务Pod数据如何存储?