一  介绍持久卷的动态配置原理

    前面介绍的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之持久卷的动态配置的更多相关文章

  1. 通过搭建MySQL掌握k8s(Kubernetes)重要概念(上):网络与持久卷

    上一篇"通过实例快速掌握k8s(Kubernetes)核心概念"讲解了k8s的核心概念,有了核心概念整个骨架就完整了,应付无状态程序已经够了,但还不够丰满.应用程序分成两种,无状态 ...

  2. Rancher 构建 CI/CD 自动化流程 - 动态配置 Jenkins-slave(二)

    一.说明 1.1 说明 前面介绍采用 Jenkinsfile + KubernetesPod.yaml 方式进行部署项目(Rancher 构建 CI/CD 自动化流程 - 动态配置 Jenkins-s ...

  3. Kafka动态配置实现原理解析

    问题导读 Apache Kafka在全球各个领域各大公司获得广泛使用,得益于它强大的功能和不断完善的生态.其中Kafka动态配置是一个比较高频好用的功能,下面我们就来一探究竟. 动态配置是如何设计的? ...

  4. 使用 FIO 对 Kubernetes 持久卷进行 Benchmark:读/写(IOPS)、带宽(MB/s)和延迟

    工具 Dbench https://github.com/leeliu/dbench 用法 编辑 dbench.yaml 文件中的 storageClassName 以匹配你自己的 Storage C ...

  5. Quartz 在 Spring 中如何动态配置时间--转

    原文地址:http://www.iteye.com/topic/399980 在项目中有一个需求,需要灵活配置调度任务时间,并能自由启动或停止调度. 有关调度的实现我就第一就想到了Quartz这个开源 ...

  6. winform app.config文件的动态配置

    获取 获取应用程序exe.config文件中  节点value值 /// <summary> /// 功能: 读取应用程序exe.config文件中 /// appSettings节点下 ...

  7. Spring动态配置多数据源

    Spring动态配置多数据源,即在大型应用中对数据进行切分,并且采用多个数据库实例进行管理,这样可以有效提高系统的水平伸缩性.而这样的方案就会不同于常见的单一数据实例的方案,这就要程序在运行时根据当时 ...

  8. Struts2的处理结果(三)——动态配置结果

    Struts2的处理结果(三) --动态配置结果 1.使用表达式语法 示例: <struts> <constant name="struts.enable.DynamicM ...

  9. 4、android xml中drawableTop(drawableBoottom、drawableLeft、drawableRight)在java代码中的动态配置

    做安卓开发的朋友都知道,我们在xml中可以通过这样来对button设置其上部或者(下.左.右)的图片资源: 那么如果需要动态配置图片呢?我们不得不使用java代码来进行操作: Drawable dra ...

随机推荐

  1. ORACLE 10g、11g批量刷新用户密码

    一.ORACLE 10g批量刷新用户密码 select 'alter user ' || username ||' identified by values '''||password ||''';' ...

  2. SSO的通用标准OpenID Connect

    目录 简介 OpenID Connect是什么 ID Token 请求ID Token ID Token可以做什么 Open Connect认证码授权的例子 User Info 简介 OpenID C ...

  3. RocketMQ集群搭建(3m-3s-async)

    RocketMQ集群搭建(3m-3s-async) 各角色介绍 角色 作用 Producer 消息发送者,将消息发送到 Broker.无状态,其与NameServer集群中的一个节点建立长连接,定期从 ...

  4. js上 二十、综合案例

    二十.综合案例 题目一: **1. ** 数组随机 描述,写randomArray函数,传递一个数组,传递一个数值,返回一个指定个数的随机的新数组,不允许有重复数据 用例: randomArray([ ...

  5. js上 十三、函数初步-2

    13-1.函数的参数 函数的本质: ü 函数的作用,代码重用,编写一个函数,就是为了解决一类问题. ü 函数每次调用,都有一个结果,那么结果和什么相关呢?y = x , y = x2,y = sin( ...

  6. [日常摸鱼]bzoj2875[NOI2012]随机数生成器-矩阵快速幂

    好裸的矩阵快速幂-然而我一开始居然构造不出矩阵- 平常两个的情况都是拿相邻两项放在矩阵里拿去递推的-然后我就一直构造不出来-其实把矩阵下面弄成1就好了啊orz #include<cstdio&g ...

  7. 免杀shellcode并绕过杀毒添加自启动

    https://www.wtfsec.org/posts/%E5%85%8D%E6%9D%80shellcode%E5%B9%B6%E7%BB%95%E8%BF%87%E6%9D%80%E6%AF%9 ...

  8. C++webservice接口调用

    一.WebService例子 1.准备要调用的webservice接口的wsdl地址,比如网上的查询天气接口:http://ws.webxml.com.cn/WebServices/WeatherWS ...

  9. 关于线程池(ThreadPoolExecutor)参数的浅析

    引子 线程池在项目中很常用,需要多个任务异步执行的地方我们都会去创建一个线程池. 我们看到 ThreadPoolExecutor源码中提供了更方便的工厂方法(Executors)使用. 提供方便应该是 ...

  10. 输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)

    package leetcode;import edu.princeton.cs.algs4.Cycle;import java.util.ArrayList;import java.util.Arr ...