Istio快速入门

为什么要使用Istio

Istio 可以让你轻松部署一个支持负载均衡、服务间认证、自动监控等功能的服务网格,而这并不需要在服务代码中做出任何的改变。你只需要在环境中部署一个特殊的边车代理(sidecar proxy)来拦截所有的微服务间的网络通信,之后就可以通过控制平面提供的功能来配置和管理 Istio ,功能包括:

HTTP、gRPC、WebSocket、TCP 流量的自动负载均衡。

细粒度的流量路由控制,包含丰富的路由控制,重试,故障转移和故障注入。

可插拔的访问控制策略层,支持ACL,请求速率限制和请求配额。

集群内度量指标,日志和调用链的自动收集,管理集群的入口出口流量。

使用基于身份的认证和授权方式来让服务间通信更安全。

由于Istio 提供了足够多的可扩展性,这也使得 Istio 能满足多样化的需求。基于 Istio 你完全可以搭建出一套适合自己公司的基础设施层的 service mesh 。

Istio设计目标

Istio 的架构设计中有几个关键目标,这些目标对于使系统能够应对大规模流量和高性能地服务处理至关重要。

最大化透明:为了让Istio 被更广泛采用,运维和开发人员应该只需付出很少的代价就可以从中受益。为此 Istio 将自己自动注入到所有的网络路径中的服务中。Istio 使用 sidecar 代理来捕获流量,而无需对已部署的应用程序代码进行任何改动。在 Kubernetes中,代理被注入到 pod 中,通过编写 iptables 规则来捕获流量。注入 sidecar 代理到 pod 中并且修改路由规则后,Istio 就能够拦截所有流量。这个原则也适用于性能。所有组件和 API 在设计时都必须考虑性能和规模。

增量:随着运维人员和开发人员越来越依赖Istio 提供的功能,系统必然需要和他们的需求一起成长。虽然我们会继续自己添加新功能,但是最大的需求是扩展策略系统的能力,集成其他策略和控制来源,并将网格行为信号传播到其他系统进行分析。策略运行时支持标准扩展机制以便插入到其他服务中。

可移植性: Istio 必须支持以最小的代价在任何云和本机环境上运行。将 Istio 上的服务进行迁移也应该是可行的。

策略一致性:在服务间的API 调用中,策略的应用使得可以对网格间行为进行全面的控制,但对于无需在 API 级别表达的资源来说,对资源应用策略也同样重要。例如,将配额应用到 ML 训练任务消耗的 CPU 数量上,比将配额应用到启动这个工作的调用上更为有用。因此,策略系统作为独特的服务来维护,具有自己的 API,而不是将其放到代理 sidecar 中,这容许服务根据需要直接与其集成。

《Istio入门与实战》这本书通过快速搭建一个微服务实验,逐一展示Istio的主要功能,直观地帮助读者理解Istio,非常适合入门级读者快速掌握Istio技术。本书所有示例代码都可以在GitHub下载,地址为 https://github.com/mgxian/istio-lab。

作者简介   毛广献,某游戏社区与数据服务公司网络工程师,参与过多项业务技术架构设计与应用开发运维。对分布式、微服务等有着独到的见解。他是热爱技术的极客,喜欢研究新技术和开源项目。


你可能感兴趣的:(Istio快速入门)