然而,在Kubernetes v1。0中,除了所有这些用于无状态工作负载的出色功能之外,Persistent Volumes —还是一种Kubernetes本机机制,用于将持久存储附加到临时豆荚中。显然,从一开始就考虑支持有状态的工作量的意图,并在此过程中进行了一些显着的改进:
2017年12月(v1。9)StatefulSets —的一般可用性,可提供豆荚身份特征和有序操作的持续性
2018年12月(v1。13)容器存储接口(CSI)的一般可用性—,该标准允许任何存储制造商创建自己的插件,以向Kubernetes工作负载提供存储
2018年5月推出运营商框架—软件开发套件(SDK),以简化Kubernetes上高级工作负载(例如数据库)的部署和管理
2020年12月(v1。20)CSI规范—中卷快照的一般可用性,提供了用于在Kubernetes中执行存储快照操作的标准化接口
这些改进,加上许多不同的供应商和项目贡献者的努力,创建了一个丰富的生 印度 whatsapp 数据 态系统,使用户可以自由选择哪些数据服务将提供其应用程序状态以及这些工作负载将在何处运行。
在此期间,Kubernetes社区看到了另一个改善集装箱编排— GitOps的想法。这个概念很简单:使用源代码控制作为真理的来源,存储部署应用程序所需的一切,包括代码和Kubernetes资源。每次将代码合并到存储库中以进行更改时,控制器都会更新部署以反映Git中描述的所需状态。GitOps实现可以提供更改控制的机制,单击即可重新部署整个环境的能力以及还原错误更改的方法— 有时。
只是因为库伯内特斯 可以 运行状态良好的工作量,这是否意味着您应该这样做?
负责构建概念验证应用程序,开发人员通常可以选择云托管,托管数据库或DBaaS,以将其持久数据托管在Kubernetes群集之外。DBaaS解决方案提供了对开发人员友好的API,并且无论用户的数据库管理专业知识水平如何,都可以快速地为用户提供价值。但是,通常情况下,最简单的方法并不总是最好的。让我们探讨考虑在群集内部与外部运行状态性工作负载的原因:
潜伏 —将数据服务与其他容器化工作负载一起共置有助于确保与数据的低延迟连接,以提供一致的用户体验。
流动性 — Kubernetes提供了很强的抽象层,使您可以在不同的云之间移动相同的工作量。这使组织可以满足数据主权需求,或者只是利用更好的定价条件。但是,如果您的数据服务与特定于云的DBaaS绑定在一起,则在环境之间进行迁移将变得更加复杂。假设存在并满足要求,则需要为目标云中的等效托管数据库重新创建为一个DBaaS创建的自动化和策略。从外部数据服务重新部署Kubernetes工作负载将需要单独的工具和处理。