溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何分析Kubernetes的卷克隆Alpha

發(fā)布時(shí)間:2021-12-20 10:43:10 來源:億速云 閱讀:136 作者:柒染 欄目:云計(jì)算

如何分析Kubernetes的卷克隆Alpha,針對(duì)這個(gè)問題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡(jiǎn)單易行的方法。

什么是克???

許多存儲(chǔ)系統(tǒng)提供創(chuàng)建卷的“克隆”功能??寺∈且粋€(gè)現(xiàn)有卷的副本,它是系統(tǒng)上自己惟一的卷,但是源上的數(shù)據(jù)被復(fù)制到目標(biāo)(克?。?寺☆愃朴诳煺眨?yàn)樗蔷淼囊粋€(gè)時(shí)間點(diǎn)副本,但是我們不是從卷創(chuàng)建一個(gè)新的快照對(duì)象,而是創(chuàng)建一個(gè)新的獨(dú)立卷,有時(shí)被認(rèn)為是預(yù)填充新創(chuàng)建的卷。


為什么要把克隆技術(shù)加到Kubernetes

Kubernetes卷插件系統(tǒng)已經(jīng)提供了一個(gè)強(qiáng)大的抽象,可以自動(dòng)提供、附加和掛載塊和文件存儲(chǔ)。Kubernetes v1.15引入了對(duì)卷克隆的alpha支持。該特性允許使用Kubernetes API使用用戶命名空間中現(xiàn)有卷的內(nèi)容創(chuàng)建新卷。

所有這些特性的目標(biāo)是支持Kubernetes工作負(fù)載的可移植性:Kubernetes的目標(biāo)是在分布式系統(tǒng)應(yīng)用程序和底層集群之間創(chuàng)建一個(gè)抽象層,這樣應(yīng)用程序就可以不知道它們所運(yùn)行的集群的具體情況,并且應(yīng)用程序部署不需要特定的存儲(chǔ)設(shè)備知識(shí)。

Kubernetes存儲(chǔ)SIG將克隆操作確定為許多有狀態(tài)工作負(fù)載的關(guān)鍵功能。例如,數(shù)據(jù)庫管理員可能希望復(fù)制數(shù)據(jù)庫卷,并創(chuàng)建現(xiàn)有數(shù)據(jù)庫的另一個(gè)實(shí)例。

https://github.com/kubernetes/community/tree/master/sig-storage

通過在Kubernetes API中提供觸發(fā)克隆操作的標(biāo)準(zhǔn)方法,Kubernetes用戶現(xiàn)在可以處理這樣的用例,而無需環(huán)繞Kubernetes API(以及手動(dòng)執(zhí)行存儲(chǔ)系統(tǒng)特定的操作)。雖然克隆在行為上類似于創(chuàng)建卷快照,然后從快照創(chuàng)建卷,但是克隆操作更精簡(jiǎn),對(duì)于許多后端設(shè)備更有效。

Kubernetes用戶現(xiàn)在可以以一種集群無關(guān)的方式,將克隆操作合并到他們的工具和政策中,并且可以放心地知道,無論底層存儲(chǔ)是什么,克隆操作都可以針對(duì)任意的Kubernetes集群工作。

Kubernetes API和克隆

Kubernetes中的克隆特性是通過PersistentVolumeClaim.DataSource字段啟用的。在v1.15之前,惟一允許作為數(shù)據(jù)源(dataSource)使用的有效對(duì)象類型是VolumeSnapshot??寺√匦詳U(kuò)展了允許的PersistentVolumeclaim.DataSource.Kind字段不僅允許VolumeSnapshot,還允許PersistentVolumeClaim。現(xiàn)有行為不會(huì)更改。

沒有引入新的對(duì)象來啟用克隆。而是對(duì)PersistentVolumeClaim對(duì)象中的現(xiàn)有數(shù)據(jù)源字段進(jìn)行了擴(kuò)展,以便能夠接受同一命名空間中現(xiàn)有的PersistentVolumeClaim的名稱。重要的是要注意,從用戶的角度來看,克隆只是另一個(gè)PersistentVolume和PersistentVolumeClaim,惟一的區(qū)別是這個(gè)PersistentVolume是在創(chuàng)建時(shí)用另一個(gè)PersistentVolume的內(nèi)容填充的。創(chuàng)建之后,它的行為與任何其他Kubernetes PersistentVolume完全相同,并遵循相同的行為和規(guī)則。

哪些卷插件支持Kubernetes克?。?/strong>

Kubernetes支持三種類型的卷插件:in-tree、Flex和容器存儲(chǔ)接口(Container Storage Interface ,CSI)。有關(guān)詳細(xì)信息,請(qǐng)參閱Kubernetes Volume Plugin FAQ。

https://github.com/container-storage-interface/spec/blob/master/spec.md

https://github.com/kubernetes/community/blob/master/sig-storage/volume-plugin-faq.md

克隆只支持CSI驅(qū)動(dòng)程序(不支持in-tree或Flex)。要使用Kubernetes克隆特性,請(qǐng)確保在集群上部署了實(shí)現(xiàn)克隆的CSI驅(qū)動(dòng)程序。有關(guān)當(dāng)前支持克隆的CSI驅(qū)動(dòng)程序列表,請(qǐng)參閱CSI驅(qū)動(dòng)程序文檔。

https://kubernetes-csi.github.io/docs/drivers.html

Kubernetes克隆需求

在使用Kubernetes卷克隆之前,你必須:

  • 確保在Kubernetes集群上部署并運(yùn)行實(shí)現(xiàn)克隆的CSI驅(qū)動(dòng)程序。

  • 通過新的Kubernetes特性門啟用Kubernetes卷克隆特性(alpha默認(rèn)禁用):

    • 在API服務(wù)器二進(jìn)制文件上設(shè)置以下標(biāo)志:--features-gates=VolumePVCDataSource=true

  • 源和目標(biāo)聲明必須位于相同的命名空間中。

在Kubernetes創(chuàng)建一個(gè)克隆

要使用現(xiàn)有Kubernetes卷中的數(shù)據(jù)預(yù)先填充新的卷,請(qǐng)使用PersistentVolumeClaim中的dataSource字段。有三個(gè)參數(shù):

  • name - 要用作源的PersistentVolumeClaim對(duì)象的名稱

  • kind - 必須是PersistentVolumeClaim

  • apiGroup - 必須是""

apiVersion: v1kind: PersistentVolumeClaimmetadata:  name: pvc-clone  Namespace: demo-namespacespec:  storageClassName: csi-storageclass  dataSource:    name: src-pvc    kind: PersistentVolumeClaim     apiGroup: ""  accessModes:    - ReadWriteOnce  resources:    requests:      storage: 1Gi # NOTE this capacity must be specified and must be >= the capacity of the source volume

當(dāng)創(chuàng)建PersistentVolumeClaim對(duì)象時(shí),它將觸發(fā)一個(gè)新的卷的供應(yīng),該卷預(yù)先填充了來自指定數(shù)據(jù)源卷的數(shù)據(jù)。實(shí)現(xiàn)卷的克隆是CSI插件的責(zé)任。

作為存儲(chǔ)供應(yīng)商,我如何將對(duì)克隆的支持添加到我的CSI驅(qū)動(dòng)程序中?

有關(guān)如何在CSI插件中實(shí)現(xiàn)克隆的更多信息,請(qǐng)參考CSI文檔中給Kubernetes開發(fā)CSI驅(qū)動(dòng)程序的部分。

https://kubernetes-csi.github.io/docs/developing.html

alpha的局限性是什么?

克隆Kubernetes的alpha實(shí)現(xiàn)有以下限制:

  • 不支持跨不同命名空間克隆卷

  • 不支持跨不同存儲(chǔ)類(后端)克隆卷

未來

根據(jù)反饋和采用情況,Kubernetes團(tuán)隊(duì)計(jì)劃將CSI克隆實(shí)現(xiàn)在1.16版本推進(jìn)到beta。

關(guān)于克隆,用戶經(jīng)常遇到的一個(gè)問題是“跨命名空間克隆怎么樣?”。如前所述,當(dāng)前版本要求源和目標(biāo)位于同一個(gè)命名空間中。不過,目前正在努力提出命名空間傳輸API,Kubernetes的未來版本可能提供將卷資源從一個(gè)命名空間傳輸?shù)搅硪粋€(gè)命名空間的能力。

關(guān)于如何分析Kubernetes的卷克隆Alpha問題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI