Istio 是一个开源服务网格,使用功能强大的 Envoy 服务代理扩展了 Kubernetes。
当命名空间被注入Istio之后,在此命名空间里创建的pod里都包含一个运行着envoy的sidecar容器。主容器直接把数据发送给envoy。整个集群里所有的envoy容器之间建立网格,从而进行有效的流量控制。
Istio 是实现负载平衡、服务到服务身份验证和监视的路径——只需要很少或不需要更改服务代码。它强大的控制平面带来了重要的特点,包括:
在不存在istio的情况下,当我们把请求转发给svc时,svc通过负载均衡的方式把流量平均的转发给后端的pod。我们并不太方便控制这些流量往pod1和pod2走不同的流量。
利用Istio我们可以方便的实现svc往pod1和pod2流量的控制,比如往pod1转发20%的流量,往pod2转发80%的流量。从而方便的实现蓝绿部署、金丝雀发布、A/B测试、影子测试等。
也可以控制来自不同的客户端转发到不同的pod上,还可以实现控制往pod1转发数据时延迟多久等。
以上这些单纯依靠kubernetes是很难实现或者实现起来很困难的,但是基于istio却可以轻松实现。
由于微服务之间的调用关系错综复杂,排查问题就更加困难了,为了使服务之间的关系更加清晰明了,了解应用的行为和状态,我们有必要使用一些可视化的方案来观测我们的微服务应用,其中 Kiali 就是这样的一个工具。
Kiali 是 Istio 的一个可观测工具,提供服务拓扑展示服务网格的结构,提供网格的健康状态视图,配置信息验证功能,此外还具有服务网格配置的功能。
同时istio也提供了Grafana、 Prometheus监测功能,虽然我们直接kubernetes上也可以安装,但是在istio里直接提供了这些功能,使用起来相当方便。
默认情况下网格里网格里所有的pod均已mTLS方式通信,实现了数据通信的安全性。
可以通过创建AuthorizationPolicy对客户端进行ACL控制,既可以基于IP限制也可以限制用户的行为,比如GET操作还是POST操作。也可以基于pod所使用的serviceAccount进行限制,这些是kubernetes里的网络策略都难以实现的。
从事培训13年,授课经验丰富。了解初学者理解的难点在哪里,平时该如何练习。
课程通过专业的在线直播软件,整个课程高清不卡顿,可以和讲师实时交互,效果可媲美线下培训,但是避免了线下培训的舟车劳顿,只要有网络即可听课。
课后提供高清晰的回播视频,即使因为各种原因缺课,也能照样把课程补回来。学员会加入专门的QQ/微信群进行答疑,并通过向日葵、teamview等软件进行远程协助。