Service Mesh 实战
马若飞
FreeWheel 北京研发中心首席工程师、《Istio 实战指南》作者
11858 人已学习
新⼈⾸单¥59
课程目录
已完结/共 41 讲
Service Mesh 实战
登录|注册
留言
21
收藏
沉浸
阅读
分享
手机端
回顶部
当前播放: 13 | 动态路由:用Virtual Service和Destination Rule设置路由规则
00:00 / 00:00
高清
  • 高清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.75x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看
01 | 课程介绍
02 | 内容综述
03 | Service Mesh的起源:为什么会出现Service Mesh技术?
04 | Service Mesh的发展:Service Mesh技术是如何演进的?
05 | 微服务通信的济世良方:什么是Service Mesh?它能帮你做什么?
06 | 列王的纷争:市面上有哪些主流的Service Mesh产品?
07 | 王者的诞生:为什么Istio有如此高的呼声?
08 | Istio的自我救赎:为什么Istio发生了两次重大的架构变更?
09 | 核心功能之流量控制:Istio是如何实现流量控制功能的?
10 | 服务的可观察性:如何理解服务可视化的重要性?
11 | 保卫你的网格:Istio是如何设计安全架构的?
12 | 安装与部署:如何安装Istio?它都支持哪些环境和部署方式?
13 | 动态路由:用Virtual Service和Destination Rule设置路由规则
14 | 网关:用Gateway管理进入网格的流量
15 | 服务入口:用Service Entry扩展你的网格服务
16 | 流量转移:灰度发布是如何实现的?
17 | Ingress:控制进入网格的请求
18 | Egress:用Egress实现访问外部服务
19 | 超时重试:提升系统的健壮性和可用性
20 | 熔断:“秒杀”场景下的过载保护是如何实现的?
21 | 故障注入:在Istio中实现一个“Chaos Monkey”
22 | 流量镜像:解决线上问题排查的难题
23 | 洞察你的服务:使用Kiali观测你的微服务应用
24 | 指标:使用Prometheus收集指标
25 | 监控:使用Grafana查看系统的整体状态
26 | 日志:如何获取Envoy的日志并进行调试
27 | 分布式追踪:使用Jeager对应用进行分布式追踪
28 | 守卫网格:配置TLS安全网关
29 | 双重保障:为应用设置不同级别的双向TLS
30 | 授权策略:如何实现JWT身份认证与授权?
31 | 实战演练(一):项目准备和构建过程
32 | 实战演练(二):实现自动化灰度发布
33 | 实战演练(三):提升系统的弹性能力
34 | 实战演练(四):配置安全策略
35 | 实战演练(五):收集指标并监控应用
36 | 实战演练(六):集成 ELK Stack 日志套件
37 | 实战演练(七):集成分布式追踪工具
38 | 调试工具和方法:调试网格的工具和方法有哪些?
39 | 实践经验总结:实际落地中的常见问题有哪些?
40 | 未来架构——从Service Mesh迈向云原生
41 | 结果测试&结束语
登录 后留言

全部留言(21)

  • 最新
  • 精选
写给三月
老师,我现在卡在 gateway中 hosts VS中的hosts host DR 的host 乱套了,让我彻底迷糊了,能特意去讲讲这几个host干什么用的吗?有点晕

作者回复: 可以把这个hosts字段理解为是一个外键,它负责把gateway和vs、vs和dr连接起来。 比如你在gateway里host配置为 www.example.com, 那么当你访问这个url时请求就会找配置了同样host的vs,根据它的路由信息去分发请求。

2020-10-23
2
5
V V
老师,你讲到“虚拟服务中 hosts是用来设置目标地址”?拿它和目标规则中的host 的作用有什么区别?

作者回复: 这是 VirtualService hosts的官方说明:The destination hosts to which traffic is being sent. Could be a DNS name with wildcard prefix or an IP address. 这是 DestinationRule host的说明:The name of a service from the service registry. Service names are looked up from the platform’s service registry (e.g., Kubernetes services, Consul services, etc.) 简单来说就是,VS里的hosts指向的就是DR的host;DR的host设置的是底层平台(如k8s)的service名称,因为最终是需要利用平台的dns来把请求导向目的地的。 这种用2个api资源设计的目的之一就是各司其职,VS负责配置路由信息,DR负责配置目标和策略。

2020-05-03
4
5
无敌小贝塔
老师你好,我有一个概念有点没太理解: 在课程12中讲到这个book demo搭建完毕后,每一个deployment的Pod里会自动生成相对应的istio proxy(envoy),所以相对应的规则最后都应该落在这些proxy上去执行然后在发给对应的实际服务; 在课程13中我们在创建 VirtualService和 DestinationRule等这些对象后,我的理解istiod应该把这些配置自动下发到各自对应的istio proxy中去,在demo的展示中我理解的是系统就自动把这些内容通过API下发给对应的review V1 pod中的istio proxy(问题1:不知道我这么理解是否正确) 问题2:在review这个服务上,有三个不同版本的pod,这些pod里面各自有一个istio proxy,前端productpage怎么知道它访问的是V1版本的istio proxy呢? 期盼老师的回复,感谢。

作者回复: 1. 对 2. 如果我们没有对reviews服务添加路由配置(Virtualservice),那它就使用k8s默认的负载均衡轮询选择版本(本质上是选择同一个服务的不同的pod,因为productpage是通过service name的方式,即reviews.default.svc.cluster.local访问的),如果你添加了VS,并指定了subset,那它就会根据你定义的路由去选择对应版本的pod,这也就是Istio控制流量的主要方式。

2020-12-26
2
4
无敌小贝塔
老师您好,有一个逻辑点我觉得您没讲深,又或者我一直没get到这个点,比如你课程中demo里创建的4个VS和DR(配置我都是理解的),我的问题1:这4个VS会被下发到所有不同应用pod上的envoy代理(比如productpage的envoy代理,三个reviws pod的envoy代理,rating的envoy代理)还是只下发到其对应 Pod上的envoy代理上呢(比如创建的productpage的VS只下发到productpage的envoy上,review和rating的也是同理),我的理解是下发到所有pod上的envoy代理中,不知道该是怎么理解呢?我的理解是第一种全部envoy代理上有所有的配置策略。如果我怕理解错了是第二中的话那么之间是怎么关联起来对应的呢?谢谢。 2 我理解的访问数据流是step1:productpage这个容器应用通过其对应的envoy代理去访问k8s下reviews对应发布的service cluster IP, step2:该 serviceIP通过kubeproxy(负载均衡)随机将请求发送至任意一个版本的review的pod(比如到达V3), 因为在实际到达V3 review应用容器之前会先经过其对应的envoy容器代理,此时envoy容器代理识别出对应的配置比如通过end-user字段:是要发送给V2的,那么这个review v3 envoy 代理就会把请求转给V2对应的review pod,这个请求最终经过review 2 业务容器前端的envoy代理到达review2容器,这样理解对吗? 我和几个朋友也做了讨论,大家好像都有一些困惑,所以想请老师针对上述问题做一个详细的答复,非常感谢您的帮助。 apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: reviews spec: hosts: - reviews http: - match: - headers: end-user: regex: .* route: - destination: host: reviews subset: v2 - route: - destination: host: reviews subset: v1

作者回复: 1. 是的,全量下发。因为envoy彼此之间并不知道业务上的调用关系,所以需要获取到所有配置; 2. envoy的转发比较复杂,牵扯listener、cluster、route等核心概念,你可以简单的理解为:envoy通过改写iptables规则做了流量劫持,productpage的出流量可以通过配置知道要发到哪个review pod。 tips: 可以参考这篇文章的分析 https://www.servicemesher.com/blog/istio-traffic-management-impl-intro/ 参考envoy配置可以通过 istioctl d envoy podname 查看config dump

2021-01-02
3
2
MrPolo
直接加上regex match 有end-user header的request到rule v2 apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: reviews spec: hosts: - reviews http: - match: - headers: end-user: regex: .* route: - destination: host: reviews subset: v2 - route: - destination: host: reviews subset: v1

作者回复: 优秀👍

2020-04-26
2
ileruza
老师,我感觉VS的hosts、host、和DR的host还有pods的container name,是不是都要相同的啊,因为要把它们“串起来”,就因为istio是pods的sidecar,所以就要相同?

作者回复: Istio是基于服务(k8s service)层面进行流量管理的,所以vs 和dr的host需要和pod对应的service一致。和container name没关系

2021-07-25
1
林树煌
老师,你好,能否使用nginx ingress controller 代替 istio的gateway?

作者回复: 可以

2021-02-03
2
1
老师问下 目前istio 熔断只能针对服务级别得把。可以支持接口级别得么

作者回复: 是的,还不支持endpoint级别

2020-06-27
2
1
Geek_7d539e
请教下马老师,有了 istio 还需要向 dubbo 这种服务注册发现路由的框架吗?如果需要他们是什么样的关系?

作者回复: 只从服务发现角度讲没有必要并存。如果需要一般是既想演进到service mesh架构,使用Istio的特性,又想保留原有服务的兼容性等。他们的关系会变成上下游关系,dubbo的注册信息需要转换成Istio的配置并下发。

2023-05-21
芒果少侠
老师,请问下udp请求能够被istio接管么

作者回复: 不接管

2021-09-24
收起评论