查看原文
其他

Kubernetes 无处不在:云原生存储呢?

常华Andy Andy730 2024-03-16

Source: Alex McDonald, Kubernetes is Everywhere Q&A, August 2, 2022


上个月,SNIA 云存储技术计划举办了一场引人入胜的小组讨论“Kubernetes 无处不在:云原生存储怎么样?”(Kubernetes is Everywhere: What About Cloud Native Storage?)来自SNIA的存储专家和来自云原生计算基金会(CNCF)的Kubernetes专家讨论了存储对Kubernetes的影响。这是一次关于容器存储关键考虑因素的生动而富有启发性的讨论。在这个问答博客中,我们的小组成员Nick Connolly,Michael St-Jean,Pete Brey 和我在会议期间详细阐述了一些最有趣的问题。


问:与数据中心相比,边缘 Kubernetes 存储有哪些额外的/不同的挑战?


答:边缘的含义因场景而异。它可能意味着企业或服务商边缘站点,其典型特征是 Kubernetes 的小型、紧凑部署。这可能意味着Kubernetes部署在一个很少或没有IT支持的站点的单个节点上,甚至与互联网断开连接,在船舶、石油钻井平台上,甚至在太空中。它也可能意味着设备边缘,例如在小型计算机上运行或在ARM或FPGA卡中运行的MicroShift。


对于边缘的 Kubernetes 来说,一个巨大的挑战是提供轻量级部署。许多边缘应用程序都需要添加的组件(如容器本机存储),但它们会占用资源。因此,最大的挑战是部署工作负载所需的存储资源,但同时要确保占用空间适合部署基础结构。


例如,有针对紧凑型边缘群集的容器存储的部署,并且有关于单节点部署的工作。另一项新兴技术是使用数据镜像、数据缓存和数据联邦技术来提供边缘设备与企业边缘部署或云或数据中心部署之间的访问。


问:容器本机存储是什么意思 — 它与 SAN 有何不同?


答:容器原生存储包括 Kubernetes 服务,这些服务允许动态和静态配置、第 1 天和第 2 天的操作和管理,以及必须在 Kubernetes 集群场景中部署的其它数据服务,如安全性、治理、弹性和数据发现。SAN 可以通过容器存储接口 (CSI) 连接到群集,但它通常不具备容器本机存储解决方案提供的所有功能。但是,一些容器原生存储解决方案可以使用底层 SAN 或 NAS 设备来提供核心存储基础架构,同时提供集群所需的 Kubernetes 感知服务。通过这种方式,组织可以利用现有的基础设施,保护他们的投资,同时仍然获得集群中运行的应用程序和工作负载所需的Kubernetes服务。


问:你提到 Kubernetes 在监控应用程序并使其保持正常运行方面做得很好,但是当这种情况发生时,它如何防止对存储的裂脑操作呢? 


答:这将是容器本机存储提供程序提供的函数。存储服务将包括某种类型的数据仲裁器,以防止裂脑。例如,软件定义的存储子系统内的监视器可以维护环境的集群映射和状态,以便提供分布式决策。监视器通常配置为奇数,即 3 或 5,具体取决于群集的大小和拓扑,以防止出现裂脑情况。监视器不在数据路径中,并且不处理传入和传出客户端的 IO 请求。


问:那么,我是否需要为此购买一个全新的基础架构,或者我可以使用现有的 SAN?


答:一些容器原生存储解决方案可以使用现有的存储基础设施,因此通常您可以保护在现有资本基础设施购买方面的投资,同时获得集群和应用程序所需的 Kubernetes 数据服务的优势。


问:如何在多租户环境中确保数据安全?


答:容器原生存储解决方案可以解决有关数据安全性的问题,但是这些服务的集成应该与为Kubernetes环境提供的其它安全工具一起考虑。例如,应考虑容器本机存储解决方案为静态数据以及动态数据提供加密的能力。集群范围的加密应该是默认要求;但是,您可能还希望将数据从一个租户(应用程序)加密到另一个租户(应用程序)。这将需要卷级加密,并且您需要确保您的提供程序具有在克隆和快照上创建不同密钥的算法。您还应该考虑加密密钥的存储位置。使用与外部密钥管理系统集成的存储解决方案可防止群集内的黑客攻击。为了提高数据安全性,查看解决方案体系结构、底层操作系统内核保护的内容以及存储软件如何利用其加密 API 非常有用。与您的 Kubernetes 分发身份验证过程完全集成也很重要。近年来, 勒索软件 攻击也变得普遍。虽然某些系统试图防范 勒索软件 攻击,但最好的建议是确保对数据进行适当的加密,并且具有实质性的数据保护和灾难恢复策略。Kubernetes 环境中的数据保护 比典型的数据中心稍微复杂一些,因为在 Kubernetes 中运行的应用程序的状态由持久性存储声明保持。备份数据时,数据保护解决方案中必须具有群集感知 API,这些 API 能够捕获群集及其关联的应用程序的场景。其中一些 API 可能作为容器本机存储部署的一部分提供,并与现有的数据中心备份和恢复解决方案集成。还可以实现其它业务连续性策略,如大都市和区域灾难恢复群集。与与您选择的 Kubernetes 发行版配合使用的多集群控制平面解决方案集成有助于促进广泛的业务连续性策略。


问:数据访问模式和数据协议之间有什么区别?


答:您可以根据您拥有的存储类型创建持久卷(或 PV)。该存储通常支持一个或多个数据协议。例如,您可能已将存储设置为支持 NFS 和 SMB 协议的 NAS。因此,您有文件协议,并且您可能设置了一个 SAN 来支持运行块协议的数据库,或者您可能有一个分布式存储系统,其中包含运行对象协议的数据湖或归档,或者它可以在单独的存储池中运行所有三个协议。


在 Kubernetes 中,您将可以访问这些 PV,当用户需要存储时,他们将为其项目请求持久卷声明(或 PVC)。或者,某些系统也支持对象存储桶声明。在任何情况下,当您发出该声明请求时,您都是根据具有不同访问模式的存储类、RWO(读写一次,其中卷可以由单个节点挂载为读写)、RWX(读写多次。这是卷可以由许多节点作为读写挂载的地方),和ROX(只读多 - 卷可以由许多节点作为只读挂载。


不同类型的存储 API 能够 支持这些不同的访问模式。例如,EBS或Cinder等块协议将支持RWO。像Azure File或Manilla这样的文件系统将支持RWX。NFS 将支持所有 3 种访问模式。


问:什么是对象存储桶声明和命名空间存储桶?


答:对象存储桶声明类似于上面提到的 PVC,不同之处在于它们是使用存储类在 Kubernetes 项目中预配和访问对象存储的方法。由于对象存储的接口与块存储或文件存储的接口不同,因此有一个单独的 Kubernetes 标准称为 COSI。通常,想要挂载对象存储池的用户将通过 S3 RESTful 协议进行连接。命名空间存储桶更多地用于跨环境的数据联邦。因此,例如,您可以在 AWS 上部署一个命名空间存储桶,并将其与后端数据一起部署,并且可以由在其它地方(如 Azure、数据中心或边缘)的 Kubernetes 集群中运行的客户端访问和读取该命名空间存储桶。


问:为什么备份和恢复被列为容器本机存储的一项功能?我不能只使用我的数据中心数据保护解决方案吗?


答:正如我们所提到的,容器本质上是短暂的。因此,如果丢失了应用程序或群集,则该应用程序的状态将丢失。Kubernetes 中应用程序的状态由与该应用程序关联的持久性存储保持。因此,在备份数据时,它需要位于应用程序和整个集群资源的场景中,以便在还原时,可以使用 API 来恢复 Pod 的状态。一些企业数据保护解决方案包括集群感知 API,它们可用于将数据中心数据保护扩展到 Kubernetes 环境。值得注意的是,IBM Spectrum Protect Plus,Dell PowerProtect,Veritas等。还有特定于Kubernetes的数据保护解决方案,如Veeam,Trilio,Bacula的Kasten。您可以使用现有的企业解决方案只要确保检查他们是否在他们的产品中支持集群感知的Kubernetes API。


问:同样,为 Kubernetes 规划灾难恢复有什么不同?


答:与 备份/恢复讨论类似,由于应用程序的状态由持久性存储层保持,因此故障和恢复需要包括群集感知 API,但除此之外,如果您尝试恢复到另一个群集,则需要一个跨群集管理资源的控制平面。灾难恢复确实成为有关恢复点目标和恢复时间目标的问题。它可以像每天晚上将所有内容备份到磁带并将这些磁带运送到另一个区域一样简单。当然,您的恢复点可能是一整天,您的恢复时间会有所不同,具体取决于您是否有要恢复到的实时集群等。


还可以有一个延展群集,该群集具有跨故障域物理分隔的各个节点的群集。通常,您需要高度了解网络功能,因为例如,如果您要在园区或同城中扩展集群,则可以在没有适当网络带宽和延迟的情况下显著降低性能。


可以采用其它选项,如同步同城 DR 或异步区域性 DR,但您的恢复能力或恢复时间目标将在很大程度上取决于您可以为恢复构建的自动化程度。请注意,并做好功课,了解有哪些控制层面工具可用,以及它们如何与您选择的存储系统集成,并确保它们与您的恢复时间目标保持一致。


问:在此场景中,群集级加密和卷级加密之间有什么区别?


答:为了安全起见,您需要确保您的存储解决方案支持加密。群集范围的加密在设备级别,可防止外部违规。作为一项高级功能,某些解决方案还提供卷级加密。这可以保护单个应用程序或租户免受群集中其它应用程序或租户的影响。加密密钥是 创建的,可以存储在群集中,但随后具有群集访问权限的人员可能会破解这些密钥,因此支持与外部密钥管理系统集成也是增强安全性的首选。


问:其中一些治理要求,如SEC,FINRA,GDPR呢?容器本机存储有何帮助?


答:这实际上是一个关于存储系统安全因素的问题。GDPR有很多治理要求,确保您拥有适当的安全性和加密,以防数据丢失是关键优先事项。FINRA更像是与证券交易委员会合作的美国金融经纪监管。数据不可变性之类的东西可能是金融机构的一个重要特征。其它机构(如美国政府)有加密要求,例如 FIPS,它用于认证操作系统内核中的加密 API。一些使用这些加密API的存储解决方案将更适合特定的用例。因此,这并不是您的存储是否经过任何这些监管委员会认证的问题,而是确保与 Kubernetes 集成的持久存储层不会破坏整个解决方案的合规性。


问:如何在 Kubernetes 中使用数据联邦?


答:由于Kubernetes提供了一个编排和管理平台,可以跨许多不同的基础架构交付,无论是在本地,公有云还是私有云等,因此能够在不同基础架构之上从Kubernetes集群中访问和读取来自单个源的数据,为多云和混合云部署提供了巨大的优势。还有一些工具允许您跨不同的存储平台联合SQL查询,无论它们是否在Kubernetes中。将覆盖范围扩展到现有的集群外数据有助于通过分析引擎构建数据洞察,并为机器学习模型管理提供数据发现。


问:在 Kubernetes 中,哪些工具使数据采集和准备与众不同?


答:将数据从边缘设备或物联网引入 Kubernetes 可以让数据工程师创建自动化的数据管道。使用 Kubernetes 中的一些工具(如 Knative),允许工程师创建触发事件,这些事件从系统中的应用程序生成,从而进一步自动化工作流。其它工具(如存储桶通知和 Kafka 流)可以帮助移动、操作和增强工作流中的数据。许多组织正在使用分布式应用程序工作流来构建使用 Kubernetes 的差异化用例。

继续滑动看下一个
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存