PV和PVC是什么

一、概述
docker使用数据卷和数据卷容器来进行数据的持久化。
pod是kubernetes的基本单位,包含一个或多个容器。
pod内部的容器存在共享数据存储的需求,kubernetes给出了类似容器volum(卷)的概念,与pod具有相同的生命周期。
使用volum,就需要知道存储方案的技术细节,通常由运维人员来维护。而对开发人员来说,只想知道我需要多大的存储空间、i/o是否能满足要求等等这些细节。
为此,kubernetes在volum的基础上做了进一步抽象,提出了pv(persistentvolume,持久化卷)、pvc(persistentvolumeclaim,持久化卷声明)。
pv相当于一块硬盘,由运维人员提供。
pvc是对存储需求的声明,由开发人员提供。
pvc可类比pod来理解,pod申请的是cpu和内存资源,而pvc则是申请存储资源。
pv一般是预先手动创建的,开发人员每次都申请,则比较麻烦。是否可以根据pvc的要求,自动创建呢?
kubernetes提出了 sotrage class ,实现pv的动态供给。
**二、实践
**
(一)配置nfs服务器
nfs(network file system)是一种分布式文件系统协议,可以通过网络,让不同的客户端,可以彼此访问共同的文件系统 ,来实现文件的共享。nfs服务器提供可以挂载的目录,客户端直接挂载在本地端的目录。
安装nfs服务器apt-get install nfs-kernel-server配置nfs服务器/etc/exports为nfs服务器的配置文件。
root@linux:/tmp# vi /etc/exports # /etc/exports: the access control list for filesystems which may be exported#to nfs clients. see exports(5).# 访问控制列表,以便nfs客户端配置# example for nfsv2 and nfsv3:# /srv/homes hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)## example for nfsv4:# /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)# /srv/nfs4/homes gss/krb5i(rw,sync,no_subtree_check)#/tmp *(rw,no_root_squash,sync)参数说明:
rw:设置目录可读写;
no_root_squash:客户端连接服务端时,如果是root用户,那么,将拥有服务端目录的root权限;
sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;
nfs服务器的启动root@linux:/# service nfs-kernel-server startnfs客户端配置(1)安装nfs-common
root@linux:/# apt install nfs-commonreading package lists... donebuilding dependency tree reading state information... donethe following package was automatically installed and is no longer required: grub-pc-binuse 'apt autoremove' to remove it.the following additional packages will be installed: keyutils libnfsidmap2 libtirpc1 rpcbindsuggested packages: watchdogthe following new packages will be installed: keyutils libnfsidmap2 libtirpc1 nfs-common rpcbind0 upgraded, 5 newly installed, 0 to remove and 345 not upgraded.need to get 399 kb of archives....(2)将本地/mnt/nfs目录挂载在nfs服务器上/tmp
root@linux:/# mount -t nfs 30.0.1.90:/tmp /mnt/nfsroot@linux:/#(5)新建测试文件:
root@linux:/# cd /mnt/nfs/root@linux:/mnt/nfs# touch 1.txtroot@linux:/mnt/nfs# echo this is nfs test > 1.txtroot@linux:/mnt/nfs# ls1.txt(6)登录nfs服务器,便可查到文件:
root@linux:/tmp# lltotal 72-rw-r--r-- 1 root root 1.txtroot@linux:/tmp# cat 1.txtthis is nfs testroot@linux:/tmp#(二)kubernetes挂载nfs
编写一个yaml文件,需要记住server地址和可供挂载的目录
apiversion: v1kind: podmetadata: name: mountnfstest namespace: kubetest #spec: containers: - name: nginx image: nginx:1.21.0 ports: - containerport: 80 volumemounts: - name: logs-volume mountpath: /var/log/nginx volumes: - name: logs-volume nfs: server: 30.0.1.90 # nfs服务器地址 path: /tmp/ #可供挂载的目录

R&S提供整车无源天线测试的全套解决方案助力自动驾驶汽车成为现实
在allegro中进行更换元件封装技巧应用
Oculus CEO调任,内部一分为二
谷歌推出ARCore,手机上体验宇宙大爆炸,实现AR效果
444光立方制作图解
PV和PVC是什么
为什么以太坊协议不太可能整合经济抽象
真正实现碳化硅的汽车应用资质
马云又出新花样 金融创新相互保
实时嵌入式系统的图形界面支持系统
中国移动创新研发出“天网云盾”保护企业网络信息安全
Cadence通过高效协作ECAD环境加速产品创建
浅谈人工智能发展趋势
!供应/收购 DSO3215A DSO3062A 示波器 D
0漏检,缺陷识别率>99%,维视智造AI全栈全场景产品赋能光伏质检
浅谈基于超声波传感器的人体行为检测
工业互联网助力中小企业转型升级的四大作用
一种用于提取和体内长期监测游离DNA
iOS14.3正式版发布,对隐私保护不透明的整治正式开始
英特尔尚未决定将芯片来使用外部代工厂?