摘要:作者,谷歌將裸盤支持轉(zhuǎn)移到。對(duì)裸盤的支持目前是。將留空與指定相同,這會(huì)導(dǎo)致傳統(tǒng)行為。例如,實(shí)際上是磁盤的塊設(shè)備支持使用向設(shè)備發(fā)送命令。默認(rèn)情況下,不允許容器將命令從容器內(nèi)部發(fā)送到磁盤。
作者:Ben Swartzlander(NetApp),Saad Ali(谷歌)
Kubernetes v1.13將裸盤(raw block volume)支持轉(zhuǎn)移到beta。此功能允許持久卷(persistent volume)作為塊設(shè)備(block device),而不是作為已安裝的文件系統(tǒng)在容器內(nèi)部公開。
什么是塊設(shè)備?塊設(shè)備允許隨機(jī)訪問固定大小的塊中的數(shù)據(jù)。硬盤驅(qū)動(dòng)器、SSD和CD-ROM驅(qū)動(dòng)器都是塊設(shè)備的示例。
持久存儲(chǔ)通常以分層方式實(shí)現(xiàn),在塊設(shè)備(如旋轉(zhuǎn)磁盤或SSD)之上使用文件系統(tǒng)(如ext4)。然后,應(yīng)用程序讀取和寫入文件,而不是在塊上操作。操作系統(tǒng)負(fù)責(zé)使用指定的文件系統(tǒng),將文件作為塊讀取和寫入底層設(shè)備。
值得注意的是,整個(gè)磁盤都是塊設(shè)備,磁盤分區(qū)也是,存儲(chǔ)區(qū)域網(wǎng)絡(luò)(SAN)設(shè)備的LUN也是。
為什么要將裸盤添加到kubernetes?有些專門的應(yīng)用程序需要直接訪問塊設(shè)備,例如,文件系統(tǒng)層會(huì)引入不必要的開銷。最常見的情況是數(shù)據(jù)庫(kù),它們更喜歡直接在底層存儲(chǔ)上組織數(shù)據(jù)。裸盤設(shè)備也常用于任何本身實(shí)現(xiàn)某種存儲(chǔ)服務(wù)的軟件(軟件定義的存儲(chǔ)系統(tǒng))。
從程序員的角度來看,塊設(shè)備是一個(gè)非常大的字節(jié)數(shù)組,通常具有一些最小的讀寫粒度,通常為512字節(jié),但更常見為4K或更大。
隨著在Kubernetes內(nèi)部運(yùn)行數(shù)據(jù)庫(kù)軟件和存儲(chǔ)基礎(chǔ)架構(gòu)軟件變得越來越普遍,Kubernetes中對(duì)裸盤設(shè)備支持的需求變得更加重要。
哪個(gè)卷插件支持裸盤?在發(fā)布此博客時(shí),以下樹內(nèi)(in-tree)卷類型支持裸盤:
AWS EBS
Azure Disk
Cinder
Fibre Channel
GCE PD
iSCSI
Local volumes
RBD (Ceph)
Vsphere
樹外(Out-of-tree)CSI卷驅(qū)動(dòng)程序也可以支持裸盤。 Kubernetes CSI對(duì)裸盤的支持目前是alpha。請(qǐng)參閱此處的文檔。
Kubernetes裸盤API裸盤與普通卷有很多共同點(diǎn)。兩者都是通過創(chuàng)建綁定到PersistentVolume對(duì)象的PersistentVolumeClaim對(duì)象來請(qǐng)求的,并通過將它們包含在PodSpec的volumes數(shù)組中而附加到Kubernetes中的Pod。
但是有兩個(gè)重要的區(qū)別。首先,要請(qǐng)求裸盤PersistentVolumeClaim,必須在PersistentVolumeClaimSpec中設(shè)置volumeMode =“Block”。將volumeMode留空與指定volumeMode =“Filesystem”相同,這會(huì)導(dǎo)致傳統(tǒng)行為。PersistentVolumes在其PersistentVolumeSpec中也有一個(gè)volumeMode字段,而“Block”類型的PVC只能綁定到“Block”類型的PV,而“Filesystem”PVC只能綁定到“Filesystem”PV。
其次,在Pods中使用裸盤時(shí),必須在PodSpec的Container部分而不是VolumeMount中指定VolumeDevice。VolumeDevices具有devicePaths而不是mountPaths,并且在容器內(nèi)部,應(yīng)用程序?qū)⒃谠撀窂街锌吹皆O(shè)備而不是已安裝的文件系統(tǒng)。
應(yīng)用程序打開、讀取和寫入容器內(nèi)的設(shè)備節(jié)點(diǎn),就像它們將與非容器化或虛擬化環(huán)境中的系統(tǒng)上的任何塊設(shè)備進(jìn)行交互一樣。
創(chuàng)建新的裸盤PVC首先,確保你選擇的存儲(chǔ)類關(guān)聯(lián)的配置程序是支持裸盤的配置程序。然后創(chuàng)建PVC。
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: my-pvc spec: accessModes: - ReadWriteMany volumeMode: Block storageClassName: my-sc resources: requests: storage: 1Gi使用裸盤PVC
在pod定義中使用PVC時(shí),可以選擇塊設(shè)備的設(shè)備路徑,而不是文件系統(tǒng)的安裝路徑。
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作為存儲(chǔ)供應(yīng)商,如何在我的CSI插件中添加對(duì)裸盤設(shè)備的支持?
CSI插件對(duì)裸盤支持仍然是alpha,但今天可以添加支持。CSI規(guī)范詳細(xì)說明了如何處理具有BlockVolume功能而不是MountVolume功能的卷請(qǐng)求。CSI插件可以支持這兩種卷。有關(guān)更多詳細(xì)信息,請(qǐng)參閱此處。
問題/陷阱因?yàn)閴K設(shè)備實(shí)際上是設(shè)備,所以可以從容器內(nèi)部對(duì)它們執(zhí)行低級(jí)操作,這是文件系統(tǒng)卷無法實(shí)現(xiàn)的。例如,實(shí)際上是SCSI磁盤的塊設(shè)備支持使用Linux ioctls向設(shè)備發(fā)送SCSI命令。
默認(rèn)情況下,Linux不允許容器將SCSI命令從容器內(nèi)部發(fā)送到磁盤。為此,你必須將SYS_RAWIO功能授予容器安全上下文(context)以允許此操作。請(qǐng)參閱此處的文檔。
此外,雖然Kubernetes保證向容器提供塊設(shè)備,但不能保證它實(shí)際上是SCSI磁盤或任何其他類型的磁盤。用戶必須確保所需的磁盤類型與其pod一起使用,或者僅部署可處理各種塊設(shè)備類型的應(yīng)用程序。
怎樣能了解更多?在此處查看有關(guān)快照功能的其他文檔。
我如何參與?加入Kubernetes存儲(chǔ)SIG和CSI社區(qū),幫助我們添加更多優(yōu)秀功能,并改進(jìn)現(xiàn)有功能如裸盤存儲(chǔ)!
鳴謝特別感謝幫助Kubernetes增加塊卷支持的所有貢獻(xiàn)者,包括:
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大會(huì)日期:
會(huì)議日程通告日期:2019 年 4 月 10 日
會(huì)議活動(dòng)舉辦日期:2019 年 6 月 24 至 26 日
KubeCon + CloudNativeCon和Open Source Summit贊助方案
KubeCon + CloudNativeCon和Open Source Summit多元化獎(jiǎng)學(xué)金現(xiàn)正接受申請(qǐng)
KubeCon + CloudNativeCon和Open Source Summit即將首次合體落地中國(guó)
KubeCon + CloudNativeCon和Open Source Summit購(gòu)票窗口,立即購(gòu)票!
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/32909.html
摘要:作者,谷歌將裸盤支持轉(zhuǎn)移到。對(duì)裸盤的支持目前是。將留空與指定相同,這會(huì)導(dǎo)致傳統(tǒng)行為。例如,實(shí)際上是磁盤的塊設(shè)備支持使用向設(shè)備發(fā)送命令。默認(rèn)情況下,不允許容器將命令從容器內(nèi)部發(fā)送到磁盤。 作者:Ben Swartzlander(NetApp),Saad Ali(谷歌) Kubernetes v1.13將裸盤(raw block volume)支持轉(zhuǎn)移到beta。此功能允許持久卷(pers...
摘要:首爆嚴(yán)重安全漏洞,嚴(yán)重性分于昨晚爆出嚴(yán)重安全漏洞,該漏洞由聯(lián)合創(chuàng)始人及首席架構(gòu)師發(fā)現(xiàn)。其他功能更新對(duì)第三方設(shè)備監(jiān)控插件的支持該功能目前被引入為功能。拓?fù)涓兄碚{(diào)度該功能現(xiàn)成為狀態(tài)。 K8S首爆嚴(yán)重安全漏洞,嚴(yán)重性9.8分 Kubernetes于昨晚爆出嚴(yán)重安全漏洞,該漏洞由Rancher Labs聯(lián)合創(chuàng)始人及首席架構(gòu)師Darren Shepherd發(fā)現(xiàn)。該漏洞CVE-2018-1002...
摘要:作者,高級(jí)軟件工程師實(shí)施的容器存儲(chǔ)接口已在版本中升級(jí)為。功能受棄用政策保護(hù)。隨著容器存儲(chǔ)接口的采用,卷層變得真正可擴(kuò)展。年中國(guó)論壇提案征集現(xiàn)已開放論壇讓用戶開發(fā)人員從業(yè)人員匯聚一堂,面對(duì)面進(jìn)行交流合作。 showImg(https://segmentfault.com/img/bVbnBe1?w=620&h=340); 作者:Saad Ali,Google高級(jí)軟件工程師 Kuberne...
摘要:作者,高級(jí)軟件工程師實(shí)施的容器存儲(chǔ)接口已在版本中升級(jí)為。功能受棄用政策保護(hù)。隨著容器存儲(chǔ)接口的采用,卷層變得真正可擴(kuò)展。年中國(guó)論壇提案征集現(xiàn)已開放論壇讓用戶開發(fā)人員從業(yè)人員匯聚一堂,面對(duì)面進(jìn)行交流合作。 showImg(https://segmentfault.com/img/bVbnBe1?w=620&h=340); 作者:Saad Ali,Google高級(jí)軟件工程師 Kuberne...
摘要:和網(wǎng)站不時(shí)發(fā)布來之全世界的博客文章和案例研究。提交案例研究案例研究強(qiáng)調(diào)組織如何使用解決實(shí)際問題??纯船F(xiàn)有案例研究材料。 showImg(https://segmentfault.com/img/bVbp45W?w=1280&h=545); CNCF和Kubernetes網(wǎng)站不時(shí)發(fā)布來之全世界的博客文章和案例研究。 近期的博客文章有: 使用Ansible和Vagrant設(shè)置Kubern...
閱讀 7669·2023-04-25 14:36
閱讀 1763·2021-11-22 09:34
閱讀 2155·2019-08-30 15:55
閱讀 3150·2019-08-30 11:19
閱讀 1310·2019-08-29 15:17
閱讀 552·2019-08-29 12:47
閱讀 2996·2019-08-26 13:38
閱讀 2630·2019-08-26 11:00