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

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

近年来,像Istio、Envoy和Linkerd这样的开源服务网格项目越来越受欢迎。本文主要探讨服务网格的基本原理,单个vanilla Kubernetes(plain 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管理,用户无法访问它。

结论

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

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

原文链接:https://dzone.com/articles/introduction-to-service-meshes-on-kubernetes

Kubernetes入门与实战培训

Kubernetes入门与实战培训将于2020年2月28日在北京开课,3天时间带你系统掌握Kubernetes,学习效果不好可以继续学习。本次培训包括:Docker基础、容器技术、Docker镜像、数据共享与持久化、Docker实践、Kubernetes基础、Pod基础与进阶、常用对象操作、服务发现、Helm、Kubernetes核心组件原理分析、Kubernetes服务质量保证、调度详解与应用场景、网络、基于Kubernetes的CI/CD、基于Kubernetes的配置管理等等,点击下方图片或者阅读原文链接查看详情。

基于Kubernetes的服务网格介绍相关推荐

  1. 微软开源基于 Envoy 的服务网格 Open Service Mesh

    原文地址:https://techcrunch.com/2020/08/05/microsoft-launches-open-service-mesh/ Open Service Mesh(OSM)是 ...

  2. “轻量级的”Istio,微软开源了一个基于 Envoy 的服务网格

    微软宣布了一个新的开源项目,即"开放服务网格(Open Service Mesh,OSM)".它是一种在 Kubernetes 上运行的轻量级且可扩展的服务网格:旨在作为 Serv ...

  3. Istio 实践手册 | 服务网格介绍

    <Istio 实践手册>,从服务网格概念出发,将逐步渗透到 Istio 具体细节中来,旨在帮助 Istio 学习者.使用者快速掌握相关知识点,可作为 Istio 学习.实践手册,建议收藏! ...

  4. 关于lstio服务网格介绍

    以下图片为演变过程 个人理解的服务网格 一句话代理,业务逻辑和网络功能拆分 服务网格的功能 1.负载均衡 2.服务发现 3.熔断降级 4.动态路由 5.故障注入 6.错误重试 7.安全通信 8.和语言 ...

  5. Service Mesh 如何重定义云原生计算?阿里服务网格技术大揭秘

    受访者 | 王夕宁 记者 | 伍杏玲 出品 | CSDN(ID:CSDNnews) 如今微服务已成为构建现代云应用的主导模式,它围绕着特定的业务功能,将单个组件分解为独立的服务.但随之而来产生另外的问 ...

  6. 基于 Wasm 和 ORAS 简化扩展服务网格功能

    作者 | 王夕宁  阿里云高级技术专家 来源 | 阿里巴巴云原生公众号 本文将介绍如何使用 ORAS 客户端将具有允许的媒体类型的 Wasm 模块推送到 ACR 注册库(一个 OCI 兼容的注册库)中 ...

  7. 详解如何使用Istio监控基于容器的服务

    https://www.itcodemonkey.com/article/5617.html 来自:高效开发运维(微信号:DevOpsGeek),无明 译,作者:Fred Moyer 我们应该监控服务 ...

  8. 阿里云专家详解 2020 服务网格发展趋势

    作者 | 王夕宁 阿里巴巴高级技术专家 关注"阿里巴巴云原生"公众号,参与文末留言互动,即有机会获得赠书福利! 本文摘自于由阿里云高级技术专家王夕宁撰写的<Istio 服务网 ...

  9. 服务网格领域的百花齐放

    服务网格是一种技术架构,它用于管理微服务系统中各个服务之间的通信,旨在处理微服务间的流量(也称为东西向流量). ​ 在云原生应用中,一个应用的背后可能存在着成百上千个服务,各个服务可能又有着若干个实例 ...

最新文章

  1. 在装有Ubuntu16.04的VMware虚拟机下安装OpenCV3.2.0
  2. php 全局搜索方法,php启用sphinx全文搜索的方法
  3. 机器学习(三十六)——Integrating Learning and Planning(2)
  4. 如何从开始掌控会议?
  5. 快别发语音了! | 今日最佳
  6. MongoDB嵌套数组,多维数组查询
  7. 【MySQL】 如何在“海啸”下保命
  8. 正则表达式部分总结(待续...........)如有错误,望各位高人指教
  9. 贴图问题,opengl,linux,windows,消除锯齿,摩尔纹,yuv 还是 rgb
  10. matlab去趋势,[转载]使用Matlab对数据进行去趋势(detrend)
  11. w10安装ubuntu_Windows10安装ubuntu18.04双系统教程
  12. python计算化学浓度_理论与计算化学 - 计算模拟 - 程序代码 - 小木虫论坛-学术科研互动平台...
  13. android系统能内存,安卓手机到底有多能吃RAM内存?
  14. 使用现成的组件生成伪随机二进制序列和白噪声
  15. tableau各种精典示例经验总结03
  16. java中的hwid验证,JAVA设置HttpOnly Cookies
  17. 五脏六腑在脸上的反射区图片_面部五脏反射穴位图
  18. 如何将macbook触摸板和外接鼠标的滚轮设置相反方向
  19. 原生Android设置sim卡锁定,如何为更安全的Android手机设置SIM卡锁 | MOS86
  20. 双 JK 触发器 74LS112 逻辑功能。真值表_数电实验 | 时序逻辑电路

热门文章

  1. Codeforces 6D
  2. linux mint+hdmi高清接口,添加32寸2560*1440分辨率
  3. 比荒野行动还惨的吃鸡手游:都被外挂给毁了,现在全是人机
  4. 一件极小的事,却泄漏了乐视超级电视成功的所有秘密
  5. C语言简单代码整理:大小写转换
  6. 面试问题(如何保证分布式数据最终一致性)
  7. html标签验证百度搜索,如何验证百度站长平台(百度搜索资源平台)?
  8. redis如何保证数据一致性
  9. 马云透露新商机:2018抓住这三大行业将暴富一大批人
  10. uboot和系统移植-第1部分-2.1 uboot学习前传