CSI驱动程序支持所有煤渣驱动程序,无需运行任何附加服务,如RabbitMQ、Mariadb或煤渣服务

cinderlib-csi的Python项目详细描述


Cinderlib CSI驱动程序图片::https://img.shields.io/pypi/v/cinderlib_csi.svg
:目标:https://pypi.python.org/pypi/cinderlib_csi

图片::https://img.shields.io/pypi/pyversions/cinderlib_csi.svg
:目标:https://pypi.python.org/pypi/cinderlib_csi

图片::https://pyup.io/repos/github/akrog/cinderlib戋u csi/shield.svg
:目标:https://pyup.io/repos/github/akrog/cinderlib戋u csi/
:alt:updates

。图片::https://img.shields.io/:license apache blue.svg
:目标:http://www.apache.org/licenses/license-2.0



,无需运行任何附加服务,如rabbitmq、mariadb、
Cinder API,Cinder Scheduler或Cinder Volume。

当前代码是一个**概念证明**仅与Cinder兼容
OSP-12/Pike版本。

*免费软件:Apache软件许可证2.0
*文档:待定



最新的csi规范包括"new
snapshots"功能
<;https://github.com/container storage interface/spec/pull/224>;`最近引入了


当前支持的功能有:

-创建块卷
-创建快照
-从快照
-删除块卷
-删除快照
-列出分页
-列出分页
-列出分页
-附加卷
-分离卷
-报告存储容量
-探测节点
-检索插件信息



pendencies
---------


此驱动程序要求Cinder v11.0(OSP-12/Pike)已安装在
系统中,如何完成此操作由安装程序决定,因为有多种方法可以完成此操作:

从github
-从其他存储库


当从pypi安装时,"cinderlib csi"已经处理了任何其他基本需求。

驱动程序和/或
连接/分离操作的比率,就像在煤渣中一样。


controller servicer的一些python依赖项是:

-drbd:dbus和drbdmanage
-hpe 3par:python-3parclient
-kaminario:krest
-pure:purestorage
-dell emc vmax,ibm ds8k:pyopenssl
-hpe lefthad:python lefthandclient
-fujitsu eternus dx:pywbem
-ibm xiv:pyxcli
-rbd:rados和rbd
-dell emc vnx:storops
-violion:vmemclient
-infinidat:infinisdk,capacity,infy.dtypes.wwn,infi.dtypes.iqn

o需要额外的包,例如,
centos/rhel上的lvm需要"targetcli"包,因此请与您的
硬件供应商联系。

除了控制器要求外,通常还需要
节点服务器来处理vo的连接和分离。根据用于访问存储的连接,lumes到
节点。例如:

-iscsi:iscsi initiator tools and device mapper multipath
-rbd/ceph:ceph common package


代码块::shell

$sudo yum install-y centos release openstack pike
$sudo yum install-y openstack cinder python pip


代码块::shell

$sudo pip install cinderlib csi


现在,我们应该安装后端所需的任何附加软件包。


对于iscsi后端,我们将要安装:

。代码块::shell

$sudo yum install iscsi initiator utils
$sudo yum install device mapper multipath
$sudo mpathconf--enable--with_multipathd y--user_friendly_names n--find_multipaths y

对于rbd,我们还需要一个特定的包:

。代码块::shell




——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————默认|示例
+============================+============+===============================================================+==========================================================================================================+==============================================================================================================================================================================+
,`csi_u endpoint`所有IP和端口绑定服务[::]:50051| 192.168.1.22:50050
+—————————————————————————————————————————————--+---——+——+————+————+—————————————————————————————————————————————————————————————???????????????+
"csi_mode controller服务应该执行的角色:controller,node,all all|控制器-——+——-)---------------------------------------------------------------------------------+
`x_u csi_u storage_u nw_u ip` node用于连接到存储的节点中的IP地址从节点的fqdn解析的IP| 192.168.1.22条|
+??~+??~+-————————————————————————————————————————————————————————————————————————————————————————————————————————| csi_test_节点|
+------------+------------+------------+--------+--------+--------+--------+--------+。"'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'|{'storage':'db','connection':'sqlite:///db.sqlite'}{'storage':'db','connection':'mysql+pymysql://root:stackdb@192.168.1.1/cinder?字符集=utf8'}
+---------------------------+------------+---------------------------+---------------------------+。-—————————————————————————————————————————————————————————————————————---——+
`x戋csi戋u cinderlib戋u config_controller_global`cinderlib` configuration{project戋u id':'com.redhat.cinderlib csi',root戋helper':'sudo}{project戋u id:"com.redhat.cinderlib csi","user戋id":"com.redhat.cinderlib csi-csi,"根帮助程序":"sudo"}
+??-+??-+??-+??-+??-+??—————————————————————————————————————————————————————————+
`x_csi_backend_u config` controller driver configuration{"volume_backend_u name":"rbd","volume_u driver":"cinder.volume.drivers.rbd.rbddriver","rbd-u user":"cinder","rbd-u pool":"volumes","rbd-ceph-conf","etc/ceph/ceph.conf","rbd-u keyring-conf","etc/ceph/ceph.client.cinder.keyring"}
+---------------------------+————————————————————————————————————————————-—————————————————————————————————————————————————--已经测试过的唯一角色是默认角色e
控制器和节点服务器在同一个服务中执行(`csi_mode=all`),
其他模式目前可能有问题。



对于连接类型),我们只需运行"cinderlib csi"服务,用户可以使用无密码sudo。代码块::shell


$cinderlib csi



在测试插件之前,我们必须先运行插件,对于
,我们必须在启动
插件之前检查作为测试提供的配置。默认情况下,所有示例都在端口50051上运行该服务。



baremetal
~~~~~~~~~~

例如,要在开发环境中使用lvm驱动程序进行测试,我们可以从"Cinderlib CSI"项目的根目录运行以下命令:

。代码块::shell

$cd tmp
$sudo dd if=/dev/zero of=cinder volumes bs=1048576 seek=22527 count=1
$lodevice=`sudo losetup--show-f./cinder volumes`
$sudo pvcreate$lodevice
$sudo vgcreate cinder volumes$lodevice
$sudo vgscan--cache
$cd../examples/baremetal
$./run.sh lvm
py27 development inst nodeps:/home/geguileo/code/reuse cinder drivers/cinderlib csi
py27 installed:…
uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuui27:跳过测试
恭喜:)
ib:0.1.0,cinder:11.1.1.dev41)
运行后端lvmvolumedriver v3.0.0
现在服务于[::]:50051…





还有一个使用名为"cinder"的用户和"volumes"池测试ceph集群的示例。对于ceph/rbd后端,由于
Cinder中的限制,我们需要同时具有
`/etc/ceph中的凭据和配置才能使其工作。

代码块::shell

$cd示例/baremetal
$./run.sh rbd
starting cinderlib csi v0.0.1(cinderlib:0.1.0,cinder:11.1.0)
running backend rbddriver v1.2.0
现在服务于[::]:50051…



is csi连接
包。



containerized
~~~~~~~~~~~~~~~~


项目中包含一个示例"dockerfile",用于在docker hub中创建"akrog/cinderlib csi"容器。

有两个bash脚本,每个示例一个,这将在容器上运行csi驱动程序
,请注意容器需要作为特权运行才能装入
卷。


对于rbd示例,我们需要复制"ceph.conf"和
"ceph.client.cinder.keyring"文件,假设我们使用的是"cinder"用户
到示例/doc中KER目录替换现有目录。

…代码块::shell

$cd examples/docker
$./rbd.sh
starting cinderlib csi v0.0.1(cinderlib:0.1.0,cinder:11.1.0)
运行后端rbddriver v1.2.0
现在服务于[:]:50051…

~~

e"csc工具"https://github.com/rexray/gocsi/tree/master/csc>;``运行模拟容器编排系统的命令。

e快照命令。

检查插件信息:

…代码块::shell

$csc identity plugin info-e tcp://127.0.0.1:50051
"com.redhat.cinderlib csi""0.0.1""cinder driver"="rbddriver""cinder driver supported"="true""cinder driver version"="1.2.0""cinder version"="11.1.0""cinderlib version"="0.1.0""persistence"="dbpersistence"

节点ID:

…代码块::shell

$csc node get id-e tcp://127.0.0.1:50051
localhost.localdomain

$hostname-f
localhost.localdomain


代码块::shell

$csc controller get capacity-e tcp://127.0.0.1:50051
24202140712


创建卷:

……代码块::shell

$csc controller create volume--cap single_node嫒u writer,block--req bytes 2147483648 disk-e tcp://127.0.0.1:50051
"5ee5fd7c-45cd-44cf-af7b-06081f680f2c"2147483648


代码块::shell

$csc controller list volumes-e tcp://127.0.0.1:50051
"5ee5fd7c-45cd-44cf-af7b-06081f680f2c"2147483648


存储以下所有调用的卷ID:

。代码块::shell

$vol_id=`csc controller list volumes-e tcp://127.0.0.1:50051 awk'{print gensub("\",","g",$1)}'


代码块:shell


$touch.././tmp/mnt/{staging,publish}


$csc controller publish——cap single节点写入器,block——node id`hostname-f`$vol-u id-e tcp://127.0.0.0.1:50051
"5ee5fd7c-45cd-45cd-44cf-af7b-06081f68f2c""连接信息"="{"连接器":{"发起人":\"IQN.1994-1994-05.com.redhat:aa5328232823bac-aa5328232823bac:aa532823282823bac 9","IP":"127.0.0.1\", \"platform\": \"x86_64\", \"host\": \"localhost.localdomain\", \"do_local_attach\": false, \"os_type\": \"linux2\", \"multipath\": false}, \"conn\": {\"driver_volume_type\": \"rbd\", \"data\": {\"secret_uuid\": null, \"volume_id\": \"5ee5fd7c-45cd-44cf-af7b-06081f680f2c\", \"auth_username\": \"cinder\", \"secret_type\": \"ceph\", \"nam"卷/volume-5ee5fd7c-45cd-44cf-af7b-06081f68f2f2c\","discard\":true,""keyring\":"[客户.辛迪尔]\n\\tkey=aqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqaqqqaqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq6789 \"]}}"

$csc node stage--pub info connection\u info="不相关"--CAP单节点写入程序,block—暂存目标路径'realpath../../tmp/mnt/staging`$vol_id-e tcp://127.0.0.1:50051
5ee5fd7c-45cd-44cf-af7b-06081f680f2c

$csc node publish—cap单节点写入程序,block—pub info connection\u info="unrelative"--暂存目标路径'realpath../../tmp/mnt/staging`--目标路径'realpath.../../tmp/mnt/publish`$vol_id-e tcp://127.0.0.1:50051
5ee5fd7c-45cd-44cf-af7b-06081f680f2c


将卷附加到容器上的"tmp/mnt/publish":

代码块:shell


$touch.././tmp/mnt/{staging,publish}


$csc controller publish——cap single节点写入器,block——node id`hostname-f`$vol-u id-e tcp://127.0.0.0.1:50051
"5ee5fd7c-45cd-45cd-44cf-af7b-06081f68f2c""连接信息"="{"连接器":{"发起人":\"IQN.1994-1994-05.com.redhat:aa5328232823bac-aa5328232823bac:aa532823282823bac 9","IP":"127.0.0.1\", \"platform\": \"x86_64\", \"host\": \"localhost.localdomain\", \"do_local_attach\": false, \"os_type\": \"linux2\", \"multipath\": false}, \"conn\": {\"driver_volume_type\": \"rbd\", \"data\": {\"secret_uuid\": null, \"volume_id\": \"5ee5fd7c-45cd-44cf-af7b-06081f680f2c\", \"auth_username\": \"cinder\", \"secret_type\": \"ceph\", \"name\":\"卷/volume-5ee5fd7c-45cd-44cf-af7b-06081f680f2c\",\"discard\":true,\"keyring\":\"[客户端.cinder]\\n\\tkey=aqcqpetaof03ixaohzjd6kgximqfldn3qzdlq====>",\"群集名称":\"ceph\",\"主机":["192.168.1.22\",\"auth\u enabled\":true,\"ports\":[\"6789\"]}"

$csc node stage——pub info connection\u info="inrelative"——cap single_node_writer,block——staging target path/mnt/staging$vol_id-e tcp://127.0.0.1:50051
5ee5fd7c-45cd-44cf-af7b-06081f680f2c

$csc node publish——cap single_node_writer,block--pub info connection_info="unrelative"--暂存目标路径/mnt/staging--target路径/mnt/publish$vol_id-e tcp://127.0.0.1:50051
5ee5fd7c-45cd-44cf-af7b-06081f680f2c


代码块::shell

$csc node unpublish--target path`realpath../../tmp/mnt/publish`$vol_id-e tcp://127.0.0.1:50051
5ee5fd7c-45cd-44cf-af7b-06081f680f2c

$csc node unstage--staging target path`realpath../../tmp/mnt/staging`$vol_id-e tcp://127.0.0.1:50051
5ee5fd7c-45cd-44cf-af7b-06081f680f2c


$csc controller unpublish--node id`hostname-f`$vol_id-e tcp://127.0.0.1:50051
5ee5fd7c-45cd-44cf-af7b-06081f680f2c

分离容器上的卷:

代码块::shell

$csc node unpublish--target path/mnt/publish$vol廑id-e tcp://127.0.0.1:50051
5ee5fd7c-45cd-44cf-af7b-06081f680f2c

$csc node unstage--staging target path/tmp/mnt/staging$vol廑id-e tcp://127.0.0.1:50051
5ee5fd7c-45cd-44cf-af7b-06081f680f2c

$csc controller unpublish--node id`hostname-f`$vol戋id-e tcp://127.0.0.1:50051
5ee5fd7c-45cd-44cf-af7b-06081f680f2c

删除卷:

……代码块::shell

$csc controller delete volume$vol_id-e tcp://127.0.0.1:50051



写入程序、单写入程序和多个读卡器。

请向
`Cinderlib CSI<;https://github.com/akrog/Cinderlib CSI/issues>;``u
项目或在IRC上ping我(我的句柄是Geguileo,我挂在Freenode中的
OpenStack Cinder通道上)。


todo
----

e在这个poc驱动程序中,这里有一个非
详尽的列表:

-支持nfs卷
-支持挂载文件系统
-支持kubernetes crd作为持久性存储
-单元测试
-功能测试
-改进接收的参数检查
-使驱动程序更加eslient
-在kubernetes中测试驱动程序
-查看返回的一些错误代码
-通过煤渣卷类型支持卷属性
-查看多连接
-支持只读模式
-基于过度配置值的报告容量
-配置专用数据位置在


==
=
history
==



>0.0.2(2018-06-19)
----



*使用Cinderlib v0.2.1而不是Github Branch

<0.0.1(2018-05-18)
----

*PYPI上的首次发布。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java为什么加载个人密钥库需要这么多时间?   当我使用main创建Android应用程序UI时,如何通过java修改它。xml文件?   java Tomcat 6和7:WebappClassLoader:尝试为名称org/apache/openjpa/persistence/osgi/BundleUtils复制类定义   java`parseInt()`和`parseDouble()`throw`NumberFormatExeption`   JavaSpringMongoDB填充引用   在LinuxMint中打开Eclipse时发生java错误;OpenJDK 64位服务器VM警告:忽略选项MaxPermSize=512m;支持在8.0中被删除   使用PKCS7Padding的AES CBC加密在Java和Objective中有不同的结果   java为什么Jackson要用一个以类命名的额外层来包装我的对象?   json在Java中使用parallelStream提取值   JavaSpring存储库自动生成方法:按给定的顶部编号+按字段描述排序选择   java是否有可序列化的标准闭包接口?   .NET与Java在初创公司的web应用程序开发   如何修复java。java中的lang.unsatifiedLinkError   JavaFX+Spring Boot+Hibernate应用程序对多个环境的java支持   自定义视图组中的java更改未呈现