当前位置: 首页 > news >正文

claim用法c语言中,通过一个例子学习Kubernetes里的PersistentVolumeClaim的用法

Kubernetes的pod本身是无状态的(stateless),生命周期通常比较短,只要出现了异常,Kubernetes就会自动创建一个新的Pod来代替它。

而容器产生的数据,会随着Pod消亡而自动消失。

为了实现Pod内数据的存储管理,Kubernetes引入了两个API资源:Persistent Volume(持久卷,以下简称PV)和Persistent Volume Claim(持久卷申请,以下简称PVC)。

PV是Kubernetes集群中的一种网络存储实现,跟Node一样,也是属于集群的资源。

PV跟Docker里的Volume(卷)类似,不过会有独立于Pod的生命周期。

使用kubectl get pv查看列表:

09591be004fd837adda3af6635dafb35.png

而PVC是用户的一个请求,跟Pod类似。Pod消费Node的资源,PVC消费PV的资源。

f8221b856dc1e6012689349d1ea98875.png

Pod 能够申请特定的资源(CPU和内存);PVC能够申请特定的尺寸和访问模式,例如可以加载一个读写实例或者多个只读实例,(就是上图kubectl get pvc返回结果的Access Mode这一列的值RWO, ROX等等)而无须感知这些实例背后具体的存储实现。

我们来看一个具体的PVC实例,名称为nginx-pvc:

kind: PersistentVolumeClaim apiVersion: v1 metadata: name: nginx-pvc spec: storageClassName: default accessModes: - ReadOnlyMany resources: requests: storage: 1Gi

c8364c5add522388e300f9f294bfe14d.png

使用命令kubectl create -f pvc.yaml创建这个yaml文件定义的persistent volume claim:

a2a15b1a8ad529336eed09325fb9005e.png

然后定义一个pod,消费这个名为nginx-pvc的persistent volume claim:

9d06f123e562c19bac84f1873396f597.png

0f6bc6846c0a61cd679f04b3bf299fcf.png

使用kubectl describe pvc nginx-pvc查看这个persistent volume claim对应生成的persistent volume:

3e7fe5061c9918e7654a35de1566607b.png

7f617d2264a024e36e040fcc88e89d17.png

现在我用命令kubectl cp train.jpg nginx-storage-pod:/usr/share/nginx/html将两个文件train.jpg和index.html文件拷贝到pod内部文件路径/usr/share/nginx/html下面:

506cac34ab132a6be59d3de62ef370de.png

现在切换到nginx-storage-pod pod里,在/usr/share/nginx/html目录下果然发现了这两个文件:

7eb1642fd1a064eb0cd069eeb2c0ede5.png

接下来我定义了另一个pod,同样适用nginx-pvc这个PVC:

4c631ea81e32b0cc4ec259fd8c63cd9e.png

创建完这个pod之后,then kubectl exec -ti another ash 进入pod内部/usr/share/nginx/html,同样发现了index.html和train.jpg.

2fcbd6ccaac9288d99e6e010d63a0aea.png

这个例子说明persistent volume claim能够用于在多个pod间共享持久化数据。 要获取更多Jerry的原创文章,请关注公众号"汪子熙":

41492ef04729085183e07e9b5ec99556.png

相关文章:

  • ipv6报文封装linux,IPv6报文的路由头封装方法及装置与流程
  • android 7下载地址,Android7.0下载地址 安卓7.0系统手机下载安装教程
  • android 弹出菜单环形,谷歌新专利:安卓环形菜单 双指触屏效率高
  • android相机拍摄时动画完成效果,Android 仿微信图像拍摄和选择界面功能(代码分享)...
  • 安装android 模拟器 停止运行程序,才知道,原来修改程序后,不需要重新启动AVD模拟器就可以测试程序运行的!...
  • 修改sim卡号码 android,android 如何动态修改SIM卡应用名称 MT6572 MT6589
  • android studio sqliteopenhelper,android studio使用SQLiteOpenHelper()建立数据库的方法
  • 一加5android 系统耗电,一加5评测:可能是今年最好的Android旗舰
  • 在线html代码生成器,支持网页快速排版 CSS代码一键生成的在线设计工具
  • html文件如何放置web站点,如何使用Go Web服务器提供静态html文件?
  • asp.net mv4 controller 跳转 静态html,Asp.Net MVC系列--进阶篇之controller(1)
  • html星星连线特效代码,js实现飞入星星特效代码
  • html生成jsessionid,H5 APP 使用 JSESSIONID 保持会话登录
  • web项目html访问不了,JBoss7部署web工程,无法访问到html文件,但是jsp都可以正常访...
  • html中的div的,html – div中的div
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • CSS盒模型深入
  • markdown编辑器简评
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • Protobuf3语言指南
  • puppeteer stop redirect 的正确姿势及 net::ERR_FAILED 的解决
  • Python十分钟制作属于你自己的个性logo
  • rc-form之最单纯情况
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 复杂数据处理
  • 回顾2016
  • 如何抓住下一波零售风口?看RPA玩转零售自动化
  • 什么软件可以剪辑音乐?
  • 写代码的正确姿势
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • 智能合约Solidity教程-事件和日志(一)
  • 最近的计划
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • Spring Batch JSON 支持
  • ​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数
  • ​一些不规范的GTID使用场景
  • (1)Android开发优化---------UI优化
  • (C++)八皇后问题
  • (板子)A* astar算法,AcWing第k短路+八数码 带注释
  • (五)关系数据库标准语言SQL
  • (一) storm的集群安装与配置
  • .htaccess配置重写url引擎
  • .NET 指南:抽象化实现的基类
  • .NET/C# 阻止屏幕关闭,阻止系统进入睡眠状态
  • .Net接口调试与案例
  • .NET学习全景图
  • @AliasFor注解
  • @Bean有哪些属性
  • [20181219]script使用小技巧.txt
  • [C]整形提升(转载)
  • [CISCN2019 华北赛区 Day1 Web2]ikun
  • [error] 17755#0: *58522 readv() failed (104: Connection reset by peer) while reading upstream
  • [Java]快速入门优先队列(堆)手撕相关面试题