kubernets之持久卷的动态配置
一 介绍持久卷的动态配置原理
前面介绍的pv以及pvc,都需要kubernets集群管理员来支持实际的底层存储,但是kubernets还支持动态配置持久卷来自动化完成这个任务集群管理员可以创建一个持久卷配置,并定义一个或多个StorageClass,从而让用户选择他们想要的持久卷类型,用户可以在其持久卷声明里面引用StorageClass,而配置程序会根据PVC里面对存储的大小以及访问模式创建符合条件的PV,最后用户在pod中根据名称引用pvc。
二 利用StorageClass资源定义可用存储类型
在用户创建持久卷声明之前,管理员需要创建一个或者多个ClassStorage资源,然后才能创建新的持久卷
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: ex-sc
provisioner: kubernets.io/gce-pd
parameters:
type: pd-ssd
zone: europe-west1-b
- provisioner为配置持久卷的卷插件
- paramters传递给paramters的参数
三 用户在持久卷声明中引用StorageClass的名称
用户可以在pvc里面引用SC的名称
apiVersion: v1
kind: persistentvolumeClaim
metadata:
name: ex-pvc-sc
spec:
storageClassName: ex-sc
resources:
requests:
storage: 100Mi
accessModes:
- ReadWriteOnce
- 在这个pvc的定义中指定了需要引用的StorageClass的名称
- 如果指定的SC不存在会看到配置程序失败
- 可以看到确实生成了一个pv,并且其大小和访问模式都符合用户创建的pvc,并且默认的回收策略是Delete
- 并且配置程序还会为pv提供真实的存储空间
四 存储类
4.1 了解存储类的使用优点
集群管理员提供各种各样的存储类,之后研发人员再决定对应用使用哪一个最合适的存储类,SC的好处在于,声明是通过名称来引用它的,因此在不同的集群中,只要SC的名称相同,那么pvc就可以在不同的集群间进行移植。
4.2 更简单的使用持久化存储的方式
集群里面都有存储类,都用户在创建pvc的时候不指明使用存储类的时候,会去使用默认的存储类
4.3 若用户希望不使用配置程序来自动化去创建pv,仅仅需要在pvc里面此般配置即可
......
kind: persistentvolumeclaim
spec:
storageClassName: ""
4.4 最后通过一幅图来完整了解动态持久卷供应全貌

- 如果集群内部尚未持久卷配备程序,则管理员的首要任务则是在集群内部创建持久卷配备程序
- 管理员创建一个或者多个SrorageClass并将其标记为默认值(如果不存在)
- 用户创建一个pvc引用其中一个StorageClass或者直接使用默认值
- kubernets查找其中引用的StorageClass和配置程序并根据PVC请求的大小和访问模式以及参数在StorageClass配置新的PV
- 置备程序指定了真实的存储,创建一个持久卷,并将其绑定PVC
- 用户穿件一个包含名称引用PVC的存储卷pod
kubernets之持久卷的动态配置的更多相关文章
- 通过搭建MySQL掌握k8s(Kubernetes)重要概念(上):网络与持久卷
上一篇"通过实例快速掌握k8s(Kubernetes)核心概念"讲解了k8s的核心概念,有了核心概念整个骨架就完整了,应付无状态程序已经够了,但还不够丰满.应用程序分成两种,无状态 ...
- Rancher 构建 CI/CD 自动化流程 - 动态配置 Jenkins-slave(二)
一.说明 1.1 说明 前面介绍采用 Jenkinsfile + KubernetesPod.yaml 方式进行部署项目(Rancher 构建 CI/CD 自动化流程 - 动态配置 Jenkins-s ...
- Kafka动态配置实现原理解析
问题导读 Apache Kafka在全球各个领域各大公司获得广泛使用,得益于它强大的功能和不断完善的生态.其中Kafka动态配置是一个比较高频好用的功能,下面我们就来一探究竟. 动态配置是如何设计的? ...
- 使用 FIO 对 Kubernetes 持久卷进行 Benchmark:读/写(IOPS)、带宽(MB/s)和延迟
工具 Dbench https://github.com/leeliu/dbench 用法 编辑 dbench.yaml 文件中的 storageClassName 以匹配你自己的 Storage C ...
- Quartz 在 Spring 中如何动态配置时间--转
原文地址:http://www.iteye.com/topic/399980 在项目中有一个需求,需要灵活配置调度任务时间,并能自由启动或停止调度. 有关调度的实现我就第一就想到了Quartz这个开源 ...
- winform app.config文件的动态配置
获取 获取应用程序exe.config文件中 节点value值 /// <summary> /// 功能: 读取应用程序exe.config文件中 /// appSettings节点下 ...
- Spring动态配置多数据源
Spring动态配置多数据源,即在大型应用中对数据进行切分,并且采用多个数据库实例进行管理,这样可以有效提高系统的水平伸缩性.而这样的方案就会不同于常见的单一数据实例的方案,这就要程序在运行时根据当时 ...
- Struts2的处理结果(三)——动态配置结果
Struts2的处理结果(三) --动态配置结果 1.使用表达式语法 示例: <struts> <constant name="struts.enable.DynamicM ...
- 4、android xml中drawableTop(drawableBoottom、drawableLeft、drawableRight)在java代码中的动态配置
做安卓开发的朋友都知道,我们在xml中可以通过这样来对button设置其上部或者(下.左.右)的图片资源: 那么如果需要动态配置图片呢?我们不得不使用java代码来进行操作: Drawable dra ...
随机推荐
- React中对render进行的小优化
react中state和props变化会造成render的重新渲染,有时候我们会在render函数中进行一些稍微复杂的逻辑运算 比如说,像下边这种 在props中将 industries引入,然后对其 ...
- SpringBoot魔法堂:应用热部署实践与原理浅析
前言 后端开发的同学想必每天都在重复经历着修改代码.执行代码编译,等待--重启Tomcat服务,等待--最后测试发现还是有bug,然后上述流程再来一遍(我听不见)
- 仵航说 Vue项目如何打包并发布到linux服务器 仵老大
1,打包 1.1首先你会在本地编辑好你的代码, 1.2然后在控制台输入 npm run build npm run build 1.3稍等片刻就打包完毕 2,位置 2.1打包完毕之后会在项目中生成一个 ...
- 个人微信公众号搭建Python实现 -开发配置和微信服务器转入-配置说明(14.1.2)
@ 目录 1.查看基本配置 2.修改服务器配置 3.当上面都配置好,点击提交 4.配置如下 1.查看基本配置 登录到微信公众号控制面板后点击基本配置 这里要讲的就是订阅号 前往注册微信公众号 2.修改 ...
- 网络编程-python实现-TCP(1.1.3)
@ 目录 1.TCP是什么 2.代码实现 1.TCP是什么 传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的.可靠的.基于字节流的传输层通信协议,由I ...
- 常用的一句话反弹shell总结
文章转载来源:https://blog.csdn.net/qq_38684504/article/details/90047213#1.%20bash%E7%9B%B4%E6%8E%A5%E5%8F% ...
- html2canvas实现浏览器截图的原理(包含源码分析的通用方法)
DevUI是一支兼具设计视角和工程视角的团队,服务于华为云DevCloud平台和华为内部数个中后台系统,服务于设计师和前端工程师. 官方网站:devui.design Ng组件库:ng-devui(欢 ...
- redis源码学习之lua执行原理
聊聊redis执行lua原理 从一次面试场景说起 "看你简历上写的精通redis" "额,还可以啦" "那你说说redis执行lua脚本的原理&q ...
- kubeadm部署k8s
Kubernetes技术已经成为了原生云技术的事实标准,它是目前基础软件领域最为热门的分布式调度和管理平台.于是,Kubernetes也几乎成了时下开发工程师和运维工程师必备的技能之一. 官方文档 ...
- Gitlab + Jenkins 构建,发布一个基于Go的Gin测试项目
部署Go项目简介 对于golang的发布,之前一直没有一套规范的发布流程,来看看之前发布流程: 方案一 • 开发者本地环境需要将环境变量文件改为正式环境配置 • 编译成可执行文件 • 发送给运维 • ...