PV与PVC知多少?解锁CKA认证考点攻略!

往期精彩文章 :

  • 提升CKA考试胜算:一文带你全面了解RBAC权限控制!
  • 揭秘高效运维:如何用kubectl top命令实时监控K8s资源使用情况?
  • CKA认证必备:掌握k8s网络策略的关键要点
  • 提高CKA认证成功率,CKA真题中的节点维护全攻略!
  • 数据无忧,一学就会:掌握CKA认证必备的etcd备份与还原秘籍!
  • 提升你的云技能:深入了解CKA认证之k8s升级秘籍!
  • 揭秘CKA认证:Service四层代理的神秘面纱
  • 提升CKA认证成功率:Kubernetes Ingress七层代理全攻略!
  • CKA考生注意:这些Deployment要点能助你一臂之力!
  • 从NodeSelector到NodeAffinity:探索Kubernetes节点亲和性的进化之路
  • 提升CKA考试效率:精准统计Ready状态Node节点的实用攻略
  • CKA考试必备:解锁Pod封装多容器的高级技巧!

理论

1、PV概念

持久卷(PersistentVolume,PV) 是集群中的一块存储,可以由管理员事先制备, 或者使用存储类来动态制备。 持久卷是集群资源,就像节点也是集群资源一样。PV 持久卷和普通的 Volume 一样, 也是使用卷插件来实现的,只是它们拥有独立于任何使用PV的Pod的生命周期。

  • PV是对K8S存储资源的抽象,PV一般由运维人员创建和配置,供容器申请使用。
  • 注意:PV没有命名空间限制!!!

2、PVC概念

持久卷申领(PersistentVolumeClaim,PVC) 表达的是用户对存储的请求。概念上与 Pod 类似。 Pod 会耗用节点资源,而 PVC 申领会耗用 PV 资源。Pod 可以请求特定数量的资源(CPU 和内存);同样PVC申领也可以请求特定的大小和访问模式 。

  • Pod 在使用 PVC 时必须与PVC在同一个Namespace下。
  • 注意:PVC有命名空间限制!!!

3、PV与PVC的关系

PV相当于对磁盘的分区,PVC相当于APP(应用程序)向某个分区申请多少空间。比如说安装WPS程序时,一般会告知我们安装它需要多少存储空间,让你选择在某个磁盘下安装。如果将来某个分区磁盘满了,也不会影响别的分区磁盘的使用。 一旦 PV 与PVC绑定,Pod就可以使用这个 PVC 了。如果在系统中没有满足 PVC 要求的 PV,PVC则一直处于 Pending 状态,直到系统里产生了一个合适的 PV。

PV与PVC的关系

4、StorageClass概念

K8S有两种存储资源的供应模式:静态模式和动态模式,资源供应的最终目的就是将适合的PV与PVC绑定:

  • 静态模式:管理员预先创建许多各种各样的PV,等待PVC申请使用。
  • 动态模式:管理员无须预先创建PV,而是通过StorageClass自动完成PV的创建以及与PVC的绑定。

StorageClass就是动态模式,根据PVC的需求动态创建合适的PV资源,从而实现存储卷的按需创建。

5、PV的访问模式

模式解析
ReadWriteOnce(RWO)可读可写,但只支持被单个节点挂载
ReadOnlyMany(ROX)只读,可被多个节点挂载
ReadWriteMany(RWX)多路可读可写,这种存储可以以读写的方式被多个节点共享、不是每一种存储都支持者三种方式,像共享方式,目前支持的还比较少,比较常用的是NFS,在pvc绑定pv时通常根据两个条件来判定,是存储的大小,另一个就是模式

6、PV的回收策略

策略解析
Retain不清除、保留volume(需要手动清除)
Recycle删除数据,即rm -rf /thevolume/* (只有nfs和hostPath支持)
Delete删除储存资源,比如删除aws ebs卷(只有aws EBS,GCE PD,Azure Disk和cinder支持)

7、PV的状态

状态解析
Available可用,没有被PVC绑定的空闲资源。
Bound已绑定,已经被PVC绑定
Released已释放,PVC被删除,但是资源还未被重新使用。
Failed失败,自动回收失败

案例演示

NFS安装

本案例演示使用NFS作为后端的存储,在K8S所有节点上都要安装NFS客户端软件,下面采用控制平面作为NFS服务端。

  1. 在控制平面安装NFS服务端:
apt install nfs-kernel-server  nfs-common -y
  1. 并配置共享目录,编辑/etc/exports这个文件
/nfs/data *(rw,sync,no_root_squash)

这表示将 /data 目录共享给所有客户端,具有读写权限。

  1. 修改配置文件,需要执行下面的命令使其生效
exportfs -a
  1. 在所有的节点上安装NFS客户端
apt install nfs-common -y
  1. 节点上安装完后,通过执行如下命令验证NFS是否配置正确
node01 $ showmount -e 172.30.1.2
Export list for 172.30.1.2:
/nfs/data *
node01 $ 

上面的命令是列出NFS服务器所有的共享目录,172.30.1.2是NFS服务器的地址。

创建PV

下面创建一个用于持久化存储MYSQL数据的PV,大小为2Gi

apiVersion: v1
kind: PersistentVolume
metadata:name: mysql-pvlabels:pv: mysql-pv
spec:capacity:storage: 2GiaccessModes:- ReadWriteOncepersistentVolumeReclaimPolicy: RecyclestorageClassName: nfs-slownfs:path: /nfs/dataserver: 172.30.1.2

执行PV的创建后,如下图,PV目前的状态为Available

创建PVC

apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: mysql-pvclabels:pv: mysql-pvc
spec:storageClassName: nfs-slowresources:requests:storage: 2GiaccessModes:- ReadWriteOnceselector:matchLabels:pv: mysql-pv

执行创建PVC命令后,pv的状态就从原来的Available变成Bound,如下图:

本来想通过标签的方式去关联PV和PVC的,但是,在v.1.29.0版本,通过标签的方式PVC的创建一直处于Pending中。最后通过查询官方文档通过storageClassName这个字段才成功Bound

创建Deploy资源

在Deployment中调用PVC资源,mysql-deploy.yaml资源清单如下:

apiVersion: apps/v1
kind: Deployment
metadata:name: mysql-deploymentlabels:app: mysql
spec:replicas: 2selector:matchLabels:app: mysqltemplate:metadata:labels:app: mysqlspec:containers:- name: mysqlimage: mysql:5.7env:- name: MYSQL_ROOT_PASSWORDvalue: "@123456@"ports:- containerPort: 3306volumeMounts:- mountPath: /var/lib/mysqlname: mysqlvolumevolumes:- name: mysqlvolumepersistentVolumeClaim: claimName: mysql-pvc #使用的pvc名字

执行如下命令,提交资源清单返回结果如下:

CKA真题

持久卷PersistentVolume

真题截图

中文解析

切换 k8s 集群环境:kubectl config use-context hk8s
Task
创建一个 pv,名字为app-config,大小为 2Gi, 访问权限为ReadWriteManyVolume的类型为 hostPath,路径为 /srv/app-config

官方参考文档

配置 Pod 以使用 PersistentVolume 作为存储

做题解答

  1. 切换K8s集群环境
kubectl config use-context hk8s
  1. 按照题目的要求,编写PV的资源清单
apiVersion: v1
kind: PersistentVolume
metadata:name:  app-configlabels:type: local
spec:capacity:storage: 2GiaccessModes:- ReadWriteManyhostPath:path: "/srv/app-config"
  1. 提交PV资源清单
kubectl apply -f pv.yaml
  1. 通过下面的命令检查PV的状态。

持久卷申领(PVC)

真题截图

中文解析

切换 k8s 集群环境:kubectl config use-context ok8s
Task
创建一个名字为 pv-volume 的 pvc,指定 storageClass 为csi-hostpath-sc,大小为 10Mi。然后创建一个 Pod,名字为web-server,镜像为 nginx,并且挂载该 PVC 至 /usr/share/nginx/html,挂载的权限为 RedWriteOnce。之后通过 kubectl edit 或者 kubectl path 将 pvc 改成 70Mi,并且记录修改记录。

官方参考文档

配置 Pod 以使用 PersistentVolume 作为存储

做题解答

  1. 切换K8s集群环境
kubectl config use-context hk8s
  1. 按照题目的要求,编写PVC的资源清单
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: pv-volume
spec:storageClassName: csi-hostpath-scaccessModes:- ReadWriteOnceresources:requests:storage: 10Mi
---
apiVersion: v1
kind: Pod
metadata:name: web-server
spec:volumes:- name: html-volumepersistentVolumeClaim:claimName: pv-volumecontainers:- name: web-serverimage: nginxvolumeMounts:- mountPath: "/usr/share/nginx/html"name: html-volume
  1. 提交资源清单
kubectl apply -f pod.yaml
  1. 修改PVC的容量从原来的10Mi改成70Mi
kubectl edit pvc pv-volume--------resources:requests:storage: 70MistorageClassName: csi-hostpath-sc
---------

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/525005.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

四个领域,企业官网依然无可替代。

2023-10-23 14:17贝格前端工场 企业官网在以下领域无可替代: 专业性强的领域:如金融、法律、医学等,这些领域专业性很强,需要权威、专业的官网来提供详细、准确的信息1。需要展示企业形象、实力的领域:如制造业、房地…

202441读书笔记|《笠翁对韵》—— 金菡萏,玉芙蓉,酒晕微酡琼杏颊,香尘浅印玉莲双

202441读书笔记|《笠翁对韵》——金菡萏,玉芙蓉,酒晕微酡琼杏颊,香尘浅印玉莲双 《作家榜名著:笠翁对韵》作者李渔,霍俊明。是所有词句都有注音的一本书,轻松学不认识的字,非常朗朗上口的对偶词…

深入解读可视化运维的内容、领域、价值和系统搭建

大家好,我是贝格前端工场,接触过很多可视化运维项目,包括IT、电力、物流、生产制造等,本文系统总结一下可视化运维相关知识,老规矩别忘了关注转发,有事请私信。 一、可视化运维定义 可视化运维是指通过可视…

windows更改账户名

win R输入netplwiz 点击用户名进去, 修改用户名之后重启即可。

CAS 登出方案

1.配置 CAS 服务器端 添加配置cas.logout.followServiceRedirects:true,使支持 CAS 退出时支持输入 service 参数为跳转路径 2.配置客户端服务,添加session清除操作 3.前端文件添加跳转重定向 1) 直接在客户端调用http请求/cas/logout去注销不能携带cookie信息, 无…

Unity L屏幕实现方式(已抛弃)

效果 右侧主要的参数:Line参数能够调整中间线的高度,PointXY能够调整整个下方弯曲图像的比例。 使用的是RenderTexture填充RawImage显示的方式,需要将一张RenderTexture设置位摄像机的输出内容。 ShaderGraph 由于这个采用了一定的数学模型…

海翔ERP getylist_login.do接口存在sql注入漏洞

@[toc] 免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。 1. 海翔ERP 简介 微信公众号搜索:南风漏洞复…

[贰],万能开篇HelloWorld

1,新建项目 File/New/Project Android/Android Application Project 输入程序名字HelloWorld Next Next 选择Blank Activity 修改为HelloWorldActivity 2,异常点 No resource found that matches the given name Theme.AppCompat.Light import andro…

【vue2基础教程】vue指令

文章目录 前言一、内容渲染指令1.1 v-text1.2 v-html1.3 v-show1.4 v-if1.5 v-else 与 v-else-if 二、事件绑定指令三、属性绑定指令总结 前言 Vue.js 是一款流行的 JavaScript 框架,广泛应用于构建交互性强、响应速度快的现代 Web 应用程序。Vue 指令是 Vue.js 中…

AndroidStudio跑马灯实现

在activity_main.xml中编写如下代码&#xff1a; <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_h…

linux安装部署mmdetection,亲测可行

安装了两天&#xff0c;最后终于成功&#xff0c;这里有一些注意事项&#xff0c;版本对应啥的&#xff1a; 这里是mmdetection与MMCV的版本对应关系&#xff1a; mmdet与mmcv的版本对应有一些包因为版本问题直接pip下载不了&#xff0c;这里直接跑到官网去复制下载命令&#…

数据结构:Heap(二叉树)的基本操作

目录 1.有关二叉树必须知道的几个基本概念 2.有关二叉树的基本操作 2.0有关元素的定义以及要进行的操作 2.1初始化和销毁操作 2.2插入操作以及上调操作 2.2.1插入操作以及上调操作的图解 2.2.2插入操作以及上调操作的代码 2.3删除根元素及其下调操作 2.3.2删除根元素及…