WRY

Where Are You?
You are on the brave land,
To experience, to remember...

0%

Istio 简介

Istio 简介

At a high level, Istio helps reduce the complexity of these deployments, and eases the strain on your development teams. It is a completely open source service mesh that layers transparently onto existing distributed applications. It is also a platform, including APIs that let it integrate into any logging platform, or telemetry or policy system. Istio’s diverse feature set lets you successfully, and efficiently, run a distributed microservice architecture, and provides a uniform way to secure, connect, and monitor microservices. -- Istio官网

从官网的介绍上可以看出,Istio是一个服务网格(service mesh),可以透明的嵌入到现有的分布式应用程序中。同时Istio是一个平台(platform),通过API的方式集成到其他的功能性平台上,例如日志、监控和策略平台等。最终Istio可以用统一的方式来保护,连接和监视微服务。

服务网格

服务网格是指微服务网格,在每个网格中部署service服务,Istio主要就是控制网格与网格之间的通讯。Istio服务网格从逻辑可以分为数据平面和控制平面。在数据平面,Istion通过Envoy代理原有的服务进行业务流量的发送和接收;在控制平面Istio 组件之间发送配置和控制消息来进行网络编排。整体架构如下图所示。

arch

在Fission的基础上应用Istio之后产生的变化,也能看出Istio的代理思想,多出了Istio的两个服务。

image-20200526164119503

Istio 主要特性

负载均衡

Istio支持HTTP、TCP以及任意的WebSocket通讯协议。

通讯策略

过路由规则、重试、故障转移和故障注入对流量行为进行细粒度控制。

访问控制

在具有强大的基于身份验证和授权的集群中实现安全的服务间通信。

可视化监控

集群内(包括集群的入口和出口)所有流量的自动化度量、日志记录和追踪

Istio 架构

再来回顾一下Istio的架构图,其中设计的组件主要有Proxy、Pilot、Citadel和Galley四个核心组件,官网介绍链接,这里做一个简单的汇总。

Proxy

Istion使用的Proxy组件是Envoy,它是用C++开发的高性能代理,用于控制服务中的所有出入流量。Proxy组件是Istio的唯一侵入式部署,通常称之为服务的sidecar。

Pilot

Pilot是Envoy sidecar的控制组件。Pilot将路由信息转换成对应sidecar的配置信息,传播给sidecar,实现流量控制。这种管理方式在数据层面仍是分布式的去中心化,因此不影响大规模的应用部署。

discovery

Citadel

内置证书和身份管理,支持服务于服务和服务与用户之间的身份验证,对网络流量进行加密。可以执行基于角色的的策略。

Galley

Galley 是 Istio 的配置验证、提取、处理和分发组件。它负责将其余的 Istio 组件与从底层平台(例如 Kubernetes)获取用户配置的细节隔离开来。

Istiod

在2020年3月19日,Istio发布了Introducing istiod: simplifying the control plane的blog。介绍了 Istio 1.5将会采用全新的单体模式来实现。istiod 将先前由 Pilot,Galley,Citadel 和 sidecar 的功能统一为一个二进制文件,不在采用之前的多组件部署方式。简化了运维Istio的成本。