关于istio:一文读懂Istio服务网格

49次阅读

共计 2291 个字符,预计需要花费 6 分钟才能阅读完成。

Istio 是什么
随着 Kubernetes 的遍及,企业容器数量的一直回升。日常的容器治理成为开发及运维团队的一大难题。简略的说,Istio 将有助于升高容器治理的复杂性,提供为容器利用治理提供流量治理、数据安全以及可观测性。
下图展现了 Kubernetes 和 服务网格 (Service Mesh) 的关系。其中 Istio 会为每一个 pod 注入 Sidecar 容器,图中蓝色的 Proxy 局部。通过对立的管制立体 (Control plane) 对所有的 Sidecar 进行治理。

Envoy 代理
上文提到 Sidecar 代理在 Istio 中次要由开源我的项目 Envoy 来实现。Envoy 是一个面向大型服务架构的通明代理。它的外围是一个三、四层的网络代理,通过配置实现 TCP/UDP 的代理工作。Envoy 同时也反对 HTTP 的七层代理,并提供健康检查、服务发现、动静配置、高级负载平衡(主动重试、熔断器、全局限速等)等性能。下图为 Envoy 代理的架构图。

侦听器 (Listener) 图中右上淡绿色的是代理的侦听器。Envoy 能够设置一个或多个侦听器对上游提供网络界面,并且每个侦听器能够设置多个过滤器链 (filter_chans),通过扩大过滤器链能够不便的操控流量的行为。
图中紫色局部为 Envoy 的 xDS 协定,Istio 次要应用 xDS 协定对 Envoy 进行配置和治理;
上游 (Upstream) 是以 Envoy 为连贯发起方。上游主机承受 Envoy 的连贯和申请,图中 host A 为上游主机;
上游 (Downstream) 是连贯由上游主机发动,向 Envoy 发送申请及接管 Envoy 的响应,图中 host B 及 host C 为 Envoy 的上游主机;
集群 (Cluster) 则是一组连贯到 Envoy 的上游主机。

xDS API
在 Istio 中 xDS 次要用于组件 Pilot 和 Envoy 之间的治理。Envoy 的 v2 API 中包含了以下根本协定:
CDS (Cluster Discovery Service) 集群发现服务,用以在路由的时候发现上游 Cluster。Envoy 从而能够优雅地增加、更新和删除集群。
EDS (Endpoint Discovery Service) 端点发现服务,用于发现上游集群中的成员,对集群的端点进行治理。
LDS (Listen Discovery Service) 侦听发现服务,用来增加、删除监听器
RDS (Route Discovery Service) 路由发现服务。能够在运行时发现 HTTP 连贯,能够用以批改 HTTP header,虚拟主机和虚拟主机的路由。
在 v3 API 中又额定减少了 SRDS,VHDS,SDS 和 RTDS 协定,这里不做深刻介绍,有趣味的敌人能够查阅相干文档。下图形容了根底协定所对应的不同层面

上图中的箭头不是流量进入代理后的门路或路由,也不是理论的程序。这是一个设想的 xDS 接口解决序列。其实 xDS 之间是有穿插援用的。

Istio 的服务网格 (Service Mesh)
通过以上根底概念的介绍,咱们再来看下 Istio 的服务网格的实现,下图为 Istio 的服务网格架构图:

流量治理
Istio 通过规定配置实现 HTTP/TCP 的路由性能。通过这些配置还能够实现熔断器、限流、AB 测试、金丝雀公布等性能。次要配置项包含:

  • Gateway:形容了一个运行在网络边缘的负载均衡器,用于接管传入或传出的 HTTP/TCP 连贯。
  • VirtualService:VirtualService 将 Kubernetes 服务连贯到 Istio 网关。它能够定义路由规定来设定流量到不同的 Kubernetes 服务。
  • DestinationRule:决定了流量通过路由解决后的拜访策略。简而言之,它定义了流量的路由形式。这些策略能够定义负载平衡配置、连接池大小和内部检测配置。
    EnvoyFilter:提供一种机制来自定义 Envoy 代理的配置。
  • ServiceEntry:默认状况下 Istio Service Mesh 中的服务无奈发现 Mesh 之外的服务。ServiceEntry 向 Istio 外部的服务注册,以便在网格中主动发现的服务能够被内部拜访。

安全性
Istio 通过管制立体来解决 API 服务的配置,并在数据立体中配置策略加强点 (PEPs),TLS 对所有内部流量及容器间通信进行加密。

可观测性
Istio 强壮的追踪、监控和日志个性让您可能深刻的理解服务网格部署。通过 Istio 的监控能力,能够真正的理解到服务的性能是如何影响上游和上游的;
Istio 的 Mixer 组件负责策略管制和遥测数据收集。它提供了后端形象和中介,将一部分 Istio 与后端的基础设施实现细节隔离开来,并为运维人员提供了对网格与后端根底施行之间交互的细粒度管制。
Istio 会主动生成以下类型的遥测数据,以提供对整个服务网格的可察看性:

  • 指标:Istio 基于 4 个监控的黄金指标(提早、流量、谬误、饱和)生成了一系列服务指标。
  • 分布式追踪:Istio 为每个服务生成分布式追踪 span,运维人员能够直观的看到网格内服务的依赖和调用关系。
  • 拜访日志:当流量流入网格中的服务时,Istio 能够生成每个申请的残缺记录,包含源和指标的元数据,该信息能够让运维人员可能将服务行为的审查管制到单个工作负载实例的级别

总结

  1. Istio 的次要性能是对容器提供流量管制、通信安全及可观测性。
  2. 应用 xDS 协定与 Envoy 代理进行通信和配置,简化容器管理工作。
  3. 流量治理性能能够实现熔断器、灰度公布策略等性能
  4. 通信安全性次要通过对外部及集群外部通信进行 mTLS 加密来实现
  5. 可观测性局部则是通过指标、分布式追踪数据和拜访日志来实现。

云原生极客 - 专一云原生技术分享
微信扫码关注公众号

正文完
 0