什么是服务网格,为什么 Kubernetes 需要它?

news2024/11/23 22:37:50

​企业现在热衷于采用微服务架构,因为它具有敏捷性和灵活性。容器和作为首选的容器编排工具—Kubernetes的兴起使得从单体架构向微服务架构的转变变得更加容易。然而,在大规模使用微服务架构时出现了一系列新的挑战:

  • DevOps和架构师很难管理服务之间的流量
  • 由于微服务部署在多个集群和云中,数据走出了(防火墙)边界,变得容易受到攻击;
  • 安全性成为一个重大问题 对网络拓扑的整体可见性对于SRE来说成为一场噩梦
  • 实施新的安全工具,或者调整现有的API网关或Ingress控制器,只是一种临时解决方案,无法完全解决上述问题。

架构师需要的是一种彻底的基础设施实现,以应对不断增长的网络、安全和可观察性挑战。而这就是服务网格的概念所涉及的地方。

什么是服务网格?

服务网格(Service Mesh)是一种将服务之间的通信从应用层解耦到基础设施层的技术。在服务网格中,通过代理服务之间的流量来实现基础设施层的抽象。

代理作为一个Sidecar容器与应用程序一起部署。流入和流出服务的流量被代理拦截,并提供高级流量管理和安全功能。此外,服务网格还提供对整个网络拓扑的可观察性。在服务网格架构中,代理的集合被称为数据平面(data plane),负责配置和管理数据平面代理的控制器被称为控制平面(control plane)。Kubernetes为什么需要服务网格?—在开始阶段,大多数DevOps只需要处理少量的服务。随着应用程序规模的扩大和服务数量的增加,网络和安全管理变得复杂起来。繁琐的安全合规性—从不同云供应商的多个集群中部署的应用程序通过网络相互通信。对于这种流量来说,遵守某些标准以防止入侵者进入并确保安全通信至关重要。问题在于安全策略通常是针对单个集群的,并不能跨集群边界工作。这就需要一种能够在多个集群中强制执行一致安全策略的解决方案。混乱的网络管理—DevOps工程师通常需要控制服务之间的流量,例如进行金丝雀部署。他们还希望通过注入故障和实施断路器来测试系统的弹性和可靠性。要实现对网络的这种细粒度控制,DevOps工程师需要在Kubernetes和云环境中创建大量的配置和脚本。缺乏对网络的可视化—随着应用程序分布在网络上并进行相互通信,SRE(Site Reliability Engineer)很难跟踪网络基础设施的健康状况和性能。这严重影响了他们识别和解决网络问题的能力。通过实施服务网格,可以解决上述问题,提供一些功能,使得管理部署到Kubernetes的应用程序变得轻松无痛。

Service Mesh在Kubernetes中的关键特性

Service Mesh充当了一个集中化的平台,用于在Kubernetes中部署的微服务的网络、安全和可观察性。集中化的安全性 通过使用服务网格,可以更容易地实现安全合规性,因为可以从一个中心平面进行配置,而不是针对每个服务进行配置。服务网格平台可以强制执行跨集群边界工作的一致性安全策略。 服务网格提供了细粒度的身份验证、授权和访问控制。

  • 身份验证:mTLS实现、JWT
  • 授权:可以设置策略来允许、拒绝或对传入请求执行自定义操作
  • 访问控制:可以在方法、服务和命名空间级别设置RBAC策略
  • 高级网络和弹性测试
  • 服务网格提供了对服务之间流量流向的细粒度控制。

DevOps工程师可以将流量分割到不同的服务之间,或者根据一定的权重进行路由。此外,服务网格还提供以下功能,以便通过少量工作来测试基础设施的弹性:

  • 故障注入
  • 超时设置
  • 重试
  • 断路器
  • 镜像
  • 统一的可观察性

实施服务网格有助于SRE和运维团队集中监控应用程序在网格中的健康状况和性能。服务网格提供以下用于可观察性和实时可见性的遥测数据:

  • 指标:用于监控性能,查看延迟、流量、错误和饱和度等。
  • 分布式跟踪:用于理解请求的生命周期,分析服务依赖关系和流量流向。
  • 访问日志:用于审计服务行为。

为Kubernetes考虑的顶级服务网格软件

在市场上可以找到各种服务网格软件,如Istio、Linkerd、HashiCorp Consul、Kong KUMA、Google Anthos(基于Istio构建)、VMware Tanzu等。然而,超过90%的用户使用Istio或Linkerd服务网格软件,这是因为它们拥有强大而活跃的开源生态系统,提供创新和支持。

Istio

Istio是最受欢迎的、经过CNCF认证的开源服务网格软件。它使用Envoy代理作为sidecar,而控制平面用于管理和配置这些代理。

****

Istio为大规模应用程序提供了网络、安全和可观察性功能。来自Google、Microsoft、IBM等公司的开发人员积极参与了Istio项目的贡献。

Linkerd

Linkerd是由Buoyant开发的轻量级开源服务网格软件。它提供了服务网格的基本功能,并具有目标服务、身份服务和代理注入器。

超过80%的Linkerd贡献来自其创始人Buoyant自身。

服务网格在Kubernetes中的好处

以下是企业在Kubernetes中实施服务网格可以获得的一些好处:

  • 100%网络和数据安全

服务网格有助于维护一个零信任网络,在处理请求之前不断进行身份验证和授权。DevOps工程师可以实施诸如mTLS之类的功能,它可以在整个集群范围内和跨集群边界工作。

在当前充满中间人攻击(MITM)和拒绝服务(DoS)等攻击的动态威胁环境中,零信任网络有助于维护安全的基础设施。

  • 变更失败率降低80%

如今,企业在完全推出之前会将应用程序发布给一小部分实际用户。这有助于DevOps和SRE分析应用程序性能,识别任何错误,并避免潜在的停机时间。金丝雀部署和蓝/绿部署是两种常见的部署策略。服务网格提供的细粒度流量控制,包括基于权重进行流量分割,使得DevOps工程师更容易执行这些部署策略。

  • 99.99%可用和弹性的基础设施

服务网格软件提供的遥测数据帮助SRE和运维团队快速识别和应对错误和威胁。大多数服务网格软件与Prometheus、Grafana、Kiali、Jaeger等监控工具集成,它们提供的仪表板帮助运营人员可视化服务的健康状况、性能和行为。

  • 开发者体验提升5倍

大多数应用程序开发者不喜欢在他们的应用程序中配置网络和安全逻辑。他们的关注点往往是业务逻辑和功能的构建。实施服务网格可以减少开发者的工作量,因为他们只需关注应用程序代码。他们可以将网络和安全配置完全交给基础设施级别的服务网格来处理。这种分离有助于开发者专注于他们的核心职责,即提供业务逻辑。

成功实施服务网格的三个支柱

由于服务网格是一个激进的概念,对企业来说,成功实施并实现其价值可能会让人感到不知所措。如果你是架构师或首席信息官(CIO),可以考虑以下三个支柱来成功实施服务网格。

  • 技术支持

    从技术支持的角度评估服务网格软件非常重要。如果是一个成熟的DevOps组织,在CI/CD过程中使用各种开源和开放标准,请确保服务网格软件能够与CI/CD工具(无论版本如何)良好集成。例如,如果正在使用Argo CD进行GitOps部署,或者使用Prometheus进行监控,那么服务网格软件必须能够在较少的干预下与这些工具集成。

  • 企业支持

    开源软件的采用率正在上升。但是,对软件的支持对于企业来说是确保其IT系统可用于业务的首要需求。评估一个由庞大社区支持的服务网格软件(对于支持非常有帮助),并且还有第三方供应商生态系统可以提供7x24小时的支持,并具有固定的服务级别协议(SLA)。

  • 培训和入职支持

    确保有足够的阅读材料、文档和视频可供使用,这将有助于服务网格软件的用户学习,因为如果内部员工(如DevOps和SRE)无法采用该软件,那就没有意义了。最后,服务网格不仅仅是软件,而是一种应用操作模式。不要急于开始项目。相反,研究和评估最适合组织需求和需求的最佳服务网格。

服务网格是Kubernetes工作负载的未来发展方向

服务网格实施的目标是使在Kubernetes中部署的应用程序更易管理。随着服务从单个集群溢出到多个集群,采用服务网格将成为必要。随着Kubernetes的普及,服务网格最终将成为大多数组织中的关键组件。

作者:Anas T

更多技术干货请关注公众号“云原生数据库

squids.cn,目前可体验全网zui低价RDS,免费的迁移工具DBMotion、SQL开发工具等

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/893388.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot的日志信息及Lombok的常用注解

文章目录 一. 日志的介绍1. 什么是日志2. 日志的作用 二. 日志的使用1. 日志格式说明2. 自定义日志的输出3. 日志级别4. 日志级别的配置5. 日志持久化6. 更简单的输出日志-Lomok7. Lombok框架实现原理以及其他常见注解 一. 日志的介绍 1. 什么是日志 日志是我们程序重要组成部…

UE4/5数字人MetaHuman的控制绑定资产使用

开始操作 首先我们创建一个关卡序列: 打开后将我们的数字人放进去【右键,第一个添加进去】: 我们会自动进入动画模式,没有的话,就自己进入一下, 然后我们去寻找我们的控制绑定资产。 找到控制绑定资产 …

pdf文件如何编辑修改?学会这几种简单编辑方法

pdf文件如何编辑修改?在日常工作和学习中,我们经常需要编辑和修改PDF文件。无论是工作中的合同、报告或学习中的笔记、课件,PDF文件都是我们常用的文档格式。然而,PDF文件的特性使得它们很难被直接编辑。那么,如何编辑…

移远通信推出一站式Matter解决方案,构建智能家居开放新生态

近日,全球领先的S物联网整体解决方案供应商移远通信宣布,正式推出全新Matter解决方案,从模组、APP、平台、认证、生产五大层面为客户提供一站式服务,赋能智能家居行业加快融合发展。 过去十年,得益于物联网生态的发展&…

Hlang--用Python写个解析器

文章目录 前言语法树节点语法描述异常处理InvalidSyntaxError错误内容定位解析实现bin_op函数factory函数模拟流程总结前言 先前,我们实现了一个基本的词法分析器。那么现在的话,我们要在这个基础上面,实现一个解析器,那么实现效果的话,是这样的: 注意此时此刻,我们还…

一文教你快速 Cloudreve搭建云盘系统,实现随时访问

文章目录 1、前言2、本地网站搭建2.1 环境使用2.2 支持组件选择2.3 网页安装2.4 测试和使用2.5 问题解决 3、本地网页发布3.1 cpolar云端设置3.2 cpolar本地设置 4、公网访问测试5、结语 1、前言 自云存储概念兴起已经有段时间了,各互联网大厂也纷纷加入战局&#…

FLatten Transformer

FLatten Transformer: Vision Transformer using Focused Linear Attention ICCV 2023 聚焦式线性注意力模块 关于Transformer 在Transformer模型应用于视觉领域的过程中,降低自注意力的计算复杂度是一个重要的研究方向。线性注意力通过两个独立的映射函数来近似S…

springBoot 配置文件 spring.resources.add-mappings 参数的作用

在Spring Boot应用中,spring.resources.add-mappings参数用于控制是否将特定路径的资源文件添加到URL路径映射中。 默认情况下,该参数的值为true,即会自动将静态资源(例如CSS、JavaScript、图片等)的URL路径添加到Spr…

Mybatis Plus中使用LambdaQueryWrapper进行分页以及模糊查询对比传统XML方式进行分页

传统的XML分页以及模糊查询操作 传统的XML方式只能使用limit以及offset进行分页&#xff0c;通过判断name和bindState是否为空&#xff0c;不为空则拼接条件。 List<SanitationCompanyStaff> getSanitationStaffInfo(Param("name") String name,Param("bi…

〔013〕Stable Diffusion 之 图片自动评分和不健康内容过滤器 篇

✨ 目录 &#x1f388; 下载咖啡美学评价插件&#x1f388; 咖啡美学评价使用&#x1f388; 不健康内容过滤器插件 &#x1f388; 下载咖啡美学评价插件 想让系统帮你的图片作品打分评价&#xff0c;可以下载咖啡美学自动评价插件插件地址&#xff1a;https://github.com/p1at…

记录--webpack和vite原理

这里给大家分享我在网上总结出来的一些知识&#xff0c;希望对大家有所帮助 前言 每次用vite创建项目秒建好&#xff0c;前几天用vue-cli创建了一个项目&#xff0c;足足等了我一分钟&#xff0c;那为什么用 vite 比 webpack 要快呢&#xff0c;这篇文章带你梳理清楚它们的原理…

Python“牵手”1688商品评论数据采集方法,1688API申请指南

1688平台API接口是为开发电商类应用程序而设计的一套完整的、跨浏览器、跨平台的接口规范&#xff0c;1688API接口是指通过编程的方式&#xff0c;让开发者能够通过HTTP协议直接访问1688平台的数据&#xff0c;包括商品信息、店铺信息、物流信息等&#xff0c;从而实现1688平台…

【校招VIP】java语言类和对象之map、set集合

考点介绍&#xff1a; map、set集合相关内容是校招面试的高频考点之一。 map和set是一种专门用来进行搜索的容器或者数据结构&#xff0c;其搜索效率与其具体的实例化子类有关系。 『java语言类和对象之map、set集合』相关题目及解析内容可点击文章末尾链接查看&#xff01; …

dm达梦数据库 创建 YEARWEEK 外部函数

这里写目录标题 数据库环境创建方式一、C 外部函数二、JAVA 外部函数 数据库环境 类型版本官网下载地址基础环境Windows 11–Dm8dm8_20230418_x86_win_64.zip链接: 官网 创建方式 一、C 外部函数 &#xff08;1&#xff09;C 外部函数是使用 C、C 语言编写&#xff0c;在数据…

PostgreSQL-UDF用户自定义函数-扩展插件

目录 PostgreSQL-UDF用户自定义函数-扩展插件零、前置条件一、创建 .c 和 .sql 文件创建.c文件创建.sql文件 二、创建 .control 和 Makefile 文件创建 .control 文件创建 Makefile 文件 三、编译 & 链接四、psql&#xff08;或者其他PG backend&#xff09;中创建扩展 Post…

illustrator-形状模式-路径查找器-路径偏移-扩展

文章目录 1.形状模式1.1.联集&#xff1a;形状相加1.2.减去顶层&#xff1a;形状减去共同部分1.3.交集&#xff1a;相同部分1.4.差集&#xff1a;形状不同部分 2.路径查找器2.1.分割2.2.修边2.3.合并2.4.裁剪2.5.轮廓2.6.减去后方对象 3.路径偏移4.扩展外观 打开路径查找器快捷…

吃雪糕也能涨知识了!猿辅导携手中街1946推出“冷知识冰棍”

为了给孩子们的暑假学习加点“料”&#xff0c;猿辅导近日脑洞大开&#xff0c;和中街1946携手推出了“冷知识冰棍”&#xff0c;以数学、英语、语文、科学4个科目为外包装&#xff0c;分别对应草莓山楂、青提菠萝、茉莉蓝莓和蜜桃乌龙等4种口味&#xff0c;为孩子们开启了夏日…

在 SwiftUI 中创建一个环形 Slider

文章目录 前言初始化环形轮廓将进度值和拇指位置绑定添加触摸手势为不同的坐标值设置滑块位置总结 前言 Slider 控件是一种允许用户从一系列值中选择一个值的 UI 控件。在 SwiftUI 中&#xff0c;它通常呈现为直线上的拇指选择器。有时将这种类型的选择器呈现为一个圆圈&#…

centos7、ky10_server(arm版、x86版)将程序做成系统服务

前提条件 提供启动脚本、停止脚本 启动脚本 生成app启动脚本 touch app_start.sh cat > app_start.sh << EOF chmod -R 777 /home/zenglg/appcd /home/zenglg/app/apache-tomcat/bin./startup.sh EOF 停止脚本 生成app.停止脚本 touch app_stop.sh cat > app_sto…

ssm学校运动会信息管理系统源码和论文

ssm学校运动会信息管理系统027 开发工具&#xff1a;idea 数据库mysql5.7 数据库链接工具&#xff1a;navcat,小海豚等 技术&#xff1a;ssm 摘 要 在当今社会上&#xff0c;体育运动越来越普及&#xff0c;参与运动会的人越来越多&#xff0c;但是目前对运动会信息管理还…