基于Kubernetes的服务网格介绍

栏目: IT技术 · 发布时间: 4年前

内容简介:在Kubernetes和微服务之间,服务网格提供了重要的一层。服务网格与Kubernetes和微服务结合的必要性

在Kubernetes和微服务之间,服务网格提供了重要的一层。

基于Kubernetes的服务网格介绍

服务网格与Kubernetes和微服务结合的必要性

Kubernetes已经解决了容器编排的问题,对于云原生生态圈来说,剩下的问题是如何使微服务的交付更有效和更有弹性。这个问题可以通过服务网格技术来实现。

近年来,像Istio, Envoy and Linkerd这样的开源服务网格项目越来越受欢迎。本文主要探讨服务网格的基本原理,单个vanilla Kubernetes面临的挑战,并介绍了几种Kubernetes服务网格产品。

什么是服务网格?

服务网格是一个网络基础设施层,应用程序不同部分之间的通讯通过它来控制和可视化。现在的应用往往都是通过这种方式工作的。网络被分成不同的部分,每个部分都是一个服务,每个服务执行特定的业务功能。

一个服务可能需要从其它服务请求数据才能执行自身的功能。通常,有些服务会因为请求过量而超载,这就是服务网格有用的地方。服务网格通过把请求从一个服务路由到另外一个服务,来优化不同部分之间的通信。

服务网络组建包括:

  • 控制平面:主要负责代理配置,策略管理和TLS证书权限。控制平面搜集所有的网络度量数据。服务网格的一些实现也能够跟踪服务。
  • 数据平面:由轻量级代理组成。这些代理作为边车形式分布。代理包括Envoy或者NGINX。您可以使用数据平面去创建自己的Kubernetes服务网格。

普通vanilla Kubernetes面临的挑战及服务网格对此发挥的作用

当您使用一个普通的vanilla Kubernetes集群而不是服务网格时,你将遇到以下的问题:

服务器之间的安全通讯

普通vanilla Kubernetes并不对集群节点间的流量进行加密,因此,服务之间的通信并不安全。 您可以使用TLS证书使得Kubernetes服务之间的通信变得安全。

使用TLS意味着DevOps团队必须管理和更换证书。此外,您的开发团队必须将TLS证书集成到每个服务中。

服务网格会加密所有的网络流量,从而使您的团队节省了时间。服务网格将TLS边车插入到每个Kubernetes Pod中,通过控制平面为您进行证书的更换。

服务延迟追踪

单个vanilla Kubernetes集群故障排除并不是每次都会给您提供造成问题的根源。例如,对于延迟问题,您必须分析单个服务的数据。然而,这些数据可能与外部服务的通信无关。造成问题的原因,有可能与查询或者前端应用有关。

要解决这个问题,您必须监控代码的性能,分析错误并且跟踪应用程序中的每个服务请求。像Istio这样的服务网格平台提供了内置的分布式跟踪,并且不需要对代码进行检测。

服务网格使用代理边车通过出口和入口路由流量。然后边车添加请求头信息,方便请求跟踪,因此,您不需要分析代码就能获得所有请求的跟踪信息。

有限负载均衡

当前端需要处理更多流量时,如何更快的精确定位流量瓶颈并扩大前端规模?单纯的Kubernetes并不能提供解决方式。另一方面,服务网格提供了内置的度量标准,您可以利用这些度量来实现更先进的负载平衡。

不同的Kubernetes服务网格实现

下面的列表回顾了三种目前存在的Kubernetes服务网格产品。列表明确指出了选择不同服务网格产品时的重要差异。

Istio

Istio是一个开源的服务网格,主要用于管理多个服务代理。Istio由Google, IBM和Lyft联合研发。最开始仅针对Kubernetes部署,后又重新设计以支持所有的微服务平台。Istio默认与Envoy代理集成。Istio更关注可伸缩性、性能、可移植性和保持松散耦合组件的灵活性。

Istio的控制平面使用 Go 语言编写。操作人员使用控制平面来组合不同的管理策略,每个控制平面组件都被设计用于不同的应用程序,因此Istio可以与不同的底层数据平面配对使用。

Istio的主要功能包括:

  • 安全特性,包括RBAC、身份和密钥管理。
  • 高级限流、策略和配额
  • 支持HTTP/1.x、HTTP/2、GRPC、WebSockets和所有TCP流量
  • 故障注入
  • 多平台、混合部署

Linkerd

Linkerd是2016年2月发布的开源服务网格项目,是服务网格家族的第一个产品。平台的服务网格设计很强大且功能很丰富,可以运行在任何环境。Linkerd基于Finagle库,用Scala语言编写。它可以通过扩展,每秒管理数千个请求。

Linkerd的包由一个控制平面和一个代理数据平面组成。Linkerd还有一个由Buoyant支持的商业版。当前Linkerd版本包含服务网格接口(SMI)流量API,此API能够帮忙您自动化Canary部署和其它的高级交付方法。

Linkerd的主要功能包括:

  • 支持不同的平台,比如Kubernetes,Docker,Amazon ECS,DC/OS
  • 使用内置的服务发现抽象统一多个系统
  • 支持HTTP/1.x、HTTP/2、GRPC、WebSockets和所有TCP流量

AWS应用程序网格

AWS应用程序网格是一种服务网格解决方案,它简化了AWS中的微服务监控和管理,使您能够控制AWS服务(比如ECS、EKS、EC2)之间的通信和网络流量。此外,应用程序网格使您能够监视、跟踪和查看微服务日志记录。

您可以在应用程序中部署应用程序网格的数据平面,但控制平面由Amazon管理,用户无法访问它。

结论

希望本文能帮助您了解什么是服务网格,以及如何使用这些工具,也希望帮助您确定在哪里开始您的服务网格之旅。

评估服务网格选型需要全面研究,本文仅介绍了目前存在的三种方式。在决定一个解决方案之前,一定要尝试不同的选择,看看哪个最适合您的环境。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Rust编程之道

Rust编程之道

张汉东 / 电子工业出版社 / 2019-1 / 128

Rust 是一门利用现代化的类型系统,有机地融合了内存管理、所有权语义和混合编程范式的编程语言。它不仅能科学地保证程序的正确性,还能保证内存安全和线程安全。同时,还有能与C/C++语言媲美的性能,以及能和动态语言媲美的开发效率。 《Rust编程之道》并非对语法内容进行简单罗列讲解,而是从四个维度深入全面且通透地介绍了Rust 语言。从设计哲学出发,探索Rust 语言的内在一致性;从源码分析入......一起来看看 《Rust编程之道》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

html转js在线工具
html转js在线工具

html转js在线工具