Istio 入门:云原生服务网格
文章目录

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
更多推荐
所有评论(0)