【问题标题】:Istio service mesh in on premise kubernetes cluster in data center数据中心本地 kubernetes 集群中的 Istio 服务网格
【发布时间】:2020-05-19 15:33:58
【问题描述】:

目前,由于合规性原因,我们的数据中心有 k8s 集群。我们将 traefik 作为入口控制器运行。现在我们想要添加服务网格来监控服务级别的通信。你能建议我怎么做吗?我是否要替换 traefik 入口控制器并在主机网络设置或任何其他更好的选项上设置 istio 入口,而不删除 traefik 并拥有 istio?

【问题讨论】:

    标签: kubernetes kubernetes-ingress istio traefik-ingress


    【解决方案1】:

    如果您要安装 Istio 以获得“免费”的可观察性功能,您需要记住,在某些情况下它直接不适合。例如您想获得服务中的延迟。 Istio 无法实现。

    如果您需要服务网格和/或路由,除了可观察性之外,我建议您获取 Istio,但不要仅仅为了可观察性而安装它。还有其他专门用于此目的的工具。

    不考虑您将使用集群资源的事实,为每个服务获取一个额外的容器,仅用于监控。在我看来,这不是一个好方法。

    【讨论】:

    • 所以我无法通过 istio 的东西向流量管理来获得微服务中流量的延迟?我想监控的是,在我的情况下,哪个微服务或服务需要额外的时间来响应,这会影响整个应用程序的性能。那么还有其他工具或网格来解决它吗?也谢谢你的帮助。
    • 好吧,您可以获得服务到服务的延迟,但您无法获得同一服务内的延迟。如果您在服务中有多个进程,您将获得两者的延迟,而不是每个进程。这是因为 Istio 使用标头来计算延迟。您将始终需要将某些标头从一项服务传递到另一项服务。不是很准确。如果您只需要延迟,我会选择独立的 Jaeger 或 Zipkin。这些是开源的,非常好的工具。我喜欢 Zipkin,但它不支持 Python 库,所以我使用 Jaeger。 Istio 也使用这两个。
    • 所以,基本上我们可能将 traefik 作为入口控制器,将请求路由到我们的 apiGateway。因此,我要求开发团队使用标头进行 apiGateway 背后的服务之间的通信,istio 是否会为我提供我期望的很酷的功能,例如服务延迟、服务性能监控等??