架构实战(K8S)| 青训营笔记

93 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的第4篇笔记

写在开头

本文主要描述抖音项目的生产环境的部分思路。

一、系统组件

image.png 1、Ingress:路由匹配、负载均衡

2、gateway:负载均衡、权限校验、限流

3、JWT:作为token存储用户登录状态

4、consul:服务发现,解决多微服务副本ip和端口管理困难等问题

5、redis:作为缓存防止大访问量打垮Mysql,做为session存储用户信息

6、Mysql:存储用户、视频等信息

7、User服务:用户注册、登录和关注等功能

8、Video服务:视频流、评论和点赞等功能

二、设计思路

负载均衡and服务发现

Ingress

Ingress为Kubernetes集群中的服务提供了入口,可以提供负载均衡、SSL终止和基于名称的虚拟主机,在生产环境中常用的Ingress有Treafik、Nginx、HAProxy、Istio等。在Kubernetesv 1.1版中添加的Ingress用于从集群外部到集群内部Service的HTTP和HTTPS路由,流量从Internet到Ingress再到Services最后到Pod上,通常情况下,Ingress部署在所有的Node节点上。Ingress可以配置提供服务外部访问的URL、负载均衡、终止SSL,并提供基于域名的虚拟主机。但Ingress不会暴露任意端口或协议

Service

Service是一种可以访问 Pod逻辑分组的策略, Service通常是通过 Label Selector访问 Pod组。Service能够提供负载均衡的能力,但是在使用上有以下限制:只提供 4 层负载均衡能力,而没有 7 层功能,但有时我们可能需要更多的匹配规则来转发请求,这点上 4 层负载均衡是不支持的

consul是否还有存在必要?

测试环境的框架原封不动的部署到k8s集群会,其请求访问过程会变为: 1、Ingress转发至gateway 2、gateway通过consul查询目标服务servicename 3、gateway通过serive查询目标服务对应pod ip 4、gateway发出请求 其中第二部明显可以省略 故consul可以去掉