Service Mesh 实战
马若飞
FreeWheel 北京研发中心首席工程师、《Istio 实战指南》作者
11858 人已学习
新⼈⾸单¥59
课程目录
已完结/共 41 讲
Service Mesh 实战
登录|注册
留言
16
收藏
沉浸
阅读
分享
手机端
回顶部
当前播放: 14 | 网关:用Gateway管理进入网格的流量
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 | 结果测试&结束语
登录 后留言

全部留言(16)

  • 最新
  • 精选
Geek_b70b14
老师您好, 上节留言里看到您说"VS里的hosts指向的就是DR的host", 而这里VS里的hosts("abc.k8s.com")明显与DR的host(details)不一样啊, 希望老师解答下这两个具体什么意思, 有时VS的hosts指的是K8s的Service, 这里又是指定可以进行访问的主机域名, ..., 懵了...

作者回复: 可能我没说清楚。DR是定义子集的,VS是定义路由的,如果在VS里定义的路由要把请求指向不同的子集,就需要和DR关联起来,那么关联的点就是: VS里的route.destination.host -> DR的host。具体仔细看看文档的说明。 https://istio.io/latest/docs/reference/config/networking/virtual-service/#Destination 另外,如果要给一个Gateway关联一个VS,那它们的关联点就是: gateway.servers.hosts -> VS.spec.hosts (可以一个和多个)。真实的生产环境一般这样配,gw里的hosts是多个(如多个二级域名对应不同的子系统),而每一个域名对应一个VS(根据path把请求打到不同的api)。

2020-12-19
1
骨汤鸡蛋面
老师请教一个问题,从ingress-gateway的原理可以看到,ingress-gateway pod 只是用了下 k8s service的数据,数据包流转并没有真正使用 k8s service,那能够不用 k8s service呢,我们公司内网 pod ip 是直接跟物理机互通的,创建大量的k8s service以及 iptables 有点浪费性能了

作者回复: 可以,但是你就丧失了对pod的流控能力了。istio流控的核心依赖就是service

2020-05-30
2
1
k8svip
本期作业请老师协助分析下: 1. 使用的NodePort 方式 访问 istio-ingressgateway service服务 如下: [root@master01 istio]# kubectl get svc -n istio-system |grep ingress istio-ingressgateway NodePort 10.97.147.165 <none> 15020:30474/TCP,80:31356/TCP,443:30789/TCP,15029:31429/TCP,15030:30642/TCP,15031:30512/TCP,15032:31178/TCP,31400:30820/TCP,15443:32566/TCP 13h [root@master01 istio]# 2. 仅允许域名访问 [root@master01 istio]# cat c-3-3.yaml apiVersion: networking.istio.io/v1alpha3 kind: Gateway metadata: name: test-gateway spec: selector: istio: ingressgateway servers: - port: number: 80 name: http protocol: HTTP hosts: - "abc.k8s.com" --- apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: test-gateway spec: hosts: - "abc.k8s.com" gateways: - test-gateway http: - match: - uri: prefix: /details - uri: exact: /health route: - destination: host: details port: number: 9080 [root@master01 istio]# 这里只允许 abc.k8s.com 访问; 3. 使用curl 访问正常 curl -H "Host: abc.k8s.com" http://1.65.15.140:31356/health {"status":"Details is healthy"} curl -H "Host: abc.k8s.com" http://1.65.15.140:31356/details/0 {"id":0,"author":"William Shakespeare","year":1595,"type":"paperback","pages":200,"publisher":"PublisherA","language":"English","ISBN-10":"1234567890","ISBN-13":"123-1234567890"} 4. 把IP与域名绑定后,使用浏览器 http://abc.k8s.com:31356/details/0 访问404; 5. 日志写下一个留言

作者回复: 默认应该是LoadBalancer类型,NodePort是你自己改的?另外这个ip 1.65.15.140是哪里来的我没看到。 2 个方法,进入kiali去验证下配置有什么问题; 进入对应pod的envoy(istio-proxy)查看一下浏览器的请求log是什么

2020-05-21
5
1
Geek_b70b14
老师请问VS和DR或者其它kind资源类型里的 spec.selector标签指的是deployment, service, pod三者哪个的标签. 非常感谢

作者回复: VS、DR里不需要设置selector,我理解你说的应该是gateway这个crd里的selector,它对应的是一个叫ingressgateway,本质上是一个LoadBalancer类型的service。

2021-01-26
b1ue_sky
老师,这个网关是针对整个集群的么?整个集群的入流量都经过网关?

作者回复: 针对整个网格,如果你的集群都由网格覆盖,那2者一致。 你可以简单的把它理解为和K8s 的Ingress没什么区别

2021-01-15
Harold
老师,目前生产环境中使用的是nginx ingress。 两个问题 1. istio gateway+ vs 这种形式在性能和稳定性上可以替代 nginx ingress 了吗? 2. 出于兼容考虑,如果网关层继续使用nginx ingress,ingress的规则是否不需要变动,还是 ingress -> k8s svc ,需要多做的是为每个应用定义一套 vs + dr 的规则?

作者回复: 1. 不敢下绝对的结论。但多个实践表明并没有性能问题 2. 是的

2020-12-01
无需昵称
老师, 我的网关工作是正常的,我的sample看起来也是都是正常的,为什么http://localhost/productpage 一直是404呢? kubectl get svc -n istio-system NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istio-ingressgateway LoadBalancer 10.103.247.147 localhost 15021:31129/TCP,80:32605/TCP,443:32036/TCP,15443:30882/TCP 22h

作者回复: kubectl get gw,vs -o yaml 查看一下gateway和virtualservice的配置,贴出来看看,感觉没配置好。

2020-10-30
钦开
老师,在gateway里面会有一个spec.selector选择为istio:ingressgateway,这个就是我们在istio-system命名空间里面的istio-ingressgateway资源对象,这个东西的作用其实就是我们以前的ingress-nginx吗?用于转发请求的

作者回复: 是的,你可以通过 k get svc -n istio-system 查看到这个ingressgateway就是一个LoadBalancer类型的service,只不过k8s里你是用ingress-nginx,它这个用的是envoy。

2020-10-23
问下kong怎么和istio结合呢。

作者回复: Kong做ingress gateway管理入流量,istio管理mesh内部流量,我觉得是比较合理的方案。目前没看到业界有相关的实践,你可以参考下着两篇文章: https://konghq.com/blog/kong-ingress-controller-0-6-released-istio-support-admission-controller-support/ https://kubernetes.io/blog/2020/03/18/kong-ingress-controller-and-istio-service-mesh/

2020-07-21
2
Geek_涛
老师,我想请问一下,一个web网站里有用户管理,用户管理是一个微服务,显示给用户看的网页内容是不是也需要单独做一个微服务,来调用用户管理这个微服务,谢谢

作者回复: “显示给用户看的网页内容” - 我理解你说的是前端的页面吧?这要看你这个页面所获取的数据来自于哪个服务,那么通常它就应该属于这个服务。

2020-06-25
收起评论