首页 > 其他分享 >servicemesh及istio

servicemesh及istio

时间:2022-11-08 18:37:07浏览次数:61  
标签:服务 Service istio 流量 Istio Mesh servicemesh Sidecar

Service Mesh以及Sidecar

在介绍Service Mesh概念之前,我们先来了解一下Sidecar。Sidecar是以第一次世界大战时活跃在战场上的军用边斗车命名(也是我们在抗日神剧中最常见的道具之一)。Sidecar是Service Mesh中的重要组成部分,Sidecar在软件系统架构中特指边斗车模式,这个模式的精髓在于实现了数据面(业务逻辑)和控制面的解耦。

servicemesh及istio_微服务

在Service Mesh架构中,给每一个微服务实例部署一个Sidecar Proxy。该Sidecar Proxy负责接管对应服务的入流量和出流量,并将微服务架构中的服务订阅、服务发现、熔断、限流、降级、分布式跟踪等功能从服务中抽离到该Proxy中。


Sidecar以一个独立的进程启动,可以每台宿主机共用同一个Sidecar进程,也可以每个应用独占一个Sidecar进程。所有的服务治理功能,都由Sidecar接管,应用的对外访问仅需要访问Sidecar即可。当该Sidecar在微服务中大量部署时,这些Sidecar节点自然就形成了一个服务网格。

servicemesh及istio_ide_02

Istio简介

第二代Service Mesh主要改进集中在更加强大的控制面功能(与之对应的Sidecar Proxy被称之为数据面),典型代表有Istio和Conduit。Istio是Google、IBM和Lyft合作的开源项目,是目前最主流的Service Mesh方案,也是事实上的第二代Service Mesh标准。在Istio中,直接把Envoy作为Sidecar。除了Sidecar,Istio中的控制面组件都是使用Go语言编写。

根据Istio官方文档的介绍,Istio在服务网络中主要提供了以下关键功能:

•流量管理:控制服务之间的流量和API调用的流向,使得调用更可靠,并使网络在恶劣情况下更加健壮。•可观察性:了解服务之间的依赖关系,以及它们之间流量的本质和流向,从而提供快速识别问题的能力。•策略执行:将组织策略应用于服务之间的互动,确保访问策略得以执行,资源在消费者之间良好分配。策略的更改是通过配置网格而不是修改应用程序代码。•服务身份和安全:为网格中的服务提供可验证身份,并提供保护服务流量的能力,使其可以在不同可信度的网络上流转。•平台支持:Istio旨在在各种环境中运行,包括跨云、Kubernetes、Mesos等。最初专注于Kubernetes,但很快将支持其他环境。•集成和定制:策略执行组件可以扩展和定制,以便与现有的ACL、日志、监控、配额、审核等解决方案集成。

Istio针对可扩展性进行了设计,以满足不同的部署需要。这些功能极大的减少了应用程序代码、底层平台和策略之间的耦合,使得微服务更加容易实现。

下图为Istio的架构设计图,主要包括了Envoy、Pilot、Mixer和Istio-Auth等。

servicemesh及istio_ide_03

•Envoy: 扮演Sidecar的功能,协调服务网格中所有服务的出入站流量,并提供服务发现、负载均衡、限流熔断等能力,还可以收集与流量相关的性能指标。•Pilot: 负责部署在Service Mesh中的Envoy实例的生命周期管理。本质上是负责流量管理和控制,将流量和基础设施扩展解耦,这是Istio的核心。可以把Pilot看做是管理Sidecar的Sidecar, 但是这个特殊的Sidacar并不承载任何业务流量。Pilot让运维人员通过Pilot指定它们希望流量遵循什么规则,而不是哪些特定的pod/VM应该接收流量。有了Pilot这个组件,我们可以非常容易的实现 A/B 测试和金丝雀Canary测试。•Mixer: Mixer在应用程序代码和基础架构后端之间提供通用中介层。它的设计将策略决策移出应用层,用运维人员能够控制的配置取而代之。应用程序代码不再将应用程序代码与特定后端集成在一起,而是与Mixer进行相当简单的集成,然后Mixer负责与后端系统连接。Mixer可以认为是其他后端基础设施(如数据库、监控、日志、配额等)的Sidecar Proxy。•Istio-Auth: 提供强大的服务间认证和终端用户认证,使用交互TLS,内置身份和证书管理。可以升级服务网格中的未加密流量,并为运维人员提供基于服务身份而不是网络控制来执行策略的能力。Istio的未来版本将增加细粒度的访问控制和审计,以使用各种访问控制机制(包括基于属性和角色的访问控制以及授权钩子)来控制和监视访问服务、API或资源的访问者。

istio安装

​https://github.com/istio/istio,本文使用1.02版本,安装没有auth验证版本​

kubectl apply -f install/kubernetes/istio-demo.yaml


关注公众号 soft张三丰 

servicemesh及istio_应用程序_04

标签:服务,Service,istio,流量,Istio,Mesh,servicemesh,Sidecar
From: https://blog.51cto.com/u_15501087/5834163

相关文章

  • Istio代理级指标
    代理级指标Envoy会生成其资源级别(例如Listener、Cluster等)的指标获取Envoy统计信息的常用方式有两程AdminInterface的/stats或/stats/prometheus用于接收统计......
  • Istio可观测性
    可观测性应用日志、指标和跟踪是应用程序可观测性的三大支柱,前二者更多的是属于传统的“以主机为中心”的模型,而跟踪则“以流程为中心”日志:日志是随时间发生的离散事......
  • 使用 Istioctl 安装 istio
    使用Istioctl安装istio下载Istio转到Istio发布页面,下载针对你操作系统的安装文件,或用自动化工具下载并提取最新版本(Linux或macOS):[root@k8s-master-node1~]#curl......
  • ingress-istio配置服务
    文档说明:只记录关键地方;试验环境:linuxdebian11目标:自建K8S对外提供httphttps服务ingress-istio暴露服务端口暴露80和443端口apiVersion:v1kind:Se......
  • Istio典型应用场景
    Istio作为服务治理的工具,使用户不需要在项目中编写代码即可实现微服务治理。主要应用分布式调用追踪、遥测度量收集、灰度发布应用、熔断、故障注入等几个方面场景。Istio......
  • Istio架构设计有4大关键目标
     Istio作为服务网格技术的代表作,通过sidecar代理拦截了微服务之间的所有网络通信,用统一方式实现服务之间的负载均衡、访问控制、速率限制等功能。应用无须了解底层服务访......
  • Istio egress gateway
    EgressGateway逻辑示意图EgressGateway配置要点各SidecarEnvoy上访问特定外部主机的流量,要路由至EgressGatewayEgressGateway要将相应的流量路由至相应的外部......
  • Istio workloadEntry实例
    服务说明在网格外部运行有nginx服务,有两个实例Nginx2001:监听地址为172.29.1.201:8091,Nginx版本为1.20Nginx2002:监听地址为172.29.1.202:8091,Nginx版本为1.20N......
  • Istio ServiceEntry实例
    服务说明在网格外部运行有nginx服务,有两个实例Nginx2001:监听地址为172.29.1.201:8091,Nginx版本为1.20Nginx2002:监听地址为172.29.1.202:8091,Nginx版本为1.20N......
  • Istio 流量拦截
    Sidecar代理方式简介Kubernetes平台上,EnvoySidecar容器与application容器于同一个Pod中共存,它们共享NETWORK、UTS和IPC等名称空间,因此也共用同一个网络协议栈;EnvoySideca......