【问题标题】:Migrate Service Fabric Reliable Collections to Kubernetes将 Service Fabric 可靠集合迁移到 Kubernetes
【发布时间】:2022-06-18 15:26:49
【问题描述】:

我们正在将 Service Fabric 服务迁移到 Kubernetes。其中大部分是“无状态”服务,易于迁移。但是,我们有一个“有状态”服务,它大量使用了 SF 的可靠集合。

K8s 有 Statefulsets,但这并不能与 SF 的可靠集合相比。

是否有 .NET 库或其他解决方案来实现类似于 SF 在 K8s 中的可靠集合?

【问题讨论】:

  • 您能否澄清一下在使用 Statefulsets 时什么特别不适合您?
  • @IvanM。不能说我已经大量使用了 Statefulsets,但由于它与我的问题有关,即使在 pod 重新启动后,它也可以更轻松地为每个实例保留有状态卷 (PV/PVC)。但是,它们并没有解决协调问题(在主实例上保存的数据会在主实例死亡时自动复制到其他实例以进行恢复)。这就是 SF 可靠收藏开箱即用的功能。

标签: kubernetes .net-core azure-service-fabric


【解决方案1】:

但是,它们并没有解决协调问题(保存在主实例上的数据会在主实例死机时自动复制到其他实例以进行恢复)。这就是 SF 可靠收藏开箱即用的功能。

StatefulSets 对于需要以下一项或多项的应用程序很有价值。

  • 稳定(持久)的唯一网络标识符。
  • 稳定、持久的存储。
  • 有序、优雅的部署和扩展。
  • 有序的自动滚动更新。

如果您的应用程序不需要任何这些,您应该使用Deployment 部署您的应用程序。

关于如何运行复制的有状态应用程序有一个很好的 Kubernetes 指南 here

本页展示了如何使用StatefulSet 控制器运行复制的有状态应用程序。此应用程序是一个复制的 MySQL 数据库。示例拓扑有一个主服务器和多个副本,使用基于行的异步复制。

StatefulSet 控制器一次启动一个 Pod,按照它们的序号排序。它会等到每个 Pod 报告已就绪,然后再开始下一个。并用于通过运行Init Containers来执行MySQL复制的有序启动。

运营商可以提供帮助

虽然 operators 不是必需的,但它们可以帮助在 Kubernetes 上运行有状态的应用程序,并提供应用程序级 HA 管理、备份和恢复等功能。

您可以使用现有的运算符或develop 您自己的。 Operator 包包括从 Kubernetes 的角度部署和管理应用程序所需的所有配置——从要使用的 StatefulSet 到任何所需的存储、推出策略、持久性和亲和性配置等等。然后,Kubernetes 将依靠操作员根据规范验证应用程序的实例,以确保它在部署它的所有集群中的实例中以相同的方式运行。

一些数据库操作员:

您可以在OperatorHub.io 上找到适合您用例的现成运算符。

【讨论】:

  • 我了解这里的基础知识,但我仍然不认为这是 Reliable Collections 的替代品。在 MySQL 示例中,仍然由 MySQL 来同步各个实例的数据。第一个 Pod 始终是主 Pod,因此如果它出现故障,则在它恢复之前不会发生写入。使用 Reliable 集合,一旦主实例出现故障,另一个实例可以立即提升为主实例,而无需停机。它处理所有副本数据的同步。所以是的,我可以从头开始构建这一切,但这并不能回答我最初的问题。
  • 这是我的观点的一部分。没有数据库。数据与实例一起存储并跨实例复制。全部自动。
  • 不幸的是,Kubernetes 中没有跨实例复制数据的内置功能。考虑将共享网络位置/fs 用于持久存储,例如用于 EKS 的 AWS EFS,或用于 AKS 的 Azure Files,或用于本地 k8s 集群的 NFS storage
【解决方案2】:

AFAIK 这不能通过使用 .Net 库来完成。 K8 是关于编排的。另一方面,SF 既是一个编排器 + 丰富的编程/应用程序模型 + 状态管理。 如果你想在 K8 中做一些可靠的收集,那么你必须要么

A) 使用领导者选举等方式构建您自己的复制解决方案。

B) 使用私有 etcd 存储

这篇文章在差异方面还是不错的。

https://docs.microsoft.com/en-us/archive/blogs/azuredev/service-fabric-and-kubernetes-comparison-part-1-distributed-systems-architecture#split-brain-and-other-stateful-disasters

【讨论】:

    猜你喜欢
    • 2017-12-08
    • 2020-01-07
    • 2017-12-07
    • 1970-01-01
    • 2016-08-09
    • 2017-12-01
    • 2016-03-14
    • 1970-01-01
    • 2017-01-28
    相关资源
    最近更新 更多