[DAY20]新手学Istio

I s t i o

https://ithelp.ithome.com.tw/upload/images/20210927/20129515dnKFG56qSA.png

什麽是Istio

Istio是Google、IBM 和 Lyft一起开发的开源专案,Istio是希腊语,意思是起航或是帆船,跟kubernetes是有相关连的。

Istio 是 开源的服务网格 ,是这几年来使用k8s的开发人员会常常听到的组合 k8s + Istio,为什麽Istio那麽热门~~因为它提供了不限语言平台,简单的把应用程序网路功能自动化,Istio也支援目前台面上的公有云(ex eks,aks,gcp..etc)。

Istio是个超热门开源专案,不管是排除issue或是更版的时间都很神速,以个人安装版本,今年年初安装时的istio 1.8.x到现在Istio 1.11.3 @ 2021/09/23..直接跨了三个小版号 /images/emoticon/emoticon02.gif,缺点就真的是追不完的更新QQ...不知道明年会不会有架构性的大改版..QQ。

使用Istio的好处

  • 提供一致的服务网路管理体验 : 网路业者能统一管理旗下所有服务的网路,而不必增加开发人员负担。
  • 运用 Istio 的优点保护服务 : 安全服务业者可轻松地实施服务对服务的安全防护机制,包括验证、授权和加密。
  • 提高应用程序效能 : 实施最佳做法 (如发布初期测试版本),并深入了解应用程序,藉此找出应集中在哪些地方投入心力才能提升效能。

资料出处

Istio的特点

  • 安全性上面,使用TLS加密、身份认证和授权的cluster内部服务到服务的安全沟通
  • gRPC、WebSocket、http与tcp 的load balance,重点是gRPC..rrrrr我好兴奋rrr
  • 可以透过route规则、重试、故障转移和故障注入对流量行为做精细的设定
  • 支援存取控制、速率限制(ratelimit)和配额
  • 对cluster内的流量(ingress与egress)进行autoscaling、log和tracking

Istio 架构图

还没使用Istio前,service a需要写设定连线到service b

使用後

图片来源
service与sevice间的沟通都是透过envoy proxy进行处理,把沟通其他服务这层抽离出来,
service只做到逻辑处理,网路层一律使用envoy proxy统一处理。


图片来源

Istio Component

Envoy

Istio预设使用Envoy作为proxy,而Envoy基於c++开发,所以基本上效能应该是没什麽问题,不像某j..那吃的资源量/images/emoticon/emoticon01.gif,上面的架构图就清楚看的出来,Envoy主要是协调服务的
Envoy proxy是使用sidecar的方式跟pod一起部署,sidecar就长的像下图这样子XD,istio就依附pod服务运行的意思

图片来源

Envoy有下列特性

  • 动态服务发现(Dynamic service discovery)
  • 负载均衡(Load balancing)
  • TLS 终端(TLS termination)
  • HTTP/2 与 gRPC 代理(HTTP/2 and gRPC proxies)
  • 熔断器(Circuit breakers)
  • 健康检查(Health checks)
  • 基於百分比流量分割的分阶段发布(Staged rollouts with %-based traffic split)
  • 故障注入(Fault injection)
  • 丰富的指标(Rich metrics)

资料来源

Istiod

istio在1.5版後把原本独立的componet整合成istod(d是daemon的意思),里面包含了Pilot,CitadelGalley三个componet,从这例子就很明显看的出来,istio就是个一言不合就大改的专案QQ

  • Pilot : 提供服务发现(Service Discovery)给Envoy使用,用於智慧路由的流量管理功能(ex:A/B 测试、金丝雀发布..etc),日还有超时、重试、熔断器等。
  • Citadel : 主要是做使用者跟服务间的认证与凭证管理,也可以充当凭证授权(CA),这样子服务间的连线都是使用mTLS。
  • Galley : Istio的配置验证、提取、处理和分发元件。

资料来源

以上为istio的简简简述


<<:  Day 13 Mailhog - 模拟 SMTP 邮件服务的开发利器

>>:  Day-13 Pytorch Tensors

食谱系统制作_下

制作目标 完成系统 发现问题 Icebear将readline的终止程序放在回圈以前,造成输入料理名...

[火锅吃到饱-9] 自由小火锅

特别想吃猪脚时,我会来这里解馋。(今天选麻辣锅底) 时间又来到下午的4点,今天不用赶4点30分,因为...

Day 3 我要开始Mock了

Mock What's mock? 先想像一个画面,当我们要隔离我们的元件时,一个component...

Day30 Redis架构实战-Redis Request Routing/效能监控与调教

Redis Request Routing 在Redis Server丛集中所有的操作透过Reque...

Day 26 Wireless Attacks - 无线攻击 (aircrack-ng)

前言 终於进入新的篇章06-Wireless Attacks,但由於先前的Kali虚拟机环境无法进行...