【华为云技术分享】跟唐老师学习云网络 : Kubernetes网络实现 (2)

【华为云技术分享】跟唐老师学习云网络 : Kubernetes网络实现

3.2 东西流量

K8s吸取了前辈们的精华,除了平台外部访问App,还新增考虑了平台内部,App之间如何互相访问。

【华为云技术分享】跟唐老师学习云网络 : Kubernetes网络实现

即K8s通过增加一个负载均衡的“LB”设备,来搞定平台内部的App间互相访问。给每个App取个别名,在LB上面登记一下,就可以被内部其他App访问。

由上图所示,可以看到,平台内部访问,一般都是水平画的,所以也叫做东西流量。一个完整的PaaS平台,就是需要南北流量+东西流量,全套治理的。

3.3 Docker原生访问方式

还记得唐老师的《Docker网络实现》章节吧,Docker容器可以通过“节点IP+节点Port”的方式访问到容器。原理的容器所在节点,设置了NAT规则。报文一到达节点,根据目的端口,转发进入容器。

【华为云技术分享】跟唐老师学习云网络 : Kubernetes网络实现

3.4 小结:K8s中3种访问容器的通道

(1)通过南北流量(从集群外部访问App)访问App容器

(2) 通过东西流量(集群内App之间)访问App容器

(3) 通过Docker原生自带的方式,访问App容器

【华为云技术分享】跟唐老师学习云网络 : Kubernetes网络实现

下一章节,我们简单介绍下每种方式,K8s分别怎么去实现的。

四、K8s怎么实现容器访问

虽然K8s上面,有多种访问App容器的方法。但是不管用什么方式访问,一个App想要能被访问,就得得到K8s的同意。K8s把这个许可证叫做“Service”:也就是不管什么南北流量、东西流量,你的App想要能被访问,就得先申请Service许可证。

4.1 南北流量

要实现一个App的访问通道,一定要2个东西:(1)LB负载均衡器 + (2)注册映射关系。

映射关系就是:报文来了,应该转发给哪个App实例? 即:找到 “哪个App + 哪个实例”。

负载均衡器呢,一般大家爱用Nginx,不过也有其他类型的实现。

【华为云技术分享】跟唐老师学习云网络 : Kubernetes网络实现

K8s比CF聪明的地方是,没有自己去实现LB。而只定义了App需要怎么样才能登记到LB上面。即只定规范,不限制实现(这种思路,在k8s里面好多,比如存储的CSI,运行时的CRI的,容器网络的CNI 都是这样。)

Ø 4层LB

最简单的4层LB实现,K8s取了个名字:LoadBalancer(1)。

即定义:xx协议+xx端口 =》xx应用,具体规则自己去看资料。

Ø 7层LB

为了定义7层LB的规则,K8s给规范取了名字:Ingress(2)。

即定义:xx网址+xx-URL路径 =》xx应用,具体规则也自己看K8s资料。

南北LB都是全局级的,即:全局一个(HA多实例,咱也当一个整体)就行;不需要每个Slaver节点上一个。

4.2 东西流量

东西流量,也一样,需要LB+规则注入。这里,K8s设计就比较有意思。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzsjdz.html