Kubernetes + Docker + AWS 是否等同于 Azure + Service Fabric?

15
我看到 Kubernetes 的优点包括滚动部署、自动健康检查监控,以及在现有服务器故障时启用新服务器。同时,我也了解到 Kubernetes 不仅仅适用于 Docker。
这就带来了几个问题!
当 Azure 和 Service Fabric 可以提供我所说的所有功能(甚至更多)时,我为什么需要 Kubernetes?
对于 Azure 上的大规模部署,同时使用 Kubernetes 和 Service Fabric 会有意义吗?

@Downvoter:您能否解释一下为什么? - CodeMad
1
从第5分钟到第10分钟观看此链接,有一个非常棒的幻灯片可以回答你的问题。但是这个问题太宽泛了,可能会吸引带有个人观点的回答,这也可以解释为什么会有人给它投反对票(顺便说一下,我没有投反对票)。 - Peter Bons
1
在 Service Fabric 社区问答环节中曾经有类似的问题被提出。该问题开始于视频的第9分钟左右:https://m.youtube.com/watch?v=phWGBSV9pzQ - HiredMind
谢谢提供这些链接,非常有帮助。 :) - Grant Rostig
感谢大家的帮助。 - CodeMad
2个回答

38

让我们先看一下Kubernetes和Service Fabric之间的相似之处。

  • 它们都是云不可知的群集、编排和调度软件。
  • 它们都可以手动部署到任何位置的虚拟机上。
  • 它们都有"托管"的选项,意味着像Azure或Google Cloud这样的云提供商将为您托管一个群集,但通常您仍然拥有虚拟机。
  • 它们都可以部署和管理容器。
  • 它们都具有丰富的管理操作,如滚动升级、健康检查和自我修复功能。

这是一个相当高层次的视图,但应该给您一个关于每个平台适用场景的概念。

现在让我们看看它们的不同之处。小差异有很多,但我想重点关注两个非常大的概念上的差异:

  • 应用程序模型:

    • Service Fabric允许您编排任何任意的容器或EXE(无论是小的node.js应用程序还是庞大的传统应用程序),在这种意义上,它与Kubernetes类似。但总体而言,它更专注于应用程序开发,具有与平台集成的编程模型。在这方面,它与Cloud Foundry更加相似。
    • Kubernetes更专注于为应用程序编排基础架构。它并不关心如何编写应用程序。这取决于您自己去解决;Kubernetes只是想让容器运行,不管里面装了什么。
  • 状态管理

    • Kubernetes允许您向其中部署有状态的软件,通过为容器提供持久磁盘存储卷并为Pod分配唯一标识符来实现。这使您可以部署像ZooKeeper或MySQL之类的东西。
    • Service Fabric是有状态的软件。 Service Fabric被设计为一个有状态、数据感知的平台,它提供了HA状态和可扩展性原语。因此,虽然Kubernetes允许您部署有状态的事物,但Service Fabric允许您构建有状态的事物。这是经常被忽视的关键差异之一。例如:
      • 在Kubernetes上,您可以部署ZooKeeper。
      • 在Service Fabric上,您实际上可以使用Service Fabric的复制和领导选举原语自行构建ZooKeeper。
      • Kubernetes使用etcd来分布式、可靠地存储集群状态。
      • Service Fabric不需要etcd,因为Service Fabric本身就是一个分布式、可靠的存储平台。Service Fabric中的系统服务利用此功能可靠地存储群集状态。这使得Service Fabric完全自包含。

了解Service Fabric以及它与其他主要编排器的区别的关键在于它是一个有状态的平台。它所做的一切 - 调度、健康检查、滚动升级、应用程序版本控制、故障转移、自我修复等 - 都是基于它管理复制和分布式数据的事实,这些数据需要始终保持一致和高度可用。


-6

请查看以下一篇关于ACS和Azure Service Fabric之间差异的好比较文章:

https://blogs.msdn.microsoft.com/maheshkshirsagar/2016/11/21/choosing-between-azure-container-service-azure-service-fabric-and-azure-functions/

请问您提到“AWS”时是指什么?

从“开发者层面”来看,两种解决方案都可以是有状态的,但从基础设施角度来看,它们有一个重大区别:

  • Docker + Kuberest是面向“IaaS”的解决方案
  • Azure Service Fabric(如果您使用Azure服务)是PaaS解决方案。

通常情况下,“IaaS”更加昂贵,并且具有更高的维护成本。

从支持角度来看:

  • Azure Service Fabric由Microsoft提供支持
  • Docker和Kubernetest更加面向开源

希望这能帮到您。

最好的祝福


AWS(可能)指的是亚马逊网络服务。这个问题似乎是关于比较不同云平台及其功能,而不是使用Azure的IaaS vs PaaS。 - jdno
感谢您的反馈,那么我并没有真正回答问题。无论如何做出选择,关于基础设施和相关维护影响的问题似乎是合理的,并且需要解决。关于技术本身,Azure Service Fabric是面向状态的,这是与其他容器技术(至少在Azure上)的关键区别。 - Nicolas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接