容器的持久存储是企业用户(包括那些在云中运行工作负载的用户)的普遍需求。
容器实例是短暂的;一旦单个容器被破坏,它就不会留下任何东西。结果,需要持久性的工作负载(无论是通过保存状态和工作产品还是访问共享数据库)都必须与外部系统进行交互。
为了满足此需求,Docker和Kubernetes等管理平台以及来自AWS,Azure和Google的云容器管理服务提供了连接到存储卷,网络文件系统和数据库的机制。
由于有很多方法可以为云中的容器实现永久性存储,因此管理员必须选择最能满足其独特存储需求的选项。
CaaS和Kubernetes的背景
容器即服务(CaaS)产品因其便捷性,可移植性,安全性,可伸缩性,性能和灵活性而成为自托管Kubernetes安装的越来越受欢迎的替代方案。云托管容器的多功能性可以使用云服务提供商的本机服务,这对于那些偏爱在线服务而不是私有容器基础架构的组织而言,是一个巨大的诱因。
Kubernetes已成为首选的集群管理平台。它可以通过诸如Amazon Elastic Kubernetes服务(EKS),Azure Kubernetes服务(AKS)和Google Kubernetes Engine(GKE)之类的产品获得。但是,云用户仍然可以使用几个选项来使用诸如Amazon Elastic Compute Cloud的专用计算实例或通过AWS Fargate,Azure容器实例或GKE节点自动预配置的服务按需容器实例来配置群集节点。
无论管理员如何部署群集节点,Kubernetes控制平面都提供了几种连接到永久卷和文件共享的方法,包括由云存储服务创建的卷和文件共享。
Kubernetes存储选项
Kubernetes中的存储使用可能会造成混乱,因为该平台具有很高的灵活性并支持众多存储平台。实际上,Kubernetes存储在概念上很简单,归结为将pod(一个或多个共享名称空间,卷和其他设置的容器)连接到外部卷。卷可以是:
- 逻辑磁盘和挂载点;
- 阻止存储服务,例如Amazon Elastic Block Store(EBS)或Azure磁盘;
- 网络文件共享,来自运行NFS,Ceph(CephFS)等的存储阵列,或来自Amazon Elastic File System(EFS)或Google Cloud Filestore等云文件服务。
根据Kubernetes文档,卷只是一个目录,其中可能包含一些数据,吊舱中的容器可以访问该目录。管理员使用的特定卷类型将确定该目录的名称,支持该目录的介质及其内容。
支持多种存储类型的灵活性源于容器存储接口(CSI),该标准是将块和文件存储公开给容器协调器(包括Cloud Foundry,Kubernetes,Mesos和Nomad)的标准。Pod使用.spec.volumes文件中的配置来装载卷,但是管理员不能嵌套卷。一个卷不能挂载或具有指向其他卷的符号链接。每个支持的卷类型都有一个不同的关键字,如Kubernetes文档中所指定;例如,用于EBS的awsElasticBlockStore,用于Azure文件的azureFile或用于SAN iSCSI卷的iscsi。
管理员经常使用持久卷带Kubernetes功能叫做StatefulSets,管理一套吊舱的部署和扩展的API。它提供了唯一的,持久的身份,永久的主机名以及有序的自动滚动代码更新。根据Kubernetes文档,StatefulSet中的各个Pod可能会失败,但是持久Pod标识符有助于将现有卷与替换发生故障的新Pod进行匹配。
容器中运行的应用程序还可以使用大多数语言提供的Open Database Connectivity驱动程序通过IP连接到外部数据库。当管理员将AKS与用于PostgreSQL的Azure数据库连接时,某些云服务(例如Azure)提供了说明,以最大化网络性能并最小化数据库开销。
其他云数据库服务使用Sidecar代理来支持连接方法。例如,Google Cloud SQL代理是一种安全可靠的方法,可以将GKE应用程序链接到Cloud SQL实例。Google提供了将外部服务映射到Kubernetes的最佳实践,例如为外部数据库创建服务端点,以及将统一资源标识符与端口映射一起用于托管数据库服务。
因为CaaS产品使用现有的存储接口,并且有用于云块和文件服务的CSI驱动程序,所以Pod部署可以在私有,自我管理的存储卷和共享或云资源之间进行选择。
某些最受欢迎的CSI驱动程序选项包括:
- Amazon EKS EBS CSI驱动程序
- Amazon EKS EFS CSI驱动程序
- Azure磁盘CSI驱动程序
- Azure文件AKS CSI驱动程序
- GCP GKE永久磁盘CSI驱动程序
- GCP GKE文件存储连接
- GKE的GCP Cloud SQL代理
同样,Kubernetes Pod可以使用NFS CSI驱动程序连接到私有NAS。多家企业存储提供商提供了针对Kubernetes设计的CSI和存储软件,例如Dell EMC CSI插件,NetApp Trident和Pure Storage Portworx。
*原文链接:https://searchstorage.techtarget.com/tip/Set-up-persistent-storage-for-containers-in-the-cloud