istio学习笔记(2)-envoy
版权声明 本站原创文章 由 萌叔 发表
转载请注明 萌叔 | https://vearne.cc
1. 前言
本文存在的目的,是为了通过图例的方式更好的整理envoy存在的意义
2. 图示
namespace配置了自动注入(istio-injection:enabled)之后,每个POD都会自动生成1个Sidecar容器 istio-proxy
(运行sidecar代理,实现方式为Envoy或MOSN
图示展示服务网格中的请求的情况
2.1 请求网格内部的服务
downstream
和upstream
是网格内的2个服务的容器
downstream
调用upstream
对这种场景,请求穿过需要穿过2个envoy
,1个是调用方POD
中的envoy
, 1个是被调用方POD
中的envoy
2.2 请求网格外部的服务
External Service
是网格外部的1个服务
对于这种场景,只穿过一次envoy
3. 支持的服务治理功能
- 请求分发, 按不同版本,以特定权重分发
- 负载均衡
- URL重写
- 故障注入,包含增加延迟,或者直接拒绝
- 服务熔断,比如针对5XX执行熔断操作
- 限频
- 重试
- 超时控制
- 状态统计 QPS/流量/URL/延迟等
这部分信息最后会由prometheus统一收集,最终展现在Grafana和Kiali中
envoy
实际是将原来应用中的拦截器以及网关实现的部分功能做了抽取和抽象,使得应用开发人员能够转注于业务逻辑开发。
后记(重要)
istio默认不记录日志。如果需要记录请求日志,需要在ConfigMap
istio中,增加
accessLogFile: /dev/stdout
accessLogEncoding: JSON # 可选值为 JSON或TEXT
另外envoy不支持HTTP1.0,如果发出的请求是HTTP1.0,会收到HTTP Status Code 426,要求升级协议。
参考资料
1.Sidecar 注入及透明流量劫持
2.Istio流量分析