资讯专栏INFORMATION COLUMN

Kubernetes v1.13对裸盘支持转移到beta

galois / 1565人阅读

摘要:作者,谷歌将裸盘支持转移到。对裸盘的支持目前是。将留空与指定相同,这会导致传统行为。例如,实际上是磁盘的块设备支持使用向设备发送命令。默认情况下,不允许容器将命令从容器内部发送到磁盘。

作者:Ben Swartzlander(NetApp),Saad Ali(谷歌)

Kubernetes v1.13将裸盘(raw block volume)支持转移到beta。此功能允许持久卷(persistent volume)作为块设备(block device),而不是作为已安装的文件系统在容器内部公开。

什么是块设备?

块设备允许随机访问固定大小的块中的数据。硬盘驱动器、SSD和CD-ROM驱动器都是块设备的示例。

持久存储通常以分层方式实现,在块设备(如旋转磁盘或SSD)之上使用文件系统(如ext4)。然后,应用程序读取和写入文件,而不是在块上操作。操作系统负责使用指定的文件系统,将文件作为块读取和写入底层设备。

值得注意的是,整个磁盘都是块设备,磁盘分区也是,存储区域网络(SAN)设备的LUN也是。

为什么要将裸盘添加到kubernetes?

有些专门的应用程序需要直接访问块设备,例如,文件系统层会引入不必要的开销。最常见的情况是数据库,它们更喜欢直接在底层存储上组织数据。裸盘设备也常用于任何本身实现某种存储服务的软件(软件定义的存储系统)。

从程序员的角度来看,块设备是一个非常大的字节数组,通常具有一些最小的读写粒度,通常为512字节,但更常见为4K或更大。

随着在Kubernetes内部运行数据库软件和存储基础架构软件变得越来越普遍,Kubernetes中对裸盘设备支持的需求变得更加重要。

哪个卷插件支持裸盘?

在发布此博客时,以下树内(in-tree)卷类型支持裸盘:

AWS EBS

Azure Disk

Cinder

Fibre Channel

GCE PD

iSCSI

Local volumes

RBD (Ceph)

Vsphere

树外(Out-of-tree)CSI卷驱动程序也可以支持裸盘。 Kubernetes CSI对裸盘的支持目前是alpha。请参阅此处的文档。

Kubernetes裸盘API

裸盘与普通卷有很多共同点。两者都是通过创建绑定到PersistentVolume对象的PersistentVolumeClaim对象来请求的,并通过将它们包含在PodSpec的volumes数组中而附加到Kubernetes中的Pod。

但是有两个重要的区别。首先,要请求裸盘PersistentVolumeClaim,必须在PersistentVolumeClaimSpec中设置volumeMode =“Block”。将volumeMode留空与指定volumeMode =“Filesystem”相同,这会导致传统行为。PersistentVolumes在其PersistentVolumeSpec中也有一个volumeMode字段,而“Block”类型的PVC只能绑定到“Block”类型的PV,而“Filesystem”PVC只能绑定到“Filesystem”PV。

其次,在Pods中使用裸盘时,必须在PodSpec的Container部分而不是VolumeMount中指定VolumeDevice。VolumeDevices具有devicePaths而不是mountPaths,并且在容器内部,应用程序将在该路径中看到设备而不是已安装的文件系统。

应用程序打开、读取和写入容器内的设备节点,就像它们将与非容器化或虚拟化环境中的系统上的任何块设备进行交互一样。

创建新的裸盘PVC

首先,确保你选择的存储类关联的配置程序是支持裸盘的配置程序。然后创建PVC。

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: my-pvc
spec:
  accessModes:
    - ReadWriteMany
  volumeMode: Block
  storageClassName: my-sc
  resources:
    requests:
    storage: 1Gi
使用裸盘PVC

在pod定义中使用PVC时,可以选择块设备的设备路径,而不是文件系统的安装路径。

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
    - name: my-container
      image: busybox
      command:
        - sleep
        - “3600”
      volumeDevices:
        - devicePath: /dev/block
          name: my-volume
      imagePullPolicy: IfNotPresent
  volumes:
    - name: my-volume
      persistentVolumeClaim:
        claimName: my-pvc
作为存储供应商,如何在我的CSI插件中添加对裸盘设备的支持?

CSI插件对裸盘支持仍然是alpha,但今天可以添加支持。CSI规范详细说明了如何处理具有BlockVolume功能而不是MountVolume功能的卷请求。CSI插件可以支持这两种卷。有关更多详细信息,请参阅此处。

问题/陷阱

因为块设备实际上是设备,所以可以从容器内部对它们执行低级操作,这是文件系统卷无法实现的。例如,实际上是SCSI磁盘的块设备支持使用Linux ioctls向设备发送SCSI命令。

默认情况下,Linux不允许容器将SCSI命令从容器内部发送到磁盘。为此,你必须将SYS_RAWIO功能授予容器安全上下文(context)以允许此操作。请参阅此处的文档。

此外,虽然Kubernetes保证向容器提供块设备,但不能保证它实际上是SCSI磁盘或任何其他类型的磁盘。用户必须确保所需的磁盘类型与其pod一起使用,或者仅部署可处理各种块设备类型的应用程序。

怎样能了解更多?

在此处查看有关快照功能的其他文档。

我如何参与?

加入Kubernetes存储SIG和CSI社区,帮助我们添加更多优秀功能,并改进现有功能如裸盘存储!

鸣谢

特别感谢帮助Kubernetes增加块卷支持的所有贡献者,包括:

Ben Swartzlander(https://github.com/bswartz)

Brad Childs(https://github.com/childsb)

Erin Boyd(https://github.com/erinboyd)

Masaki Kimura(https://github.com/mkimuram)

Matthew Wong(https://github.com/wongma7)

Michelle Au(https://github.com/msau42)

Mitsuhiro Tanino(https://github.com/mtanino)

Saad Ali(https://github.com/saad-ali)


KubeCon + CloudNativeCon和Open Source Summit大会日期:

会议日程通告日期:2019 年 4 月 10 日

会议活动举办日期:2019 年 6 月 24 至 26 日

KubeCon + CloudNativeCon和Open Source Summit赞助方案
KubeCon + CloudNativeCon和Open Source Summit多元化奖学金现正接受申请
KubeCon + CloudNativeCon和Open Source Summit即将首次合体落地中国
KubeCon + CloudNativeCon和Open Source Summit购票窗口,立即购票!

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/32909.html

相关文章

  • Kubernetes v1.13裸盘支持转移beta

    摘要:作者,谷歌将裸盘支持转移到。对裸盘的支持目前是。将留空与指定相同,这会导致传统行为。例如,实际上是磁盘的块设备支持使用向设备发送命令。默认情况下,不允许容器将命令从容器内部发送到磁盘。 作者:Ben Swartzlander(NetApp),Saad Ali(谷歌) Kubernetes v1.13将裸盘(raw block volume)支持转移到beta。此功能允许持久卷(pers...

    CoffeX 评论0 收藏0
  • 新版发行+被爆首个严重漏洞,Kubernetes动态有点多

    摘要:首爆严重安全漏洞,严重性分于昨晚爆出严重安全漏洞,该漏洞由联合创始人及首席架构师发现。其他功能更新对第三方设备监控插件的支持该功能目前被引入为功能。拓扑感知卷调度该功能现成为状态。 K8S首爆严重安全漏洞,严重性9.8分 Kubernetes于昨晚爆出严重安全漏洞,该漏洞由Rancher Labs联合创始人及首席架构师Darren Shepherd发现。该漏洞CVE-2018-1002...

    jackzou 评论0 收藏0
  • Kubernetes的容器存储接口(CSI)GA了

    摘要:作者,高级软件工程师实施的容器存储接口已在版本中升级为。功能受弃用政策保护。随着容器存储接口的采用,卷层变得真正可扩展。年中国论坛提案征集现已开放论坛让用户开发人员从业人员汇聚一堂,面对面进行交流合作。 showImg(https://segmentfault.com/img/bVbnBe1?w=620&h=340); 作者:Saad Ali,Google高级软件工程师 Kuberne...

    zengdongbao 评论0 收藏0
  • Kubernetes的容器存储接口(CSI)GA了

    摘要:作者,高级软件工程师实施的容器存储接口已在版本中升级为。功能受弃用政策保护。随着容器存储接口的采用,卷层变得真正可扩展。年中国论坛提案征集现已开放论坛让用户开发人员从业人员汇聚一堂,面对面进行交流合作。 showImg(https://segmentfault.com/img/bVbnBe1?w=620&h=340); 作者:Saad Ali,Google高级软件工程师 Kuberne...

    yanwei 评论0 收藏0
  • 与CNCF一起分享K8s博客文章或案例研究

    摘要:和网站不时发布来之全世界的博客文章和案例研究。提交案例研究案例研究强调组织如何使用解决实际问题。看看现有案例研究材料。 showImg(https://segmentfault.com/img/bVbp45W?w=1280&h=545); CNCF和Kubernetes网站不时发布来之全世界的博客文章和案例研究。 近期的博客文章有: 使用Ansible和Vagrant设置Kubern...

    JinB 评论0 收藏0

发表评论

0条评论

galois

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<