istio简单认识

当前维护的服务有使用到istio,但是一直不太了解, 遂学习下相关知识,以下是本人参考网上资料整理而来,非原创:

背景:
随着微服务数量增加,各服务之间的通信、监控、以及安全性的管理愈加复杂,虽然有类似SpringCloud等解决方案,不过都是通过类库以及定制化方式将服务串联,有很高的的维护成本。而服务网格的出现解决了这一问题,它在外部网络和内部服务之间加了一层网络服务,对所有进出的网络流量做一层附加的操作来实现网络配置、安全、监控等功能,并且其与编程语言无关,解耦开发和运维工作,而istio就是在服务网格原理的基础之上衍生出功能更全的平台化框架。

Sidecar:
是服务网格技术中常用的(其中)一种设计架构,通过容器机制,在进程上是隔离的,基于 L7 代理进行通讯,允许微服务是由任何语言进行开发的。在这里插入图片描述服务网格: 即一批按照某些规则可以互相通信的服务组成的网络 (应该可以这样描述)

Istio

就是在服务网格基础之上,通过组件形式完成的更多功能的平台化中间件,其由控制平面和数据平面组成,功能强大

官方描述为:
Istio 简单的规则配置和流量路由允许您控制服务之间的流量和 API 调用过程。Istio 简化了服务级属性(如熔断器、超时和重试)的配置,并且让它轻而易举的执行重要的任务(如 A/B 测试、金丝雀发布和按流量百分比划分的分阶段发布)。有了更好的对流量的可视性和开箱即用的故障恢复特性,您就可以在问题产生之前捕获它们,无论面对什么情况都可以使调用更可靠,网络更健壮

控制平面: 下图下半部分

   通过Mixer/Pilot/Galley/Citadel等组件来实现其强大的路由、负载均衡、安全校验等功能

数据平面: 下图 上半部分

    通过Envoy来实现Sidecar 模式,透明劫持服务的进出网络,完成代理和服务间通信

istio原理图
由图可看出 下半部分的控制平面上Mixer/Pilot/Galley/Citadel组成,其作用如下:

Pilot

为 sidecar 提供服务发现功能,为智能路由(例如A/B测试、金丝雀部署等)和弹性(超时、重试、熔断器等)提供流量管理功能;它将控制流量行为的高级路由规则转换为特定于 Envoy 的配置,并在运行时将它们传播到 sidecar;

Mixer

负责在服务网格上执行访问控制和使用策略,并从 Envoy 代理和其他服务收集遥测数据;代理提取请求级属性,发送到Mixer进行评估;

Citadel

通过内置身份和凭证管理赋能强大的服务间和最终用户身份验证;可用于升级服务网格中未加密的流量,并为运维人员提供基于服务标识而不是网络控制的强制执行策略的能力;

Galley

用来验证用户编写的 Istio API 配置;未来的版本中 Galley 将接管获取配置、处理和分配组件的顶级责任,从而将其他的 Istio 组件与从底层平台(例如 k8s)获取用户配置的细节中隔离开来;

Istio中的Envoy 启动过程

在 Istio 中, 数据平面 的 Sidecar 模式启动时会首先执行一个 init 容器 istio-init ,容器只做一件事情,通过 iptables 命令配置 Pod 的网络路由规则,让 Envoy 代理可以拦截所有的进出 Pod 的流量。之后,微服务应用通过 Pod 中共享的网络命名空间内的 loopback ( localhost )与 Sidecar 通讯。而外部流量也会通过 Sidecar 处理后,传入到微服务。因为它们共享一个 Pod ,对其他 Pod 和节点代理都是不可见的,可以理解为两个容器共享存储、网络等资源,可以广义的将这个注入了 Sidecar 容器的 Pod 理解为一台主机,两个容器共享主机资源。

相关名词:
Service Mesh(服务网格)
Sidecar(是服务网格技术中常用的(其中)一种设计架构,实现网络通信),
Envoy(C++实现的高性能代理,等价Nginx,istio的数据平面是由envoy实现)

参考资料:
https://www.infoq.cn/article/x7msfgeoz9irzmb50koq
https://morven.life/posts/getting_started_istio/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值