容器實例是短暫的;一旦單個容器被破壞,它就不會留下任何東西。結果,需要持久性的工作負載(無論是通過保存狀態和工作產品還是訪問共享數據庫)都必須與外部系統進行交互。
為了滿足此需求,Docker和Kubernetes等管理平臺以及來自AWS,Azure和Google的云容器管理服務提供了連接到存儲卷,網絡文件系統和數據庫的機制。
由于有很多方法可以為云中的容器實現永久性存儲,因此管理員必須選擇最能滿足其獨特存儲需求的選項。
CaaS和Kubernetes的背景
容器即服務(CaaS)產品因其便捷性,可移植性,安全性,可伸縮性,性能和靈活性而成為自托管Kubernetes安裝的越來越受歡迎的替代方案。云托管容器的多功能性可以使用云服務提供商的本機服務,這對于那些偏愛在線服務而不是私有容器基礎架構的組織而言,是一個巨大的誘因。
Kubernetes已成為首選的集群管理平臺。它可以通過諸如AmazonElasticKubernetes服務(EKS),AzureKubernetes服務(AKS)和GoogleKubernetesEngine(GKE)之類的產品獲得。但是,云用戶仍然可以使用幾個選項來使用諸如AmazonElasticComputeCloud的專用計算實例或通過AWSFargate,Azure容器實例或GKE節點自動預配置的服務按需容器實例來配置群集節點。
無論管理員如何部署群集節點,Kubernetes控制平面都提供了幾種連接到永久卷和文件共享的方法,包括由云存儲服務創建的卷和文件共享。
Kubernetes存儲選項
Kubernetes中的存儲使用可能會造成混亂,因為該平臺具有很高的靈活性并支持眾多存儲平臺。實際上,Kubernetes存儲在概念上很簡單,歸結為將pod(一個或多個共享名稱空間,卷和其他設置的容器)連接到外部卷。卷可以是:
邏輯磁盤和掛載點;
阻止存儲服務,例如AmazonElasticBlockStore(EBS)或Azure磁盤;
網絡文件共享,來自運行NFS,Ceph(CephFS)等的存儲陣列,或來自AmazonElasticFileSystem(EFS)或GoogleCloudFilestore等云文件服務。
根據Kubernetes文檔,卷只是一個目錄,其中可能包含一些數據,吊艙中的容器可以訪問該目錄。管理員使用的特定卷類型將確定該目錄的名稱,支持該目錄的介質及其內容。
支持多種存儲類型的靈活性源于容器存儲接口(CSI),該標準是將塊和文件存儲公開給容器協調器(包括CloudFoundry,Kubernetes,Mesos和Nomad)的標準。Pod使用.spec.volumes文件中的配置來裝載卷,但是管理員不能嵌套卷。一個卷不能掛載或具有指向其他卷的符號鏈接。每個支持的卷類型都有一個不同的關鍵字,如Kubernetes文檔中所指定;例如,用于EBS的awsElasticBlockStore,用于Azure文件的azureFile或用于SANiSCSI卷的iscsi。
管理員經常使用持久卷帶Kubernetes功能叫做StatefulSets,管理一套吊艙的部署和擴展的API。它提供了唯一的,持久的身份,永久的主機名以及有序的自動滾動代碼更新。根據Kubernetes文檔,StatefulSet中的各個Pod可能會失敗,但是持久Pod標識符有助于將現有卷與替換發生故障的新Pod進行匹配。
容器中運行的應用程序還可以使用大多數語言提供的OpenDatabaseConnectivity驅動程序通過IP連接到外部數據庫。當管理員將AKS與用于PostgreSQL的Azure數據庫連接時,某些云服務(例如Azure)提供了說明,以最大化網絡性能并最小化數據庫開銷。
其他云數據庫服務使用Sidecar代理來支持連接方法。例如,GoogleCloudSQL代理是一種安全可靠的方法,可以將GKE應用程序鏈接到CloudSQL實例。Google提供了將外部服務映射到Kubernetes的最佳實踐,例如為外部數據庫創建服務端點,以及將統一資源標識符與端口映射一起用于托管數據庫服務。

因為CaaS產品使用現有的存儲接口,并且有用于云塊和文件服務的CSI驅動程序,所以Pod部署可以在私有,自我管理的存儲卷和共享或云資源之間進行選擇。
某些最受歡迎的CSI驅動程序選項包括:
AmazonEKSEBSCSI驅動程序
AmazonEKSEFSCSI驅動程序
Azure磁盤CSI驅動程序
Azure文件AKSCSI驅動程序
GCPGKE永久磁盤CSI驅動程序
GCPGKE文件存儲連接
GKE的GCPCloudSQL代理
同樣,KubernetesPod可以使用NFSCSI驅動程序連接到私有NAS。多家企業存儲提供商提供了針對Kubernetes設計的CSI和存儲軟件,例如DellEMCCSI插件,NetAppTrident和PureStoragePortworx。
*原文鏈接:https://searchstorage.techtarget.com/tip/Set-up-persistent-storage-for-containers-in-the-cloud