当前位置: 首页 > 科技观察

基于Kubernetes的ServiceMesh介绍

时间:2023-03-14 11:53:39 科技观察

在Kubernetes和微服务之间,ServiceMesh提供了一个重要的层。Kubernetes解决了容器编排的问题。对于云原生生态来说,剩下的问题就是如何让微服务的交付更高效、更弹性。这个问题可以通过服务网格技术来解决。近年来,Istio、Envoy和Linkerd等开源服务网格项目越来越受欢迎。本文主要讨论ServiceMesh的基本原理,单一vanillaKubernetes(普通版Kubernetes)所面临的挑战,并介绍几款KubernetesServiceMesh产品。什么是服务网格?服务网格是一个网络基础设施层,通过它可以控制和可视化应用程序不同部分之间的通信。今天的应用程序倾向于以这种方式工作。网络被划分成不同的部分,每个部分都是一个服务,每个服务执行特定的业务功能。服务可能需要从其他服务请求数据才能执行其功能。通常,一些服务会因过多的请求而过载,这就是服务网格派上用场的地方。服务网格通过将请求从一个服务路由到另一个服务来优化不同部分之间的通信。服务网络组件包括:控制平面:主要负责代理配置、策略管理和TLS证书授权。控制平面收集所有网络指标,服务网格的一些实现也能够跟踪服务。数据平面:由轻量级代理组成。这些代理作为sidecar分发。代理包括Envoy或NGINX。您可以使用数据平面创建自己的Kubernetes服务网格。vanillaKubernetes的挑战和servicemesh在这其中的作用当你使用vanillaKubernetes集群而不是servicemesh时,你会遇到以下问题:服务器之间的安全通信vanillaKubernetes是不对的集群节点之间的流量是加密的,所以通信服务之间不安全。您可以使用TLS证书来保护Kubernetes服务之间的通信。使用TLS意味着DevOps团队必须管理和替换证书。此外,您的开发团队必须将TLS证书集成到每项服务中。服务网格会加密所有网络流量,从而节省您的团队时间。服务网格将TLSsidecar插入到每个KubernetesPod中,并通过控制平面为您执行证书替换。服务延迟跟踪对单个vanillaKubernetes集群进行故障排除并不总能找到问题的根本原因。例如,对于延迟问题,必须分析单个服务的数据。但是,这些数据可能与与外部服务的通信无关。问题的原因可能与查询或前端应用有关。为了解决这个问题,需要监控代码的性能、分析错误并跟踪应用程序中的每一个服务请求。Istio等服务网格平台提供内置的分布式跟踪,不需要检测代码。服务网格使用代理边车通过出口和入口路由流量。然后sidecar添加请求头信息,方便请求跟踪,这样不用分析代码就可以获取到所有请求的跟踪信息。当有限负载均衡前端需要处理更多流量时,如何快速准确定位流量瓶颈,扩大前端规模?纯Kubernetes无法提供解决方案。另一方面,服务网格提供了内置指标,您可以利用这些指标来实现更高级的负载平衡。不同的Kubernetes服务网格实现以下列表回顾了三种当前存在的Kubernetes服务网格产品。该列表明确了在不同服务网格产品之间进行选择时的重要区别。IstioIstio是一个开源的服务网格,主要用于管理多个服务代理。Istio由谷歌、IBM和Lyft联合开发。最初仅为Kubernetes部署而设计,经过重新设计以支持所有微服务平台。Istio默认与Envoy代理集成。Istio更侧重于可扩展性、性能、可移植性和保持松散耦合组件的灵活性。Istio的控制平面是用Go语言编写的。运维人员使用控制平面来组合不同的管理策略,每个控制平面组件都是为不同的应用程序设计的,因此Istio可以与不同的底层数据平面配对。Istio的主要特性包括:安全特性,包括RBAC、身份和密钥管理。高级限流、策略和配额支持HTTP/1.x、HTTP/2、GRPC、WebSockets和所有TCP流量故障注入多平台、混合部署LinkerdLinkerd是一个开源服务网格项目,于2016年2月发布。第一个产品在家庭中。该平台的服务网格设计功能强大且功能丰富,可以在任何环境中运行。Linkerd基于Finagle库,用Scala语言编写。它可以扩展到每秒管理数千个请求。Linkerd的包由一个控制平面和一个代理数据平面组成。Linkerd还有一个由Buoyant支持的商业版本。当前版本的Linkerd包括服务网格接口(SMI)流量API,它可以帮助您自动化金丝雀部署和其他高级交付方法。Linkerd的主要功能包括:支持Kubernetes、Docker、AmazonECS、DC/OS等不同平台通过内置服务发现抽象统一多个系统支持HTTP/1.x、HTTP/2、GRPC、WebSockets和所有TCPAWS应用程序MeshAWSApplicationMesh是一种服务网格解决方案,可简化AWS中微服务的监控和管理,并使您能够控制AWS服务(例如ECS、EKS、EC2)和网络流量之间的通信。此外,应用程序网格使您能够监控、跟踪和查看微服务日志记录。您可以在您的应用程序中部署应用程序网格的数据平面,但控制平面由亚马逊管理,用户无法访问。结论我希望本文能帮助您了解什么是服务网格、如何使用这些工具以及从哪里开始您的服务网格之旅。评估服务网格选项需要深入研究,本文仅介绍目前存在的三种方法。在决定解决方案之前,一定要尝试不同的选项,看看哪个最适合您的环境。