一:快速入门Istio
1:什么是Istio
Istio 是运行于分布式应用程序之上的非侵入式(无代码入侵)服务网格系统,它的主要目的是为了更好更轻松的解决服务治理问题(Istio 是一套非侵入式一站式服务治理解决方案)。
Istio 的实现原理是,为每个微服务部署一个 Sidecar(边车),代理微服务之间的所有网络通信。Istio 是一个与 Kubernetes 紧密结合的适用于云原生场景的 Service Mesh 形态的用于服务治理的开放平台。
这里的关键字 "治理" 不限于 "微服务治理" 的范畴,任何服务只要服务间有访问,如果需要对服务间的访问做管理,就可以使用 Istio。根据 Istio 官方的介绍服务治理涉及到 "连接"、"安全"、"控制"、"观察",中间的四个动词就是 Istio 的主要功能。
Service Mesh(服务网格) 是一个专门处理服务间通信的基础设施层 ,负责服务之间的网络调用、熔断、限流、监控、安全等治理能力,且对业务代码无侵入。
- 连接(Connect):智能控制服务之间的调用流量,能够实现灰度升级、AB 测试和蓝绿部署等功能。
- 安全加固(Secure):自动为服务之间的调用提供认证、授权和加密。
- 控制(Control):应用用户定义的 policy,保证资源在消费者中公平分配。
- 观察(Observe):查看服务运行期间的各种数据,比如日志、监控和 tracing(跟踪),了解服务的运行情况。
2:Istio能做什么?
通过负载均衡、服务间的身份验证、监控等方法,Istio 可以轻松地创建一个已经部署了服务的网络,而服务的代码只需很少更改甚至无需更改。通过在整个环境中部署一个特殊的 sidecar 代理为服务添加 Istio 的支持,而代理会拦截微服务之间的所有网络通信,然后使用其控制平面的功能来配置和管理 Istio。
Istio 的主要功能如下:
- 服务发现(discovery)。
- 负载均衡(load balancing)。
- 故障恢复(failure recovery)。
- 服务度量(metrics)。
- 服务监控(monitoring)。
- A/B 测试(A/B testing)。
- 灰度发布(canary rollouts)。
- 限流限速(rate limiting)。
- 访问控制(access control)。
- 身份认证(end-to-end authentication)。
从场景来看,Kubernetes 已经提供了非常强大的应用负载的部署、升级、扩容等运行管理能力。Kubernetes 中的 Service 机制也已经可以做服务注册、服务发现和负载均衡,支持通过服务名访问到服务实例。
从微服务的工具集观点来看,Kubernetes 本身是支持微服务的架构,在 Pod 中部署微服务很合适,也已经解决了微服务的互访互通问题,但对服务间访问的管理如服务的熔断、限流、动态路由、调用链追踪等都不在 Kubernetes 的能力范围内。那么,如何提供一套从底层的负载部署运行到上层的服务访问治理端到端的解决方案?目前,最完美的答案就是在 Kubernetes 上叠加 Istio。
