摘要:作者,高級軟件工程師實施的容器存儲接口已在版本中升級為。功能受棄用政策保護(hù)。隨著容器存儲接口的采用,卷層變得真正可擴(kuò)展。年中國論壇提案征集現(xiàn)已開放論壇讓用戶開發(fā)人員從業(yè)人員匯聚一堂,面對面進(jìn)行交流合作。
作者:Saad Ali,Google高級軟件工程師
Kubernetes實施的容器存儲接口(CSI)已在Kubernetes v1.13版本中升級為GA。CSI的支持在Kubernetes v1.9版本中作為alpha引入,并在Kubernetes v1.10版本中升級為beta。
GA里程碑表明Kubernetes用戶可能依賴于該功能及其API,而不必?fù)?dān)心將來回歸(regression)導(dǎo)致的向后不兼容的更改。GA功能受Kubernetes棄用(deprecation)政策保護(hù)。
為何選擇CSI?雖然在CSI之前,Kubernetes提供了一個功能強(qiáng)大的卷插件系統(tǒng),但是在Kubernetes添加對新卷插件的支持是一項挑戰(zhàn):卷插件是“樹內(nèi)”(“in-tree”),這意味著他們的代碼是核心Kubernetes代碼的一部分,并隨核心Kubernetes一起提供二進(jìn)制文件。希望向Kubernetes添加對其存儲系統(tǒng)的支持(或修復(fù)現(xiàn)有卷插件中的錯誤)的供應(yīng)商被迫與Kubernetes發(fā)布流程保持一致。此外,第三方存儲代碼導(dǎo)致核心Kubernetes二進(jìn)制文件中的可靠性和安全性問題,代碼通常很難(在某些情況下不可能)讓Kubernetes維護(hù)者進(jìn)行測試和維護(hù)。
CSI是作為將任意塊和文件存儲存儲系統(tǒng)暴露于容器編排系統(tǒng)(CO)上,如Kubernetes,的容器化工作負(fù)載的標(biāo)準(zhǔn)而開發(fā)的。隨著容器存儲接口的采用,Kubernetes卷層變得真正可擴(kuò)展。使用CSI,第三方存儲供應(yīng)商可以編寫和部署插件,在Kubernetes中暴露新的存儲系統(tǒng),而無需觸及核心Kubernetes代碼。這為Kubernetes用戶提供了更多存儲選項,使系統(tǒng)更加安全可靠。
新的改變?隨著升級到GA,Kubernetes對CSI的實施引入了以下變化:
Kubernetes現(xiàn)在與CSI spec v1.0和v0.3兼容(而不是CSI spec v0.2)。
CSI spec v0.3和v1.0之間存在重大變化,但Kubernetes v1.13支持這兩個版本,因此任何一個版本都適用于Kubernetes v1.13。
請注意,隨著CSI 1.0 API的發(fā)布,使用0.3或更老版本CSI API的CSI驅(qū)動程序被棄用(deprecated),并計劃在Kubernetes v1.15中刪除。
CSI spec v0.2和v0.3之間沒有重大變化,因此v0.2驅(qū)動程序也應(yīng)該與Kubernetes v1.10.0+一起使用。
CSI規(guī)范v0.1和v0.2之間存在重大變化,因此在使用Kubernetes v1.10.0+之前,必須將實現(xiàn)非常舊的CSI 0.1驅(qū)動程序更新為至少0.2兼容。
Kubernetes VolumeAttachment對象(在v1.9 storage v1alpha1 group引入,并在v1.10中添加到v1beta1 group)在v1.13已添加到的storage v1 group。
Kubernetes CSIPersistentVolumeSource卷類型已升級為GA。
Kubelet設(shè)備插件注冊機(jī)制,即kubelet發(fā)現(xiàn)新CSI驅(qū)動程序的方式,已在Kubernetes v1.13中提升為GA。
如何部署CSI驅(qū)動程序?對如何在Kubernetes上部署,或管理現(xiàn)有CSI驅(qū)動程序感興趣的Kubernetes用戶,應(yīng)該查看CSI驅(qū)動程序作者提供的文檔。
如何使用CSI卷?假設(shè)CSI存儲插件已部署在Kubernetes集群上,用戶可以通過熟悉的Kubernetes存儲API對象使用CSI卷:PersistentVolumeClaims,PersistentVolumes和StorageClasses。文檔在這里。
雖然Kubernetes實施CSI是Kubernetes v1.13中的GA功能,但它可能需要以下標(biāo)志:
API服務(wù)器二進(jìn)制文件和kubelet二進(jìn)制文件:
--allow-privileged=true
大多數(shù)CSI插件都需要雙向安裝傳播(bidirectional mount propagation),只能在特權(quán)(privileged)pod啟用。只有在此標(biāo)志設(shè)置為true的群集上才允許使用特權(quán)pod,這是某些環(huán)境(如GCE,GKE和kubeadm)的默認(rèn)設(shè)置。
動態(tài)配置你可以通過創(chuàng)建指向CSI插件的StorageClass,為支持動態(tài)配置(dynamic provisioning)的CSI Storage插件啟用卷的自動創(chuàng)建/刪除(creation/deletion)。
例如,以下StorageClass通過名為“csi-driver.example.com”的CSI卷插件,動態(tài)創(chuàng)建“fast-storage”卷。
kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: fast-storage provisioner: csi-driver.example.com parameters: type: pd-ssd csi.storage.k8s.io/provisioner-secret-name: mysecret csi.storage.k8s.io/provisioner-secret-namespace: mynamespace
GA的新功能,CSI的external-provisioner外部配置商(v1.0.1+)保留以csi.storage.k8s.io/為前綴的參數(shù)鍵。如果密鑰(key)不對應(yīng)于一組已知密鑰,則簡單地忽略這些值(并且不將其傳遞給CSI驅(qū)動程序)。CSI外部配置商v1.0.1也支持舊的秘密參數(shù)密鑰(csiProvisionerSecretName,csiProvisionerSecretNamespace等),但被棄用(deprecated),可能會在CSI外部配置商的未來版本中刪除。
動態(tài)配置由PersistentVolumeClaim對象的創(chuàng)建觸發(fā)。例如,以下PersistentVolumeClaim使用上面的StorageClass觸發(fā)動態(tài)配置。
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: my-request-for-storage spec: accessModes: - ReadWriteOnce resources: requests: storage: 5Gi storageClassName: fast-storage
調(diào)用卷配置時,參數(shù)類型:pd-ssd和秘密通過CreateVolume調(diào)用,遞給CSI插件csi-driver.example.com。作為響應(yīng),外部卷插件提供新卷,然后自動創(chuàng)建PersistentVolume對象以表示新卷。然后,Kubernetes將新的PersistentVolume對象綁定到PersistentVolumeClaim,使其可以使用。
如果快速存儲(fast-storage)StorageClass標(biāo)記為“default”,則不需要在PersistentVolumeClaim中包含storageClassName,默認(rèn)情況下將使用它。
預(yù)先配置的卷你可以通過手動創(chuàng)建PersistentVolume對象來表示現(xiàn)有卷,從而在Kubernetes中暴露預(yù)先存在的卷。例如,以下PersistentVolume暴露名為“existingVolumeName”的卷,該卷屬于名為“csi-driver.example.com”的CSI存儲插件。
apiVersion: v1 kind: PersistentVolume metadata: name: my-manually-created-pv spec: capacity: storage: 5Gi accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain csi: driver: csi-driver.example.com volumeHandle: existingVolumeName readOnly: false fsType: ext4 volumeAttributes: foo: bar controllerPublishSecretRef: name: mysecret1 namespace: mynamespace nodeStageSecretRef: name: mysecret2 namespace: mynamespace nodePublishSecretRef name: mysecret3 namespace: mynamespace連接(Attaching)和安裝(Mounting)
你可以在任何pod或pod模板中引用綁定到CSI卷的PersistentVolumeClaim。
kind: Pod apiVersion: v1 metadata: name: my-pod spec: containers: - name: my-frontend image: nginx volumeMounts: - mountPath: "/var/www/html" name: my-csi-volume volumes: - name: my-csi-volume persistentVolumeClaim: claimName: my-request-for-storage
當(dāng)引用CSI卷的pod被調(diào)度時,Kubernetes將針對外部CSI插件(ControllerPublishVolume、NodeStageVolume、NodePublishVolume等)觸發(fā)相應(yīng)的操作,以確保指定的卷被連接(attached)和安裝(mounted),并準(zhǔn)備好給pod里的容器使用。
有關(guān)詳細(xì)信息,請參閱CSI實施設(shè)計文檔和文檔。
如何編寫CSI驅(qū)動程序?kubernetes-csi網(wǎng)站詳細(xì)介紹了如何在Kubernetes上開發(fā)、部署和測試CSI驅(qū)動程序。一般而言,CSI驅(qū)動程序應(yīng)與Kubernetes一起部署以下側(cè)車/輔助(sidercar/helper)容器:
external-attacher
觀察Kubernetes VolumeAttachment對象,并觸發(fā)針對CSI端點的ControllerPublish和ControllerUnpublish操作。
external-provisioner
觀察Kubernetes PersistentVolumeClaim對象,并觸發(fā)針對CSI端點的CreateVolume和DeleteVolume操作。
node-driver-registrar
通過Kubelet設(shè)備插件機(jī)制,使用kubelet注冊CSI驅(qū)動程序。
cluster-driver-registrar (Alpha)
通過創(chuàng)建CSIDriver對象,向Kubernetes集群注冊CSI驅(qū)動程序,該對象使驅(qū)動程序能夠自定義Kubernetes與其交互的方式。
external-snapshotter (Alpha)
觀察Kubernetes VolumeSnapshot CRD對象,并觸發(fā)針對CSI端點的CreateSnapshot和DeleteSnapshot操作。
livenessprobe
可以包含在CSI插件pod中,以啟用Kubernetes Liveness Probe機(jī)制。
存儲供應(yīng)商可以使用這些組件為其插件構(gòu)建Kubernetes部署,而他們的CSI驅(qū)動程序完全不需知道Kubernetes。
CSI驅(qū)動程序列表CSI驅(qū)動程序由第三方開發(fā)和維護(hù)。你可以在此處找到CSI驅(qū)動程序的列表。
樹內(nèi)(in-tree)卷插件怎么樣?有計劃將大多數(shù)持久的遠(yuǎn)程樹內(nèi)卷插件遷移到CSI。有關(guān)詳細(xì)信息,請參閱設(shè)計文檔。
GA的限制CSI的GA實施具有以下限制:
短暫(Ephemeral)的本地卷必須創(chuàng)建PVC(不支持pod內(nèi)聯(lián)引用CSI卷)。
下一步?
致力于移動Kubernetes CSI的alpha功能到beta:
Raw block volumes
拓?fù)涓兄?。Kubernetes理解和影響CSI卷的配置位置(zone可用區(qū),region地域等)的能力。
取決于CSI CRD的功能(例如“跳過附加”和“掛載時的Pod信息”)。
卷快照
努力完成對本地短暫卷的支持。
將遠(yuǎn)程持久性樹內(nèi)卷插件遷移到CSI。
怎樣參與?Slack頻道wg-csi和谷歌討論區(qū)kubernetes-sig-storage-wg-csi,以及任何標(biāo)準(zhǔn)的SIG存儲通信渠道都是接觸SIG存儲團(tuán)隊的絕佳媒介。
像Kubernetes一樣,這個項目是許多來自不同背景的貢獻(xiàn)者共同努力的結(jié)果。我們非常感謝本季度主動幫助項目達(dá)成GA的新貢獻(xiàn)者:
Saad Ali (saad-ali)
Michelle Au (msau42)
Serguei Bezverkhi (sbezverk)
Masaki Kimura (mkimuram)
Patrick Ohly (pohly)
Luis Pabón (lpabon)
Jan ?afránek (jsafrane)
Vladimir Vivien (vladimirvivien)
Cheng Xing (verult)
Xing Yang (xing-yang)
David Zhu (davidz627)
如果你有興趣參與CSI或Kubernetes存儲系統(tǒng)的任何部分的設(shè)計和開發(fā),請加入Kubernetes存儲特別興趣小組(SIG)。我們正在快速成長,一直歡迎新的貢獻(xiàn)者。
2019年KubeCon + CloudNativeCon中國論壇提案征集(CFP)現(xiàn)已開放
KubeCon + CloudNativeCon 論壇讓用戶、開發(fā)人員、從業(yè)人員匯聚一堂,面對面進(jìn)行交流合作。與會人員有 Kubernetes、Prometheus 及其他云原生計算基金會 (CNCF) 主辦項目的領(lǐng)導(dǎo),和我們一同探討云原生生態(tài)系統(tǒng)發(fā)展方向。
2019年中國開源峰會提案征集(CFP)現(xiàn)已開放
在中國開源峰會上,與會者將共同合作及共享信息,了解最新和最有趣的開源技術(shù),包括 Linux、容器、云技術(shù)、網(wǎng)絡(luò)、微服務(wù)等;并獲得如何在開源社區(qū)中導(dǎo)向和引領(lǐng)的信息。
大會日期:
提案征集截止日期:太平洋標(biāo)準(zhǔn)時間 2 月 15 日,星期五,晚上 11:59
提案征集通知日期:2019 年 4 月 1 日
會議日程通告日期:2019 年 4 月 3 日
幻燈片提交截止日期:6 月 17 日,星期一
會議活動舉辦日期:2019 年 6 月 24 至 26 日
2019年KubeCon + CloudNativeCon + Open Source Summit China贊助方案出爐啦
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/33120.html
摘要:作者,高級軟件工程師實施的容器存儲接口已在版本中升級為。功能受棄用政策保護(hù)。隨著容器存儲接口的采用,卷層變得真正可擴(kuò)展。年中國論壇提案征集現(xiàn)已開放論壇讓用戶開發(fā)人員從業(yè)人員匯聚一堂,面對面進(jìn)行交流合作。 showImg(https://segmentfault.com/img/bVbnBe1?w=620&h=340); 作者:Saad Ali,Google高級軟件工程師 Kuberne...
摘要:首爆嚴(yán)重安全漏洞,嚴(yán)重性分于昨晚爆出嚴(yán)重安全漏洞,該漏洞由聯(lián)合創(chuàng)始人及首席架構(gòu)師發(fā)現(xiàn)。其他功能更新對第三方設(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...
摘要:為了與規(guī)范的更改保持一致,對象中的字段已重命名為。在最初的版本中,快照不支持指定回收政策的功能。卷快照的可以是刪除或保留。年中國論壇提案征集現(xiàn)已開放論壇讓用戶開發(fā)人員從業(yè)人員匯聚一堂,面對面進(jìn)行交流合作。 showImg(https://segmentfault.com/img/bVbnEYo?w=1227&h=682);作者:Jing Xu(谷歌)、Xing Yang(華為)、Saa...
摘要:為了與規(guī)范的更改保持一致,對象中的字段已重命名為。在最初的版本中,快照不支持指定回收政策的功能。卷快照的可以是刪除或保留。年中國論壇提案征集現(xiàn)已開放論壇讓用戶開發(fā)人員從業(yè)人員匯聚一堂,面對面進(jìn)行交流合作。 showImg(https://segmentfault.com/img/bVbnEYo?w=1227&h=682);作者:Jing Xu(谷歌)、Xing Yang(華為)、Saa...
摘要:讓我們深入了解這個版本的主要特性圍繞核心的可擴(kuò)展性圍繞的新開發(fā)的主題是數(shù)據(jù)一致性和原生行為。這是一個數(shù)據(jù)一致性和安全性相關(guān)的特性。用戶案例全球性組織正在大規(guī)模地使用進(jìn)行生產(chǎn)。 作者:1.15發(fā)布團(tuán)隊 我們很高興地宣布交付Kubernetes 1.15,這是我們2019年的第二個版本!Kubernetes 1.15包含25個增強(qiáng):2個升級為穩(wěn)定,13個升級為beta,10個升級為alph...
閱讀 3976·2021-10-09 09:43
閱讀 2883·2021-10-08 10:05
閱讀 2745·2021-09-08 10:44
閱讀 889·2019-08-30 15:52
閱讀 2819·2019-08-26 17:01
閱讀 3026·2019-08-26 13:54
閱讀 1657·2019-08-26 10:48
閱讀 815·2019-08-23 14:41