Kubernetes + Docker + AWS = Azure + Service Fabric 是吗?
Is Kubernetes + Docker + AWS = Azure + Service Fabric?
我看到了 Kubernetes 的优势,包括滚动部署、自动健康检查监控以及在现有服务器出现故障时切换新服务器以采取行动。我也明白 Kubernetes 不仅仅适用于 Docker。
所以,这带来了几个问题!
当 Azure 和 Service Fabric 可以提供我所说的一切(甚至更多)时,我为什么需要 Kubernetes?
将 Kubernetes 与 Service Fabric 一起用于 Azure 上的大规模部署是否有意义?
请在下面找到一篇关于 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"时你指的是什么吗?
"developer level" 解决方案在这两种情况下都可能是有状态的,但从基础架构的角度来看,它有一个主要区别:
- Docker + Kuberest 是面向 "IaaS" 的解决方案
- Azure Service Fabric(如果您使用的是 Azure 服务)是一种 PaaS 解决方案。
IaaS 通常成本更高,维护成本也更高。
从支撑的角度来看:
- Microsoft 支持 Azure Service Fabric
- Docker 和 Kubernetest 更面向开源
希望对您有所帮助。
此致
我们先来看看Kubernetes和Service Fabric的相似之处。
- 它们都是与云无关的集群、编排和调度软件。
- 它们都可以由您手动部署到任何地方的任何一组 VM。
- 两者都有 "managed" 产品,这意味着像 Azure 或 Google Cloud 这样的云提供商将为您托管一个集群,但通常您仍然拥有 VM。
- 他们都部署和管理容器。
- 它们都有丰富的管理操作,比如滚动升级、健康检查、自愈能力
这是一个相当高层次的观点,但应该让您了解您可以 运行 每个观点的内容和位置。
现在让我们看看它们的不同之处。有很多小差异,但我想重点关注两个真正大的概念差异:
应用模型:
- Service Fabric 允许您编排任意容器或 EXE(无论是小型 node.js 应用程序还是大型遗留应用程序),在这个意义上它类似于 Kubernetes。但总的来说,它更专注于应用程序开发,特别是与平台集成的编程模型。在这方面,它比 Kubernetes 更接近于 Cloud Foundry。
- Kubernetes 更专注于为应用程序编排基础设施。它并不真正关注 如何 您编写应用程序。这取决于您自己的想法; Kubernetes 只需要一个容器 运行,不管里面装的是什么。
状态管理
- Kubernetes 允许您向其部署 有状态软件,方法是为容器提供永久性磁盘存储卷并为 pods 分配唯一标识符。这使您可以部署诸如 ZooKeeper 或 MySQL.
之类的东西
- Service Fabric 是 有状态软件。 Service Fabric 被设计为一个有状态的、数据感知的平台。它提供 HA 状态和横向扩展原语。因此,虽然 Kubernetes 允许您 deploy 有状态的东西,但 Service Fabric 允许您 build 有状态的东西。这是经常被忽视的关键差异之一。例如:
- 在Kubernetes上,可以部署ZooKeeper。
- 在 Service Fabric 上,您实际上可以使用 Service Fabric 的复制和领导者选举原语自行构建 ZooKeeper。
- Kubernetes 使用 etcd 进行集群状态的分布式、可靠存储。
- Service Fabric 不需要etcd,因为Service Fabric本身就是一个分布式的、可靠的存储平台。 Service Fabric 中的系统服务利用它来可靠地存储集群的状态。这使得 Service Fabric 完全独立。
Service Fabric 是一个有状态平台这一事实是理解它以及它与其他主要协调器有何不同的关键。它所做的一切——调度、健康检查、滚动升级、应用程序版本控制、故障转移、自我修复等——都是围绕这样一个事实设计的:它正在管理需要始终保持一致且高度可用的复制和分布式数据。
我看到了 Kubernetes 的优势,包括滚动部署、自动健康检查监控以及在现有服务器出现故障时切换新服务器以采取行动。我也明白 Kubernetes 不仅仅适用于 Docker。
所以,这带来了几个问题!
当 Azure 和 Service Fabric 可以提供我所说的一切(甚至更多)时,我为什么需要 Kubernetes?
将 Kubernetes 与 Service Fabric 一起用于 Azure 上的大规模部署是否有意义?
请在下面找到一篇关于 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"时你指的是什么吗?
"developer level" 解决方案在这两种情况下都可能是有状态的,但从基础架构的角度来看,它有一个主要区别:
- Docker + Kuberest 是面向 "IaaS" 的解决方案
- Azure Service Fabric(如果您使用的是 Azure 服务)是一种 PaaS 解决方案。
IaaS 通常成本更高,维护成本也更高。 从支撑的角度来看:
- Microsoft 支持 Azure Service Fabric
- Docker 和 Kubernetest 更面向开源
希望对您有所帮助。
此致
我们先来看看Kubernetes和Service Fabric的相似之处。
- 它们都是与云无关的集群、编排和调度软件。
- 它们都可以由您手动部署到任何地方的任何一组 VM。
- 两者都有 "managed" 产品,这意味着像 Azure 或 Google Cloud 这样的云提供商将为您托管一个集群,但通常您仍然拥有 VM。
- 他们都部署和管理容器。
- 它们都有丰富的管理操作,比如滚动升级、健康检查、自愈能力
这是一个相当高层次的观点,但应该让您了解您可以 运行 每个观点的内容和位置。
现在让我们看看它们的不同之处。有很多小差异,但我想重点关注两个真正大的概念差异:
应用模型:
- Service Fabric 允许您编排任意容器或 EXE(无论是小型 node.js 应用程序还是大型遗留应用程序),在这个意义上它类似于 Kubernetes。但总的来说,它更专注于应用程序开发,特别是与平台集成的编程模型。在这方面,它比 Kubernetes 更接近于 Cloud Foundry。
- Kubernetes 更专注于为应用程序编排基础设施。它并不真正关注 如何 您编写应用程序。这取决于您自己的想法; Kubernetes 只需要一个容器 运行,不管里面装的是什么。
状态管理
- Kubernetes 允许您向其部署 有状态软件,方法是为容器提供永久性磁盘存储卷并为 pods 分配唯一标识符。这使您可以部署诸如 ZooKeeper 或 MySQL. 之类的东西
- Service Fabric 是 有状态软件。 Service Fabric 被设计为一个有状态的、数据感知的平台。它提供 HA 状态和横向扩展原语。因此,虽然 Kubernetes 允许您 deploy 有状态的东西,但 Service Fabric 允许您 build 有状态的东西。这是经常被忽视的关键差异之一。例如:
- 在Kubernetes上,可以部署ZooKeeper。
- 在 Service Fabric 上,您实际上可以使用 Service Fabric 的复制和领导者选举原语自行构建 ZooKeeper。
- Kubernetes 使用 etcd 进行集群状态的分布式、可靠存储。
- Service Fabric 不需要etcd,因为Service Fabric本身就是一个分布式的、可靠的存储平台。 Service Fabric 中的系统服务利用它来可靠地存储集群的状态。这使得 Service Fabric 完全独立。
Service Fabric 是一个有状态平台这一事实是理解它以及它与其他主要协调器有何不同的关键。它所做的一切——调度、健康检查、滚动升级、应用程序版本控制、故障转移、自我修复等——都是围绕这样一个事实设计的:它正在管理需要始终保持一致且高度可用的复制和分布式数据。