Kubernetes学习笔记--Istio
概念理解
Istio:
开发人使用微服务来构建可移植性,同时运营商正在管理超大型混合和多云部署。Istio可以连接,保护,控制和观察服务。
从较高的角度来看,Istio有助于降低这些部署的复杂性,可以透明地分层到现有的分布式应用程序上。它也是一个平台,包括可将其集成到任何日志记录平台,遥测或策略系统中的API。Istio提供一种统一的方式来保护,连接和监视微服务。
服务网格(service mesh):
服务网格用于描述组成此类应用程序的微服务网络及其之间的交互。随着服务网格的大小和复杂性的增长,它变得越来越难以理解和管理。它的要求可以包括发现,负载平衡,故障恢复,指标和监视。服务网格通常还具有更复杂的操作要求,例如A / B测试,金丝雀推出,速率限制,访问控制和端到端身份验证。
Istio提供了整个服务网格上的行为洞察力和操作控制,从而提供了一个完整的解决方案来满足微服务应用程序的各种需求。
为什么要使用Istio?
Istio可以轻松创建带有负载平衡,服务到服务的身份验证,监视等功能的已部署服务网络,而服务代码中的代码更改很少或没有更改。通过在整个环境中部署特殊的sidecar代理来拦截微服务之间的所有网络通信,然后使用其控制平面功能配置和管理Istio,可以为服务添加Istio支持,包括:
-
HTTP,gRPC,WebSocket和TCP通信的自动负载平衡。
-
通过丰富的路由规则,重试,故障转移和故障注入对流量行为进行细粒度控制。
-
可插拔的策略层和配置API,支持访问控制,速率限制和配额。
-
群集内所有流量的自动指标,日志和跟踪,包括群集的入口和出口。
-
通过强大的基于身份的身份验证和授权,在群集中进行安全的服务间通信。
Istio Gateway 与 Ingress Gateway
在 Kubernetes 环境中,使用 Kubernetes Ingress 资源来指定需要暴露到集群外的服务。 在 Istio 服务网格中,更好的选择(同样适用于 Kubernetes 及其他环境)是使用一种新的配置模型,名为 Istio Gateway。 Gateway 允许应用一些诸如监控和路由规则的 Istio 特性来管理进入集群的流量。
Istio专为可扩展性而设计,可满足多种部署需求。它通过拦截和配置网状网络流量来做到这一点,如下图所示
image.png
Istio在服务网络中统一提供了许多关键功能:
- 流量管理:Istio的简单规则配置和流量路由使您可以控制服务之间的流量和API调用的流。Istio简化了诸如断路器,超时和重试之类的服务级别属性的配置,并使其轻而易举地设置重要任务(如A / B测试,canary部署和具有基于百分比的流量拆分的分阶段部署)。
借助对流量的更好可见性和开箱即用的故障恢复功能,无论遇到什么情况,您都可以在问题引起问题之前及时发现问题,使呼叫更加可靠,网络也更加强大。
-
安全:Istio的安全功能使开发人员可以将精力集中在应用程序级别上。Istio提供基础安全通信通道,并大规模管理服务通信的身份验证,授权和加密。借助Istio,默认情况下将保护服务通信的安全,从而能够在各种协议和运行时之间一致地实施策略,而几乎不需要更改应用程序。
-
可监控:Istio强大的跟踪,监视和日志记录功能使您可以深入了解服务网格部署。借助Istio的监视功能,可以真正了解服务性能如何影响上游和下游事物,而其自定义仪表板则可以提供对所有服务性能的可视性,并让您了解该性能如何影响其他流程。
-
平台支持:
Istio是独立于平台的,旨在在多种环境中运行,包括跨Cloud,本地,Kubernetes,Mesos等的环境。您可以在Kubernetes或Consul的Nomad上部署Istio。Istio当前支持:
-
Kubernetes上的服务部署
-
Services registered with Consul
-
在单个虚拟机上运行的服务
- 集成:Istio的策略执行组件可以扩展和定制,以与现有的ACL,日志记录,监视,配额,审计等解决方案集成。