摘要:為了與規范的更改保持一致,對象中的字段已重命名為。在最初的版本中,快照不支持指定回收政策的功能。卷快照的可以是刪除或保留。年中國論壇提案征集現已開放論壇讓用戶開發人員從業人員匯聚一堂,面對面進行交流合作。
作者:Jing Xu(谷歌)、Xing Yang(華為)、Saad Ali(谷歌)
Kubernetes v1.12引入了卷快照(volume snapshot)支持作為alpha功能。在Kubernetes v1.13,它仍然是alpha功能,但增加了一些強化和一些重大更改。這篇文章總結了這些變化。
重大更改CSI spec v1.0對卷快照功能進行了一些重大更改。CSI驅動程序維護者在升級其驅動程序以支持v1.0時,應該了解這些更改。
SnapshotStatus替換為Boolean ReadyToUse在CSI v0.3.0,CreateSnapshotResponse中定義了SnapshotStatus枚舉(enum),表示快照是READY,UPLOADING,還是ERROR_UPLOADING。在CSI v1.0,SnapshotStatus已從CreateSnapshotResponse中刪除,并替換為布爾值(boolean)ReadyToUse。ReadyToUse值為true,表示完成后快照處理(post snapshot processing),例如上載,并且快照已準備好用作創建卷的源。
需要進行后快照處理的存儲系統(例如在快照完成后上傳),應該在快照完成后返回成功的CreateSnapshotResponse,并將ReadyToUse字段設置為false。這表示容器箱編排系統(Container Orchestration System,CO),可以恢復因為進行快照而停頓的任何工作負載。然后,CO可以重復調用CreateSnapshot,直到ReadyToUse字段設置為true,或該調用返回一個錯誤,指示處理中出現問題。CSI ListSnapshot調用可以與snapshot_id過濾一起使用,以確定快照是否可以使用,但不推薦使用這個方式,因為它無法在處理過程中檢測錯誤(ReadyToUse字段只是無限期地保持為false)。
CSI外部快照邊車容器(external-snapshotter sidecar container)的v1.x.x版本,已通過調用CreateSnapshot,而不是ListSnapshots來處理此更改,以檢查快照是否可以使用。當升級驅動程序到CSI 1.0時,驅動程序維護者應使用相應的1.0兼容邊車(sidecar)容器。
為了與CSI規范的更改保持一致,VolumeSnapshot API對象中的Ready字段已重命名為ReadyToUse。當執行kubectl describe volumesnapshot以查看快照的詳細信息時,用戶可以看到此更改。
時間戳數據類型快照的創建時間作為VolumeSnapshotContent API對象的一部分可供Kubernetes管理員使用。該字段使用CSI CreateSnapshotResponse中的creation_time字段填充。在CSI v1.0中,此creation_time字段類型已更改為.google.protobuf.Timestamp,而不是int64。將驅動程序升級到CSI 1.0時,驅動程序維護者必須相應地進行更改。CSI外部快照程序邊車容器的v1.x.x版本已更新以處理此更改。
棄用以下VolumeSnapshotClass參數已被棄用(deprecated),將在以后的版本中刪除。它們將替換為下面Replacement“替換”部分中列出的參數。
棄用csiSnapshotterSecretName,替換csi.storage.k8s.io/snapshotter-secret-name
棄用csiSnapshotterSecretNameSpace,替換csi.storage.k8s.io/snapshotter-secret-namespace
新功能 SnapshotContent刪除/保留(Deletion/Retain)政策如在宣布快照alpha的初始博客文章中所述,Kubernetes快照API類似于PV/PVC API:就像卷(volume),由綁定的PVC和PV對表示一樣,快照由綁定的VolumeSnapshot和VolumeSnapshotContent對表示。
對于PV/PVC對,當用戶完成使用卷時,他們可以刪除PVC。PV上的回收政策決定PV之后的處理(是刪除,還是保留)。
在最初的alpha版本中,快照不支持指定回收政策的功能。當刪除快照對象時,它總是導致快照被刪除。在Kubernetes v1.13中,添加了快照內容DeletionPolicy。它使管理員,能夠配置VolumeSnapshotContent在綁定的VolumeSnapshot對象被刪除后的處理方式。卷快照的DeletionPolicy可以是Retain(刪除)或Delete(保留)。如果未指定該值,則缺省值取決于SnapshotContent對象,是通過靜態綁定,還是動態配置創建的。
Retain(保留)Retain(保留)政策允許手動回收資源。如果是靜態創建并綁定VolumeSnapshotContent,則默認的DeletionPolicy為Retain。刪除VolumeSnapshot時,VolumeSnapshotContent繼續存在,VolumeSnapshotContent被視為“已釋放”(“released”)。但它不能用于綁定到其他VolumeSnapshot對象,因為它包含數據。由管理員決定如何處理剩余的API對象和資源清理。
Delete(刪除)Delete(刪除)政策允許從Kubernetes自動刪除綁定的VolumeSnapshotContent對象,以及外部基礎結構中的關聯存儲資產(例如AWS EBS快照,或GCE PD快照等)。動態配置的快照會繼承其VolumeSnapshotClass的刪除政策,該政策默認為Delete。
管理員應使用所需的保留政策配置VolumeSnapshotClass。創建政策后,通過修補(patching)對象,可以更改單個VolumeSnapshotContent的政策。
以下示例演示如何檢查動態調配的VolumeSnapshotContent的刪除政策。
$ kubectl create -f ./examples/kubernetes/demo-defaultsnapshotclass.yaml $ kubectl create -f ./examples/kubernetes/demo-snapshot.yaml $ kubectl get volumesnapshots demo-snapshot-podpvc -o yaml apiVersion: snapshot.storage.k8s.io/v1alpha1 kind: VolumeSnapshot metadata: creationTimestamp: "2018-11-27T23:57:09Z" ... spec: snapshotClassName: default-snapshot-class snapshotContentName: snapcontent-26cd0db3-f2a0-11e8-8be6-42010a800002 source: apiGroup: null kind: PersistentVolumeClaim name: podpvc status: … $ kubectl get volumesnapshotcontent snapcontent-26cd0db3-f2a0-11e8-8be6-42010a800002 -o yaml apiVersion: snapshot.storage.k8s.io/v1alpha1 kind: VolumeSnapshotContent … spec: csiVolumeSnapshotSource: creationTime: 1546469777852000000 driver: pd.csi.storage.gke.io restoreSize: 6442450944 snapshotHandle: projects/jing-k8s-dev/global/snapshots/snapshot-26cd0db3-f2a0-11e8-8be6-42010a800002 deletionPolicy: Delete persistentVolumeRef: apiVersion: v1 kind: PersistentVolume name: pvc-853622a4-f28b-11e8-8be6-42010a800002 resourceVersion: "21117" uid: ae400e9f-f28b-11e8-8be6-42010a800002 snapshotClassName: default-snapshot-class volumeSnapshotRef: apiVersion: snapshot.storage.k8s.io/v1alpha1 kind: VolumeSnapshot name: demo-snapshot-podpvc namespace: default resourceVersion: "6948065" uid: 26cd0db3-f2a0-11e8-8be6-42010a800002
用戶可以使用補丁(patch)更改刪除政策:
$ kubectl patch volumesnapshotcontent snapcontent-26cd0db3-f2a0-11e8-8be6-42010a800002 -p "{"spec":{"deletionPolicy":"Retain"}}" --type=merge $ kubectl get volumesnapshotcontent snapcontent-26cd0db3-f2a0-11e8-8be6-42010a800002 -o yaml apiVersion: snapshot.storage.k8s.io/v1alpha1 kind: VolumeSnapshotContent ... spec: csiVolumeSnapshotSource: ... deletionPolicy: Retain persistentVolumeRef: apiVersion: v1 kind: PersistentVolume name: pvc-853622a4-f28b-11e8-8be6-42010a800002 ...保護使用中的快照對象
“保護使用中的快照對象”(Snapshot Object in Use Protection)功能的目的,是確保不會從系統中刪除正在使用的快照API對象(因為這可能會導致數據丟失)。有兩種情況需要“使用中”(“in-use”)保護:
如果卷快照正在被PVC作為創建卷的源。
如果VolumeSnapshotContent API對象綁定到VolumeSnapshot API對象,會認為該內容對象正在使用中。
如果用戶刪除PVC正在使用的VolumeSnapshot API對象,VolumeSnapshot對象不會被立即刪除。刪除VolumeSnapshot對象被推遲,直到任何PVC不再使用VolumeSnapshot。同樣,如果管理員刪除了綁定到VolumeSnapshot的VolumeSnapshotContent,VolumeSnapshotContent不會被立即刪除。刪除VolumeSnapshotContent被推遲,直到VolumeSnapshotContent沒有綁定到VolumeSnapshot對象。
哪些卷插件支持Kubernetes快照?快照僅在CSI驅動程序支持(不適用于樹內“in-tree”或Flexvolume)。要使用Kubernetes快照功能,請確保在群集上部署實現快照的CSI驅動程序。
截至本博文發布時,以下CSI驅動程序支持快照:
GCE Persistent Disk CSI Driver
OpenSDS CSI Driver
Ceph RBD CSI Driver
Portworx CSI Driver
GlusterFS CSI Driver
Digital Ocean CSI Driver
Ember CSI Driver
Cinder CSI Driver
Datera CSI Driver
NexentaStor CSI Driver
其他驅動程序的快照支持正在等待階段,應該很快就可以使用。閱讀“Kubernetes的容器存儲接口(CSI)GA了”博客文章,了解有關CSI以及如何部署CSI驅動程序的更多信息。
下一步?根據反饋和采用情況,Kubernetes團隊計劃將CSI Snapshot實施在1.15或1.16版本推向beta。我們感興趣的一些功能包括一致性組(consistency group)、應用程序一致性快照、工作負載停頓、就地恢復等。
怎樣才能了解更多?快照API和控制器的代碼存儲庫位于:https://github.com/kubernetes...
在此處查看有關快照功能的其他文檔:http://k8s.io/docs/concepts/s...://kubernetes-csi.github.io/docs/
怎樣參與?像所有Kubernetes一樣,這個項目是許多來自不同背景的貢獻者共同努力的結果。
特別感謝所有幫助增加CSI v1.0支持,并改進此版本快照功能的貢獻者,包括Saad Ali(saadali)、Michelle Au(msau42)、Deep Debroy(ddebroy)、James DeFelice(jdef)、John Griffith (j-griffith)、Julian Hjortshoj(julian-hj)、Tim Hockin(thockin)、Patrick Ohly(pohly)、Luis Pabon(lpabon)、Cheng Xing(verult)、Jing Xu(jingxu97)、Shiwei Xu(wackxu)、Xing Yang(xing-yang)、Jie Yu(jieyu)、David Zhu(davidz627)。
有興趣參與CSI或Kubernetes存儲系統任何部分的設計和開發的人士,請加入Kubernetes存儲特別興趣小組(SIG)。我們正在快速成長,一直歡迎新的貢獻者。
我們還定期召開SIG-Storage Snapshot工作組會議。歡迎新的參與者加入設計和開發的討論。
2019年KubeCon + CloudNativeCon中國論壇提案征集(CFP)現已開放
KubeCon + CloudNativeCon 論壇讓用戶、開發人員、從業人員匯聚一堂,面對面進行交流合作。與會人員有 Kubernetes、Prometheus 及其他云原生計算基金會 (CNCF) 主辦項目的領導,和我們一同探討云原生生態系統發展方向。
2019年中國開源峰會提案征集(CFP)現已開放
在中國開源峰會上,與會者將共同合作及共享信息,了解最新和最有趣的開源技術,包括 Linux、容器、云技術、網絡、微服務等;并獲得如何在開源社區中導向和引領的信息。
大會日期:
提案征集截止日期:太平洋標準時間 2 月 15 日,星期五,晚上 11:59
提案征集通知日期:2019 年 4 月 1 日
會議日程通告日期:2019 年 4 月 3 日
幻燈片提交截止日期:6 月 17 日,星期一
會議活動舉辦日期:2019 年 6 月 24 至 26 日
2019年KubeCon + CloudNativeCon + Open Source Summit China贊助方案出爐啦
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/33119.html
摘要:為了與規范的更改保持一致,對象中的字段已重命名為。在最初的版本中,快照不支持指定回收政策的功能。卷快照的可以是刪除或保留。年中國論壇提案征集現已開放論壇讓用戶開發人員從業人員匯聚一堂,面對面進行交流合作。 showImg(https://segmentfault.com/img/bVbnEYo?w=1227&h=682);作者:Jing Xu(谷歌)、Xing Yang(華為)、Saa...
摘要:距離上一次版本發布三個月之隔,是今年的第三個主要版本。證書輪換證書輪換功能現已進入狀態。這一功能可以在當前證書到期時自動續訂密鑰和服務器的證書。更多包含許多修復和內部組件的改進,此次的更新明顯側重于穩定核心以及使現有的功能成熟。 Kubernetes1.12已于今日全新發布!Kubelet證書輪換、資源配額優先級、掛載命名空間、對Azure的增強支持等10大亮點功能,本文為你一一解讀!...
摘要:作者,高級軟件工程師實施的容器存儲接口已在版本中升級為。功能受棄用政策保護。隨著容器存儲接口的采用,卷層變得真正可擴展。年中國論壇提案征集現已開放論壇讓用戶開發人員從業人員匯聚一堂,面對面進行交流合作。 showImg(https://segmentfault.com/img/bVbnBe1?w=620&h=340); 作者:Saad Ali,Google高級軟件工程師 Kuberne...
摘要:作者,高級軟件工程師實施的容器存儲接口已在版本中升級為。功能受棄用政策保護。隨著容器存儲接口的采用,卷層變得真正可擴展。年中國論壇提案征集現已開放論壇讓用戶開發人員從業人員匯聚一堂,面對面進行交流合作。 showImg(https://segmentfault.com/img/bVbnBe1?w=620&h=340); 作者:Saad Ali,Google高級軟件工程師 Kuberne...
摘要:作者隨著西雅圖的閉幕,這是我們迄今為止最豐富的節目中所有云原生優點的快照。包括西雅圖在內,在過去兩年中提供了超過個多樣性獎學金參加。西雅圖有名導師和多名學員參加了這個計劃。 作者:Natasha Woods 隨著KubeCon西雅圖的閉幕,這是我們迄今為止最豐富的節目中所有云原生優點的快照。 門票售罄的KubeCon + CloudNativeCon北美2018是在過去的CNCF活動中...
閱讀 2491·2021-11-25 09:43
閱讀 2585·2021-11-16 11:50
閱讀 3280·2021-10-09 09:44
閱讀 3193·2021-09-26 09:55
閱讀 2834·2019-08-30 13:50
閱讀 1026·2019-08-29 13:24
閱讀 2068·2019-08-26 11:44
閱讀 2790·2019-08-26 11:37