Envoy原理介绍及线上问题踩坑项目之一。目前最新为1.10版本。 Copyright © Huawei Technologies Co., Ltd. All rights reserved. Page 5 Envoy介绍 • Envoy采用C++实现,本身为四层及七层代理,可以根据用户应用请求内的数据进行高级服务治理 能力,包括服务发现、路由、高级负载均衡、动态配置、链路安全及证书更新、目标健康检查、 完整的可观测性等。 拦截指定命名空间 Pod创建请求 xDS Iptables 规则 ./etc/istio/proxy/SDS 证书 获取 配置 文件 可以修改全局注入参数 作用于所有目标空间的 pod 证书更新 Envoy启动流程 Envoy控制面流量 Envoy数据面流量 ./etc/istio/proxy/XDS SDS xDS CSR Prometheus configmaps Copyright 动参数。 • 2. 控制面通信 • Pilot-agent进程本身创建UDS接收Envoy连接,用于证书更新下发。并且与istiod建立证书更新通道。 • Envoy 通过pilot-agent转发机制与istiod建立长连接,通过xDS协议接收系统下发的监听器、路由、集群节点等更新信息。 • 3. 数据面通信 • 客户端请求进入容器网络,并被iptables规则拦截,经过DNAT后进入Envoy0 码力 | 30 页 | 2.67 MB | 1 年前3
Istio控制平面组件原理解析Envoy不支持优雅关闭,需要通过金丝雀或蓝绿部署方式实现 Envoy优雅关闭实现方式讨论:#3307 #2920Pilot-Discovery——配置中心(PD) uv1版本和v2版本之间的区别 u建立缓存配置 u触发配置生效方式v1版本和v2版本之间的区别 V1 HTTP1 REST JSON/YAML 弱类型 轮询 SDS/CDS/RDS/LDS 奠定控制平面基础 V2 HTTP2 GRPC istio-certs • secret: • optional: true • secretName: istio.default证书过期 üroot-cert.pem 实际有效期1年,没有找到更新方式,手动更新? ücert-chain.pem 和 key.pem 实际有效期90天,程序控制有效期45天 ü证书过期会被重新生成并挂载到/etc/certs ü触发envoy热启动ü方案一: •0 码力 | 30 页 | 9.28 MB | 6 月前3
Istio 与 Knative 踩坑实录生产环境Istio稳定运行 酷家乐于2018年8月29日在国际站生产环 境开始全面使用Istio 1.0.1 版本 486 天 服务范围 覆盖了不同业务链路的四十余个服务 40+ 服务 K8S安装环境 覆盖自建机房、IDC机房、云主机、海外云 服务等各种环境和不同的K8S版本 5 集群 服务网格实践进展5/25 Istio Community 服务网格实践进展6/25 Knative • RevisionUnkown 状态(0.8版本) • Queue-proxy 内存增长(0.8版本) • Activator 重复创建并占用大量资源22/25 Knative 当前瓶颈 FAAS 实践进展 • 还未发布 Production-ready 版本 • Queue-proxy 过重 • 冷启动时间亟待优化 • 支持代码级更新?23/25 展望-推动组织变革 FAAS0 码力 | 26 页 | 1.35 MB | 6 月前3
SolarMesh 基于Istio构建的流量监管平台多服务联动时问题难以察觉 Ø ... 服务间通信的复杂性: Ø 网络延迟 Ø 消息序列化 Ø 不可靠的网络 Ø 异步机制 Ø ... 开发难 排错难 测试难 运维难 Ø 服务变得非常多 Ø 版本变得非常复杂 Ø 上线十分痛苦 Ø 排查问题更难 Ø 解决手段更复杂 Ø 学的东西更多 Copyright © 2021 Cloud To Go 为什么我们需要服务网格 - 业务上k8s带来的问题 Copyright © 2021 Cloud To Go 应用场景 - 灰度版本迁移 传统的版本升级方式 使用solarmesh的版本升级方式 1. 打好部署包 2. 等到半夜 3. 部署一个机器 4. 使用模拟的测试数据测试 1. 打好部署包即可部署 2. 用真实的数据测试 3. 挑个良辰吉日分配流量,宣布更新 Copyright © 2021 Cloud To Go 应用场景0 码力 | 20 页 | 1.29 MB | 1 年前3
Extending service mesh capabilities using a streamlined way based on WASM and ORAS/http_filters/http_fi lters ○ …. ● 自定义开发: ○ 静态预编译: ■ 将其他过滤器集成到Envoy的源代码中,并编译新的Envoy版本。 ■ 这种方法的缺点是您需要维护Envoy版本,并不断使其与官方发行版保持同步。 ■ 此外,由于Envoy是用C++实现的,因此新开发的过滤器也必须用C++实现。 ○ 动态运行时加载: ■ 在运行时将新的过滤器动态加载到Envoy代理中。 applyTo: HTTP_FILTER match: …. patch: …. workloadSelector: labels: app: productpage version: v1 20 更新后的Deployment - 以hostpath方式挂载wasm filter文件到Proxy容器 apiVersion: extensions/v1beta1 kind: Deployment metadata:0 码力 | 23 页 | 2.67 MB | 1 年前3
百度APP基于Istio实现基础架构升级 - lightning talk - MichaelXu求对 应IP,会cache数据,需要即时更新。 Ø envoy离线或者被干预则立即通知bns-agent, fallback会使用原有治理策略。 #IstioCon 架构介绍 Ø Mesh控制中心: ü 运维中心:基于Mesh的统一运维操作中心。 ü 配置中心:维护模块上下游拓扑,管理路由配 置、通信策略。 ü 上线中心:管理Mesh组件版本,统一上线入口。 l 核心组件 Ø 控0 码力 | 9 页 | 2.20 MB | 1 年前3
Kubernetes容器应用基于Istio的灰度发布实践endpoint等资源对象 3. DiscvoeryServer使用 ServcieDiscovery接口上的服务发 现方法和用户配置的规则构造xDS 4. Envoy从Discovery获取xDS,动态 更新 Kubernetes Service Instance Instance Service Endpoint Endpoint Istio Istio & Kubernetes:Mixer exact: “group=dev” route: - destination: name: v1 - route: - destination: name: v2 灰度发布:灰度版本存在形式 kind: Deployment metadata: name: rating-v1 spec: replicas: 2 template: metadata: labels:0 码力 | 38 页 | 14.93 MB | 1 年前3
Kubernetes容器应用基于Istio的灰度发布实践endpoint等资源对象 3. DiscvoeryServer使用 ServcieDiscovery接口上的服务发 现方法和用户配置的规则构造xDS 4. Envoy从Discovery获取xDS,动态 更新 Kubernet es Service Instance Instance Service Endpoint Endpoint Istio14 Istio & Kubernetes:Mixer exact: “group=dev” route: - destination: name: v1 - route: - destination: name: v224 灰度发布:灰度版本存在形式 kind: Deployment metadata: name: rating-v1 spec: replicas: 2 template: metadata: labels:0 码力 | 34 页 | 2.64 MB | 6 月前3
在网格的边缘试探:企业 Istio 试水指南API稳定性问题:流量管理也仅仅是v1alpha3,用alpha特性发布 1.0的情况似乎比较罕见。 • 发布进度和质量:大版本以月计算的发布延迟,据我所知的 Release撤回发生了两次。 • 世纪难题:多出一层Sidecar造成的延迟。 • Pilot的性能,近几个版本一直在出问题。 • Mixer按照我个人的看法,API较为混乱,重构风险比较大Istio还用不用? • 你要的是不是API网关? 有完善的性能、功能测试方案。禁则 �������� ����� ����制定目标 • 集群环境申请:版本、开关、资源等。 • 功能性需求:本次试用中Istio需要提供的功能,再次强调:No Freestyle • 非功能需求:并发、成功率、响应时间等服务质量参数。 • 故障处理需求:故障预案。 • 影响范围分析。 • 选定测试版本:研读开放Issue以及Release Notes。测试方案部署 • Istio部署 根据性能和功能测试方案完成测试。 • 如果性能下滑,可以尝试扩张资源。 • 如果无法达成测试目标,建议取消——无侵入的好处就是可以撤 退。 • 评估关联服务的工作情况——尤其是重试、超时特性的应用切换演练 • 在测试版本和后备版本之间根据预案进行切换。 • 验证相关服务的工作状况。 • 最终保障试点上线 • 在通过测试验证和切换演练的过程之后,就可以将试用的网格应 用上线到生产 环境开始试运行了。和所有其他上线活动一样,在0 码力 | 19 页 | 11.41 MB | 6 月前3
13 Istio 流量管理原理与协议扩展 赵化冰HTTP 的处理进行聚合,而不是为每一个服务创建一个 Listener? • 降低 Listener 数量和配置大小,减少资源占用 • 兼容 headless 和虚机服务,避免 Listener 配置频繁更新 • 采用七层 header 进行路由,请求原始目的 IP 不应影响路由结果 入向请求配置 出向请求配置 0.0.0.0_9080 0.0.0.0_15001 0.0.0.0_15006 Pilot0 码力 | 20 页 | 11.31 MB | 6 月前3
共 12 条
- 1
- 2













