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 ...
随机推荐
- Maven基础知识详解
1. 简介 Maven在Java领域的应用已经非常广泛了,有了Maven的存在是的开发人员在搭建.依赖.扩展和打包项目上变得非常简单. 2. Windows安装Maven 下载安装包 http ...
- <UnityTheGreat><001>获取指定目录下指定类型的所有文件的名称
#region Environment Windows 10 Unity 2019.4.16f1c1 LTS VSCode 1.52 https://github.com/MirzkisD1Ex0/U ...
- 微信小程序api拦截器
微信小程序api拦截器 完美兼容原生小程序项目 完美兼用小程序api的原本调用方式,无痛迁移 小程序api全Promise化 和axios一样的请求方式 小程序api自定义拦截调用参数和返回结果 强大 ...
- openstack高可用集群18-Ceph和openstack的对接
Ceph对接Openstack 官方文档: https://docs.ceph.com/docs/master/rbd/rbd-openstack/ Ceph的一个使用场景是结合Openstack ...
- python干货:pop()函数的用法 [弹出删除功能]
什么是弹出功能? 使用pop()删除元素是将元素从列表中删弹出,术语弹出(pop)源自这样的类比:列表像一个栈,而删除列表末尾的元素就相当于弹出栈顶元素 方法pop()删除并返回列表中的最后一个元素. ...
- python之列表操作的几个函数
Python中的列表是可变的,这是它却别于元组和字符串最重要的特点,元组和字符串的元素不可修改.列举一些常用的列表操作的函数和方法. 1,list.append(x),将x追加到列表list末尾: 1 ...
- ASP.NET Core 3.1 IOC容器以及默认DI以及替换Autofac生命周期
IOC 就是我们需要一个对象 以前我们是去 new 现在我们是直接向 IOC容器 要我们需要的那个对象. 使用一个IOC容器(autofac)通过依赖注入控制各个组件的耦合.也就是说你写好了组件,不需 ...
- npm install 报错解决办法
npm install 报错解决办法 原因是因为node_modules可能有意外改动,导致依赖库不完整,删除项目下的node_modules,在你的项目目录下,重新执行npm install,这会重 ...
- SonarQube学习(一)- 使用Docker安装SonarQube(亲测可用)
一.前言 不得不吐槽下,现在的博客写的真太扯淡了,就网上写的使用docker安装SonarQube而言,搜到十篇文章,最少9篇照着操作配置都不可用,卡在SonarQube无法启动.自然,我也是被折磨的 ...
- Listary效率快捷键
快捷键 打开搜索框快捷键: 双击Ctrl键 上一个项目:向上键 下一个项目:向下键/Tap 打开动作:Enter 属性窗口:Ctrl+O (查询)关键字 作用范围:搜索框 使用方法:命令+空格+关键字 ...