【发布时间】:2020-01-04 22:13:25
【问题描述】:
我们正在尝试重新构建我们的微服务并将它们移动到 Docker 容器中。我们将使用 Kubernetes 来编排容器。我们已经对如何将不同的技术与 Kubernetes 以及其他 Istio 结合使用进行了一些调查,以使一切都变得最好:-)。
然而,我们在互联网上阅读的越多,我们就越感到困惑。我们知道 Kubernetes 有入口和“入口控制器”,据我们了解,Istio 在服务间通信方面可能更好,它解决了服务发现和断路器等挑战。但我们不知道仅使用 Kubernetes ingress 是否可以解决所有这些问题?
- 为什么以及何时应该(不应该)将 Istio 与 Kubernetes 结合使用?
- 为什么以及何时应该使用入口控制器?
谢谢
【问题讨论】:
-
你可以用“普通”的 Kubernetes 做你想做的事。您可以研究 Kubernetes“服务”对象以进行发现(不是入口)。 ISTIO 在 Kubernetes 之上添加了额外的路由功能和安全性。
-
这对于 stackoverflow 来说可能是一个过于宽泛的问题,但通常就像您已经提到的那样,如果您的集群中有大量的服务间通信和路由,那么 istio 可能比普通的更适合Kubernetes。如果您拥有最初意义上的自治微服务,它们只是在某个应用程序网关(入口控制器)后面提供服务,那么 istio 只会增加不必要的开销和复杂性。简单的服务间通信总是可以通过rabbitmq、kafka等消息队列来实现的。
-
谢谢;我们有两种类型的服务间通信直接和间接。我们正在考虑使用 Kafka 进行间接通信(涵盖最终一致性)。然而,对于服务之间的直接通信,我们在选择正确的技术方面存在一些困难。
-
@user217648 “Istio”不是必须的,但在我看来,服务网格是一种可行的方法,而且在生产方面肯定需要实施。因此,我个人最喜欢的是linkerd,因为它比 istio 更快、更易于配置并且可以满足您的一切需求。大多数项目不需要交通管理左右。看看吧!
标签: kubernetes microservices kubernetes-ingress istio