外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Istio 是目前最流行的云原生服务网格,GitHub 星标超过 3.4 万。它帮你解决微服务架构里服务通信、监控、安全这些问题,不用改业务代码就能用上。现在 Kubernetes 集群里微服务多了,大家都爱用它。

我自己在测试集群玩过 Istio,它确实把很多服务治理的活下沉到基础设施了,不用业务代码一个个重复造轮子。今天聊聊它实际用起来怎么样,值不值得花时间学。

Istio 解决了什么问题

拆了微服务之后,服务跟服务互相调用,你要做流量管理、监控埋点、熔断降级、身份认证,每个服务自己写代码太麻烦。每种语言都写一遍,全是重复劳动,还不好统一管控。

Istio 把这些事全都抽到基础设施层面,通过 sidecar 代理帮你处理。业务代码不用改,它全给你搞定了。以前服务调用出问题,排查半天不知道在哪卡了,Istio 自动给你生成监控和追踪,整条调用链一目了然,方便太多。

灰度发布要切流量,以前得自己写代码搞网关,Istio 配两行就能按比例切。新版本先切 10% 流量过去,出问题一秒切回来,发布稳多了。

基础例子看一下

用 Istioctl 安装到 Kubernetes 集群:

istioctl install --set profile=demo -y

给命名空间打个标签,Istio 自动注入 sidecar:

kubectl label namespace default istio-injection=enabled

部署官方示例应用:

kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml

整个 Gateway 把流量放进来:

kubectl apply -f samples/bookinfo/gateway-api/bookinfo-gateway.yaml

试试做流量拆分,把 10% 流量走到 v2 版本,90% 留在 v1:

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: reviews
spec:
  hosts:
    - reviews
  http:
  - route:
    - destination:
        host: reviews
        subset: v1
      weight: 90
    - destination:
        host: reviews
        subset: v2
      weight: 10

就这一段配置,流量切好了。不用重启服务,不用改代码,用户访问自然就有一部分到新版本,就是这么方便。

核心特性

透明流量管理

不用改业务代码,sidecar 自动注入进你的 Pod,所有进出 Pod 的流量都走它。功能开了对业务完全透明,代码感知不到,这点太爽了。

灵活路由

按权重切、按请求头切、按用户切,灰度发布、A/B 测试都能做,想怎么切就怎么切,发布风险低很多。

观测性强

自动收集 metrics、日志、分布式追踪,服务调用关系自动画出来。哪慢了哪错了,打开 Grafana 一眼看到,不用每个服务自己埋点。

安全能力

服务之间 mTLS 自动加密,身份认证自动做,不用你在代码里折腾证书。还能做访问控制,哪个服务能访哪个,配置一下就行。

熔断限流

开箱自带熔断限流,配几句就能把卡住的服务断掉,防止雪崩,不用自己在业务代码里实现。

哪些场景用 Istio

微服务超过五六个,就值得上 Istio。服务治理要统一做,观测性、安全、流量管理,一次全搞定。频繁发布要灰度,蓝绿、金丝雀,Istio 配一下就完事,不用改架构。

多团队开发,需要统一管控流量和安全,Istio 把这些收到底层,各个团队不用自己重复实现。Kubernetes 跑微服务,基本都能用得上。

Istio 有哪些优缺点

优点就是功能全,流量管理、观测性、安全,该有的都有。社区大,用的人多,遇到问题网上一搜就能找到答案。背靠 CNCF,项目稳定,更新勤快。不用改业务代码就能接入,这点太吸引人了。

缺点也明显,资源占用大,每个 Pod 多跑一个 sidecar,内存 CPU 都多占一块。小集群资源不够用,跑起来会有点卡。功能复杂,配置项多,学起来要花时间,出问题排错也比不用麻烦。就两三个微服务的小项目,用它太重了,完全没必要。

现在 Istio 发展得怎么样

出来快八年了,现在已经是服务网格的事实标准,CNCF 早就毕业了。好多大公司生产环境都在用,一直活跃更新,特性不断优化,性能越来越好,越来越成熟。

现在学 Istio 值得吗

做云原生微服务开发,肯定值得学。现在微服务越来越普及,服务治理这些问题迟早碰到,Istio 是目前最成熟的方案,学会了工作中碰上直接能用。

虽然复杂,但这些年安装配置简化了很多,跟着官方示例走一遍,半天就能搭起来玩。常用的流量切分、监控这些功能,半天就能学会,深入可以慢慢研究。做后端云原生开发,不懂 Istio 确实说不过去,绝对值得学。

项目地址:https://github.com/istio/istio

遍,半天就能搭起来玩。常用的流量切分、监控这些功能,半天就能学会,深入可以慢慢研究。做后端云原生开发,不懂 Istio 确实说不过去,绝对值得学。

项目地址:https://github.com/istio/istio

更多推荐