9个开源服务网格,你怎么看?

开源云中文社区
服务网格以与应用程序代码分离的方式在堆栈中添加统一的网络功能。服务网格扩展了像Kubernetes这样的集群管理器,为微服务和容器提供可观察性指标、服务发现、负载均衡、IT运维监控和故障恢复。

哪种服务网络最适合你的组织?近年来,Kubernetes服务网格的数量迅速增加,使得这个问题很难回答。

下面我们将深入研究9种流行的开源服务网格以及提供用例建议,这些网格将支持微服务开发。

服务网格简介

服务网格为什么现在火起来了?

微服务是一种方便的开发方法。然而,随着分布式微服务架构的多元化,你会遇到部署和可伸缩性方面的问题。

容器和容器编排器(如Kubernetes)通过将服务打包为自己的运行时、执行容器并将其映射到机器来解决其中的许多问题。然而,在运维逻辑方面仍然存在差距:管理服务间通信。

服务网格以与应用程序代码分离的方式在堆栈中添加统一的网络功能。服务网格扩展了像Kubernetes这样的集群管理器,为微服务和容器提供可观察性指标、服务发现、负载均衡、IT运维监控和故障恢复。

服务网格市场概述

服务网格得到了很多追捧。正如Linkerd的创始人William Morgan所写:“这不过是一堆用户空间代理,它们被贴在你的服务旁边。”虽然这个想法很简单,“但如果你能消除所有的噪音,那么服务网格有一些实实在在的、具体的和重要的价值。”

许多服务网格的核心是Envoy,它是一个通用的、开源的代理,用作拦截流量的sidecar。

在服务网格的采用方面,Istio和Linkerd更为成熟。然而,还有许多其他选择,包括Consul Connect、Kuma、AWS App Mesh和OpenShift。下面是9个服务网格产品的关键功能介绍。

Istio

Istio是一个可扩展的开源服务网格,建立在Envoy之上,允许团队连接、保护、控制和观察服务。Istio在IBM内部使用,然后在2017年开源,现在是谷歌、IBM和Lyft的合作项目。

因此,Istio有足够的时间成熟和改进其功能集。Istio的关键特性包括负载均衡、流量路由、策略创建、指标和服务到服务的身份验证。

Istio分为两个部分:数据平面和控制平面。Istio的数据平面处理流量管理,使用Envoy sidecar代理来路由服务之间的流量和呼叫。Istio的控制平面是开发人员用来配置路由和查看指标的工具。

Istio指标的关键是细粒度的属性。它们包括与服务行为相关的特定数据值。以下是属性示例:

request.path: xyz/abc request.size: 234 request.time: 12:34:56.789 04/17/2017 source.ip: [192 168 0 1] destination.service.name: example

与其他服务网格相比,Istio在平台成熟度和对行为洞察力和运维控制的高度重视方面表现出色,带有监控仪表盘。然而,由于其先进的功能和密集的配置过程,Istio可能不像其他简单的服务网格那样可用或对开发人员友好。

Linkerd

Linkerd是“Kubernetes的超轻、安全第一服务网格”。它是开发人员的最爱,它的设置非常简单(据说安装到Kubernetes集群只需要60秒)。Linkerd使用了一个快速而精简的Rust代理,称为linkerd2-proxy,它是专门为Linkerd构建的。

Linkerd是社区驱动的,100%获得Apache许可的开源软件,也是一个CNCF的孵化项目。它也是2016年开始出现的。

使用Linkerd服务网格,应用程序可以为其Kubernetes部署添加可靠性、可观察性和安全功能。例如,增加的可见性可以帮助工程师解决服务之间的延迟问题。Linkerd不需要很多代码更改,也不需要花费几个小时来编写YAML配置文件。高质量的功能和开发人员的肯定使Linkerd成很受欢迎。

Consul Connect

来自HashiCorp的服务网格Consur Connect专注于路由和分段,通过应用程序级的sidecar代理提供服务到服务的网络功能。Consur Connect强调应用程序的安全性,代理向应用程序提供双向传输层安全性(TLS)连接以进行授权和加密。

Consul Connect的独特之处在于有两个代理选项。Connect为测试提供了自己的内置层代理,也支持Envoy。Connect强调可观察性,提供与工具的集成,以监控来自sidecar代理(如Prometheus)的数据。Consul Connect还可以灵活地满足开发人员的需求。例如,它提供了许多注册服务的选项:从编排器、使用配置文件、通过API或通过命令行界面(CLI)。

Kuma

来自Kong的Kuma是一个与平台无关的控制平面。Kuma提供了网络功能来保护、观察、路由和增强服务之间的连接。除了虚拟机之外,Kuma还支持Kubernetes。

Kuma的有趣之处在于,一个企业可以从一个统一的控制平面来操作和控制多个孤立的网格。这种能力对于需要分段和集中控制的高安全性用例是有益的。

Kuma也相对容易实现,因为它预装了捆绑策略。这些策略涵盖了常见的需求,如路由、相互TLS、故障注入、流量控制、安全和其他情况。

Kuma与Kong兼容,这使得这个服务网格成为已经在使用Kong API管理的组织的首选。

Maesh

Maesh是Containous的容器原生服务网格,它自称轻量级,比市场上的其他服务网格更易于使用。与其他网格构建在Envoy之上不同,Maesh采用Traefik——一个开源的反向代理和负载均衡器。

Maesh没有采用sidecar容器格式,而是为每个节点使用代理端点。这样做使得Maesh比其他网格更具非侵入性,因为它不编辑Kubernetes对象或修改流量而不选择加入。Maesh支持两个配置选项:用户服务对象上的注释以及服务网格接口(Service Mesh Interface,SMI)对象。

Maesh对SMI(一种新的标准服务网格规范格式)的支持是它的一个特性。如果整个行业都采用SMI,它可以提供可扩展性优势,并有可能减少供应商的锁定问题。

Maesh需要Kubernetes 1.11+和CoreDNS/KubeDNS安装。快速入门指南指出使用Helm v3安装Maesh是多么容易:

helm repo add maesh https://containous.github.io/maesh/charts helm repo update helm install maesh maesh/maesh

ServiceComb-mesher

Apache软件基金会将其ServiceComb-mesher包描述为“一个用Go编写的高性能服务网格实现”。Mesher基于Go Chassis——一个流行的Go语言的微服务开发框架。因此,Mesher继承了Go Chassis的功能,如服务发现、负载均衡、容错、路由管理和分布式跟踪。

Mesher采用sidecar设计方法,每个服务都有一个专用的Mesher sidebar代理。开发人员通过Admin API与Mesher交互并查看运行时信息。Mesher支持HTTP和gRPC,可移植到许多不同的基础设施类型,包括Docker、Kubernetes、虚拟机和裸金属环境。

Network Service Mesh(NSM)

Network Service Mesh(NSM)是一个专门为电信公司和ISP构建的服务网格,为向Kubernetes添加低级网络功能提供了一个层。NSM是一个CNCF的沙盒项目。

NSM文档显示:“具有高级L2/L3用例的网络运营商目前发现容器网络解决方案不适合他们的下一代架构。”

因此,NSM在构建时考虑了不同的假设,强调“外来”协议和异构网络配置。这使得NSM在边缘计算、5G网络和物联网设备等特定用例下具有吸引力。NSM使用一套简单的API来允许容器和外部端点之间的通信。

NSM工作在与其他服务网格不同的层上。VMware将其描述为“以连接为中心”。

AWS App Mesh

AWS的App Mesh提供“为所有服务提供应用程序级别的网络连接”,它管理服务的所有网络流量,并使用开源Envoy代理来控制进出服务容器的流量。AWS App Mesh支持HTTP/2 gRPC服务。

对于那些已经为其容器平台而与AWS基础设施结合的公司来说,AWS App Mesh可能是一个很好的服务网格选择。AWS平台(包括AWS Fargate、Amazon Elastic Container Service、Amazon Elastic Kubernetes Service(EKS)、Amazon Elastic Compute Cloud(EC2)和EC2上的Kubernetes)对AWS App Mesh不另外收费。

AWS App Mesh还与AWS生态系统中的监控工具兼容,包括诸如CloudWatch和awsx-Ray等工具,以及许多第三方提供商提供的工具。由于AWS计算服务支持AWS Outposts,AWS App Mesh可以与混合云和内部部署一起运行。

AWS App Mesh的缺点是由于缺乏开源或可扩展工具而陷入单一供应商的锁定中。

OpenShift Service Mesh

OpenShift是一个由红帽开发的容器管理平台,它可以帮助“连接、管理和观察基于微服务的应用程序”。OpenShift被描述为一个混合云企业Kubernetes平台,它预装了大量的功能,并被许多企业采用。

OpenShift Service Mesh建立在开源Istio之上,有着Istio控制和数据平面功能。OpenShift通过两个开源工具提供的跟踪和可见性功能增强了Istio。OpenShift使用Jaeger进行分布式跟踪,允许更好地跟踪服务之间如何处理请求。

OpenShift还使用Kiali为微服务配置、流量监控和跟踪分析添加了可观察性。

原文链接:

https://techbeacon.com/app-dev-testing/9-open-source-service-meshes-compared

THEEND

最新评论(评论仅代表用户观点)

更多
暂无评论