首页 > 其他分享 >初识Istio一点通

初识Istio一点通

时间:2022-12-04 22:31:48浏览次数:39  
标签:服务 Kubernetes Envoy Istio 流量 网格 初识 一点

Istio是由IBM、Google和Lyft开发的服务网格开源的。它可以透明地接入分布式应用程序,并提供服务网格的三大优点——流量管理、安全性和可观察性。

Istio支持各种微服务的部署环境,例如本地部署、云托管、Kubernetes容器以及虚拟机上运行的服务程序。虽然Istio支持多种平台,但通常情况下还是与Kubernetes平台上部署的微服务一起使用。

从根本上讲,Istio的工作原理是以Sidcar的形式将Envoy的扩展版本作为代理部署到每个微服务中。Istio的组件较多,部署起来很复杂,在早期曾大受诟病,经过几次迭代后,已经只有控制面和数据面。

初识Istio一点通_Istio

  1. 数据面

Istio的数据面主要包括Envoy代理的扩展版本。Envoy是一个开源的Sidecar模式的服务代理,可以将网络问题与应用程序分离开来。在部署了Istio的Kubernetes集群中,由于应用程序发送和接收的流量会被劫持到Envoy代理中,因此Envoy代理可以做到对应用程序的无侵入式接入。

Envoy的核心是在OSI模型的L3和L4层运行的网络代理,它通过使用可插入的网络过滤器来执行连接处理。此外,Envoy支持对HTTP的流量附加L7层过滤器,而且Envoy对HTTP/HTTP2和gRPC传输提供了非常好的支持。

Istio作为服务网格,提供的许多功能实际上是由Envoy代理实现的,Envoy代理内置的基础模块启用后就可以支持以下功能。

  • 流量控制:Envoy针对HTTP/HTTP2、gRPC、WebSocket和TCP流量,具备丰富路由规则和流量控制能力。
  • 高级流量治理功能:Envoy针对限速、限流、熔断、故障注入和自动重试等功能具备开箱即用的特性。
  • 安全性:Envoy可以实施安全策略,也可以对微服务之间的通信做访问控制。支持微服务之间通信的双向TLS(Transport Layer Security,安全传输层)认证。
  1. 控制面

控制面负责管理和配置数据面中的Envoy代理。在Istio架构中,控制面的核心组件是Istiod,Istiod负责将高级路由规则和流量治理规则转换为特定于Envoy的配置,并在运行过程中下发给Sidecar容器。基于Kubernetes的可扩展性(可以自定义CRD和控制器),这些配置都被抽象为Kubernetes中的自定义资源并存储到ETCD中。

从根本上说,Istiod仍使用与先前各个组件相同的代码和API。例如,Pilot负责抽象特定于平台的服务发现机制,并将其合成为Sidecar可以使用的标准格式。因此,Istio可以支持针对多个环境(例如Kubernetes或虚拟机)的服务发现。

此外,Istiod还提供安全性支持,通过内置的身份和凭据管理,实现了强大的服务到服务之间的最终用户身份验证。借助Istiod,我们可以基于服务身份来实施安全策略,该过程也充当证书颁发机构并生成证书,以促进数据面中的TLS通信。

Istio使用强大的Envoy服务代理扩展了Kubernetes,以建立一个可编程、应用程序感知的网络。Istio与Kubernetes和传统工作负载一起使用,为复杂的部署带来标准且通用的流量治理、遥测和安全策略。

  1. 无侵入的流量治理

Istio的流量路由规则让我们可以轻松控制服务之间的流量和API调用。Istio简化了断路器、超时和重试等服务级别属性的配置,可以轻松实现一些流量治理功能,例如AB测试、基于百分比流量的部署。Istio还提供了开箱即用的可靠性功能,可以帮助应用更灵活地应对相关服务或网络的故障。

Istio的流量管理模型依赖于和服务一起部署的代理。我们的服务网格发送和接收的所有流量(数据面流量)通过Envoy进行代理,从而轻松引导和控制网格周围的流量,无须对服务进行任何更改。

  1. 时刻了解服务调用情况

Istio为网格内的所有服务通信生成详细的遥测数据。这种遥测提供了服务行为的可观察性,使我们能够对应用程序进行故障排除、维护和优化,而不会给服务研发人员带来额外的负担。通过Istio,我们可以全面了解受监控的服务如何与其他服务和Istio组件本身进行交互。

Istio生成以下类型的遥测数据以提供服务网格整体的可观察性。

  • 指标:Istio根据监控的4个黄金信号(延迟、流量、错误和饱和)生成一组服务指标,还提供了网络控制面的详细指标,以及一组基于这些指标构建的默认网格监控仪表板。
  • 分布式追踪:Istio为每个服务生成分布式链路数据,让我们可以详细了解网格内的调用流和服务依赖关系。
  • 访问日志:当流量流入网格内的服务时,Istio可以生成每个请求的完整记录,包括源和目标元数据。
  1. 安全策略

将单体应用分解为原子服务有多种好处,包括更好的敏捷性、可扩展性、服务重用能力等。然而,微服务也有特殊的安全需求。

  • 为了防御中间人入侵,微服务需要流量加密。
  • 为了提供灵活的服务访问控制,需要双向TLS和细粒度的访问策略。
  • 为了确定谁在什么时间做了什么,需要配置审计工具。I

Istio Security提供了一个全面的安全解决方案。Istio安全功能可以减少针对数据、端点、通信和平台的内部威胁和外部威胁。

Istio安全功能提供强大的TLS加密策略以及身份验证、授权和审计工具来保护服务和数据安全。Istio安全的目标如下。

  • 默认安全:无须更改应用程序代码和基础架构。
  • 纵深防御:与现有安全系统集成,提供多层防御。
  • 零信任网络:在不信任的网络上构建安全解决方案。

在服务治理方面,Istio提供了流量治理、遥测和安全三大能力。仅有这三大能力并不足以让它如此风靡,对应用程序的无侵入式接入和对Kubernetes的完美支持使得它在云原生下成为服务治理的宠儿。

标签:服务,Kubernetes,Envoy,Istio,流量,网格,初识,一点
From: https://blog.51cto.com/key3feng/5910095

相关文章

  • C Primer Plus 10.13第13题的一点想法
    在网上看了一些网友的答案,不是很满意!于是自己写了一个#include<stdio.h>#include<ctype.h>voidshow_arr(intarr[][5],intn);voidstore_date(doublearr[][5])......
  • 初识C语言(结构)
    前言:C语言是一种结构化的程序设计语言。对于新手来说要想学好一门编程语言,除了要了解编程的相关知识,更要了解其结构。“万层高楼平地起”结构就是地基中到比较重要的一环,所......
  • 初识flutter
    初识flutter什么是flutter?Flutter是由Google开发和提供支持的开源框架。前端和全栈开发人员使用Flutter为具备单一代码库的多个平台构建应用程序的用户界面(UI)。在......
  • 【221203-3】已知:等边三角形ABC中,边长为6,AD垂直BC,E为AC上一点,M是AD上的一点,AE=2. 求:EM
    ......
  • .初识Docker
    什么是Docker微服务虽然具备各种各样的优势,但服务的拆分通用给部署带来了很大的麻烦。分布式系统中,依赖的组件非常多,不同组件之间部署时往往会产生一些冲突。在数百......
  • Istio的使用场景参考
    初步使用Kubernetes或Kubernetes在生产环境中已经稳定运行了一段时间,如果想要接入Istio服务网格,那么对Kubernetes集群版本也有要求,如果读者正在使用的Kubernetes集群不支持......
  • 初识ajax初次使用get,post传参
    浅了解http和httpsHTTP协议以名文的方式发送内容,不会提供任何方式的数据加密。HTTP协议不适合传输一些敏感信息,比如(信用卡号,密码等支付信息)HTTPS则是具有安全性的ssl加密......
  • cakephp中加载第三方类的一点注意的
    在cakephp中,加载其他不相关的类,有三种方法,例子如下:<?phpclassTasksControllerextendsAppController{var$name='Tasks';functionin......
  • SpringMvc-初识
    ----------------------------------------------------------------1、环境搭建1.1jar包<spring.version>4.3.18.RELEASE</spring.version><!--spring-mvcbegin......
  • 初识JAVA
    初识JavaJAVA的特性与优势简单性面向对象可移植性高性能分布式多线程安全性健壮性动态性JAVA的三大版本JAVASE全称为JAVAStandardEdit......