我正在从事微服务项目,该项目是 dockerized Spring Cloud Netflix 项目,包含 3 个微服务,除了一些 Netflix 服务,它们是涡轮、zipkin、发现、配置服务器等。
(现在正在本地工作。)
很快,我决定使用编排工具将我的项目部署到云提供商。
经过一番研究,我决定使用Kuberenetes。
但是,Spring CloudNetflix和库伯内特斯都有一些分布式系统的解决方案:服务发现、负载平衡、容错等。
在这种情况下,使用Netflix库。库伯内特斯似乎没有必要。
我读了这个和这个。我认为Spring Cloud Kubernetes看起来是一个变通的解决方案。
所以我的问题是:
我认为你提到的克里斯蒂安·波斯塔的文章很好。正如他所说,您可以使用开箱即用的Kubernetes发现解决方案(kub-dns)、负载平衡(使用服务)和边缘服务/网关(Ingress)来处理最常见的用例。
正如Christian还指出的那样,如果您需要通过主动查询而不是知道您要查找的内容来动态发现服务,那么Spring Cloud Kubernetes可能比直接使用Kubernetes API更好。如果您需要从配置更改中刷新应用程序并看到它快速更新而无需进行滚动更新(如果您将配置映射挂载为卷,则需要滚动更新),那么 Spring 云 Kubernetes 配置客户端可能是有价值的。如果需要客户端负载平衡,功能区集成也可能很有价值。因此,您可以从不使用Spring Cloud Kubernetes开始,并在发现它会有所帮助时添加其中的一部分。我认为最好将该项目视为添加额外的选项和便利,而不是 Kubernetes 原生解决方案的替代方案。
同样值得注意的是,你可以在Kubernetes上部署一个网飞堆栈应用程序(包括使用Zuul和eureka ),这不一定有什么问题。它的优点是你可以在Kubernetes之外使用它,如果它是Java团队,对你的特定团队来说可能更方便。主要的缺点是网飞栈非常依赖于Java,而Kubernetes是语言中立的。