Kubernetes-服务网格是必须的吗?

Kubernetes-服务网格是必须的吗?,kubernetes,microservices,istio,linkerd,servicemesh,Kubernetes,Microservices,Istio,Linkerd,Servicemesh,最近,我用Nginx入口控制器在k8s集群中构建了几个微服务,它们工作正常 在处理微服务之间的通信时,我尝试了gRPC,它成功了。然后我发现当microservicea->gRPC->microserviceb时,所有请求只发生在microserviceb的1个pod上(例如,总共10个pod可用于microserviceb)。为了负载平衡对microservice B的所有POD的请求,我尝试了linkerd,它成功了。然而,我意识到gRPC有时会产生内部错误(例如,100个请求中有1个错误)

最近,我用Nginx入口控制器在k8s集群中构建了几个微服务,它们工作正常

在处理微服务之间的通信时,我尝试了gRPC,它成功了。然后我发现当microservicea->gRPC->microserviceb时,所有请求只发生在microserviceb的1个pod上(例如,总共10个pod可用于microserviceb)。为了负载平衡对microservice B的所有POD的请求,我尝试了linkerd,它成功了。然而,我意识到gRPC有时会产生内部错误(例如,100个请求中有1个错误),使我改为使用k8s DNS方式(例如,我的svc.my namespace.svc.cluster domain.example)。然后,请求永远不会失败。我开始支持gRPC和Linked

后来,我对istio感兴趣。我成功地将其部署到集群。然而,我观察到它总是创建自己的负载平衡器,这与现有的Nginx入口控制器不太匹配

此外,我还尝试了普罗米修斯和格拉法纳,以及K9。这些工具让我更好地了解POD的cpu和内存使用情况

在这里,我想了解几个问题:-

  • 如果我需要监控集群资源,我们有普罗米修斯、格拉法纳和K9。他们是否与服务网格(如linkerd、istio)扮演相同的监控角色
  • 如果k8s DNS已经可以实现负载平衡,我们还需要服务网格吗
  • 如果使用k8s而不使用维修网,是否落后于正常做法
  • 实际上,我每天都想使用服务网格。

    简单的答案是

    kubernetes服务器的服务网格不是必需的

    现在回答你们的问题

    如果我需要监控集群资源,我们有普罗米修斯、格拉法纳和K9。他们是否与服务网格(如linkerd、istio)扮演相同的监控角色

    K9s是一种cli工具,它只是对
    kubectl
    cli工具的替代。它不是监视工具。普罗米修斯(Prometheus)和格拉法纳(grafana)是监控工具,需要使用应用程序(POD)提供的数据,并构建可以可视化为图表、图形等的时间序列数据。然而,应用程序必须向普罗米修斯(Prometheus)提供监控数据。服务网格可以使用侧车,并提供一些用于监视的默认度量,例如
    每秒处理的请求数
    。您的应用程序不需要了解或实现任何度量。因此,服务网格是可选的,它卸载了诸如监视或授权之类的常见事务

    如果k8s DNS已经可以实现负载平衡,我们还需要服务网格吗

    负载平衡不需要服务网格。当您在群集中运行多个服务,并且希望为所有服务使用单个入口点以简化维护并节省成本时,将使用诸如Nginx、Traefik、HAProxy等入口控制器。此外,服务网格(如Istio)也带有自己的入口控制器

    如果使用k8s而不使用维修网,是否落后于正常做法

    不,今天可能有一些集群没有服务网格,但仍然使用Kubernetes


    将来,Kubernetes可能会从服务网格中带来一些功能。

    服务网格不是万能的,它不适合每个用例。ServiceMesh不会为您做任何事情,它也有缺陷和有限的功能

  • 您可以使用普罗米修斯而不必使用Istio,并且有一个非常好的应用程序监控。ServiceMesh可以为您简化一些监视任务,但这并不意味着您不能自己完成
  • 请不要将DNS视为负载平衡解决方案。Kubernetes有服务和入口来进行负载平衡。如今的Nginx入口功能非常强大,具有许多高级功能
  • 这在很大程度上取决于您的用例

  • 谢谢你的评论。我现在通过调用内部服务,而nginx入口控制器识别“auth”,并重定向到“auth服务”。你同意它已经在做“Kubernetes有服务和入口来做负载平衡”吗?是的,很好,谢谢。我个人给你贴了一个绿色的勾号。你能详细说明一下“它也有bug和有限的功能”吗?除了@Malathi所说的(我同意),如果服务网格不是负载平衡所必需的,那么它们可以提供更多关于负载平衡和路由策略的选项。将流量从一个工作负载转移到另一个工作负载,基于报头的路由到不同版本,金丝雀部署,电路中断。。。它远远超出了遥测和安全。