GitHub文档地址:https://github.com/minio/directpv

DirectPV是用于直连存储的CSI驱动程序。从更简单的意义上讲,它是一个分布式持久卷管理器,而不是像SAN或NAS这样的存储系统。跨服务器发现、格式化、装载、调度和监视驱动器非常有用。由于Kubernetes hostPath和本地PV是静态配置的,并且功能有限,因此创建DirectPV就是为了解决这一限制。

分布式数据存储(如对象存储、数据库和消息队列)是为直连存储而设计的,它们自行处理高可用性和数据持久性。在传统的SAN或基于NAS的CSI驱动程序(Network PV)上运行它们会在数据路径中添加另一层复制/擦除编码和额外的网络跳数。这种额外的分解层会导致复杂性增加和性能降低。

结构

DirectPV设计为轻量级,可扩展到1000个驱动器中的10个。它由三个组件组成:控制器、节点驱动程序、用户界面

1.控制器

在进行卷声明时,控制器会从无池驱动器统一调配卷。DirectPV知道pod的关联约束,并将卷从本地驱动器分配到pod。请注意,每个群集只运行一个活动的controller实例。

2.节点驱动程序

节点驱动程序实现卷管理功能,例如发现、格式化、装载和监视节点上的驱动器。每个存储服务器上都运行一个节点驱动程序实例。

3.用户界面

存储管理员可以使用kubectl CLI插件来选择、管理和监视驱动器。基于Web的UI目前正在开发中。

Installation

# Install kubectl directpv plugin

# kubectl krew install directpv
Updated the local copy of plugin index.
Installing plugin: directpv
Installed plugin: directpv
\
| Use this plugin:
| kubectl directpv
| Documentation:
| https://github.com/minio/directpv
/
WARNING: You installed plugin "directpv" from the krew-index plugin repository.
These plugins are not audited for security by the Krew maintainers.
Run them at your own risk. # Use the plugin to install directpv in your kubernetes cluster # kubectl directpv install
I0316 10:39:32.252897 26592 install.go:95] Enable dynamic drive change management using --enable-dynamic-discovery flag
W0316 10:39:32.253005 26592 install.go:97] dynamic-discovery feature is strictly experimental and NOT production ready yet
I0316 10:39:32.291954 26592 ns.go:55] 'direct.csi.min.io' namespace created
I0316 10:39:32.339038 26592 rbac.go:352] 'direct.csi.min.io' rbac created
I0316 10:39:32.665041 26592 psp.go:129] 'direct.csi.min.io' podsecuritypolicy created
I0316 10:39:42.759152 26592 conversion_secret.go:170] 'direct.csi.min.io' conversion webhook secrets created
I0316 10:39:42.889964 26592 crd.go:135] crds successfully registered
I0316 10:39:43.113506 26592 csidriver.go:150] 'direct.csi.min.io' csidriver created
I0316 10:39:43.244882 26592 storageclass.go:50] 'direct.csi.min.io' storageclass created
I0316 10:39:43.277386 26592 service.go:39] 'direct.csi.min.io' service created
I0316 10:39:43.335130 26592 daemonset.go:41] 'direct.csi.min.io' daemonset created
I0316 10:39:43.474387 26592 deployment.go:295] 'direct.csi.min.io' deployment created # Ensure directpv has successfully started
# 查看pod创建events,会有报错,才导致info信息没有的
# kubectl directpv info
ERR: directpv installation NOT found run 'kubectl directpv install' to get started
ERROR directpv installation not found # List available drives in your cluster
kubectl directpv drives ls # Select drives that directpv should manage and format
kubectl directpv drives format --drives /dev/sd{a...f} --nodes directpv-{1...4} # 'directpv' can now be specified as the storageclass in PodSpec.VolumeClaimTemplates





DirectPV-----文章内容有待进一步实践完善的更多相关文章

  1. phpcms v9使用GET调用指定id文章内容、页面数据方法

    不知道大家有没有相同的体会?在使用Phpcms V9建站调用数据的时候,基础的数据用默认的模板的调用语句就好了,但复杂不常见的数据怎么调用呢?我们技术可能会研究半天,怀着探索的精神不断尝试.孜孜不倦. ...

  2. [MVC]如何删除文章内容中的图片

    1.实现代码 if (!string.IsNullOrWhiteSpace(entity.Content)) { var immgList = TextHelper.GetImgUrlList(ent ...

  3. 如何给wordpress首页自动显示文章内容的第一个图片

    敏捷个人手机应用中使用到的数据来源于wordpress中,因为自己写的页面,所以可以自己写代码获取文章内容的第一个图片作为文章缩略图来显示,这样用户看到首页时图文并茂,感觉会好一些. 现在后台简单的使 ...

  4. php文章内容分页并生成相应的htm静态页面代码

    代码如下: <?php $url='test.php?1=1'; $contents="fjka;fjsa;#page#批量生成分成文件并且加上分页代码"; $ptext = ...

  5. DEDECMS调用特定ID文章内容的实现方法

    DEDECMS调用特定ID文章内容的实现方法 {dede:loop table='dede_addonarticle' sort='aid' row='8' if='aid=524'} [field: ...

  6. js对文章内容进行分页示例代码

    这篇文章主要介绍了使用js对文章内容进行分页的具体实现,需要的朋友可以参考下 Thinkphp中文章显示代码: 代码如下: <div id="showContent"> ...

  7. 项目视频讲解_[HeyJava][尚学堂][CMS文章内容管理系统]

    [HeyJava][尚学堂][CMS文章内容管理系统] http://pan.baidu.com/s/1c0imHrE

  8. 前端基础系列——CSS规范(文章内容为转载)

    原作者信息 作者:词晖 链接:http://www.zhihu.com/question/19586885/answer/48933504 来源:知乎 著作权归原作者所有,转载请联系原作者获得授权. ...

  9. WordPress批量修改文章内容、URL链接、文章摘要

    通过SQL语句来批量修改wordpress博客内容,文章中所有语句都使用默认的wp_表前缀,如果您的数据表前缀不是wp_则需要在语句中作相应更改. 方法/步骤   批量修改文章内容 如果您想替换之前写 ...

随机推荐

  1. ArrayList集合存储基本数据类型

    如何存储基本数据类型 ArrayList对象不能存储基本类型,只能存储引用类型的数据.类似 <int> 不能写,但是存储基本数据类型对应的 包装类型是可以的.所以,想要存储基本类型数据, ...

  2. 5-10 Quartz 任务调度

    Quartz 什么是Quartz quartz:石英钟的意思 是一个当今市面上流行的高效的任务调度管理工具 由OpenSymphony开源组织开发 Symphony:交响乐 是java编写的,我们使用 ...

  3. 01 Mybatis框架添加英雄步骤

    客户端发出请求的几种方式 通过浏览器的地址栏中发出请求 通过html页面中的超链接发出请求 通过html页面中的form表单发出请求 通过前端框架发出请求 工程中使用数据库需要做的几件事: 在pom. ...

  4. 如何在Rust中打印变量的类型?

    #![feature(core_intrinsics)] fn print_type_of<T>(_: T) { println!("{}", unsafe { std ...

  5. angular 变化检测和ngZone

  6. 20220722-Java可变参数

    Java可变参数总结 来源:B站韩顺平老师的Java入门教学 代码示例如下: public void f(String str,int... nums){ 方法体; } 代码示例如下: public ...

  7. 15分钟搭建RocketMQ源码调试环境

    下载源码 下载源码,github页面选择(rocketmq-all-4.7.1)版本压缩包,https://github.com/apache/rocketmq/tags 导入IDEA 1. 使用ID ...

  8. C#委托的最简单入门和理解

      委托是.net语言中非常重要的一个概念,初学不太好理解也没有关系的,在一次一次的攻关后会领会到委托的精妙,可以说 .net 没有委托就没有后面更高级的事件,异步多线程等等特性的形成可能.所以一定要 ...

  9. HDU 1542/POJ 1151 Atlantis (scaning line + segment tree)

    A template of discretization + scaning line + segment tree. It's easy to understand, but a little di ...

  10. Mysql 实现数据库读写分离

    Amoeba+Mysql实现数据库读写分离 一.Amoeba 是什么 Amoeba(变形虫)项目,专注 分布式数据库 proxy 开发.座落与Client.DB Server(s)之间.对客户端透明. ...