首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

k8s集群网络(7)-service之ipvs cluster ip实现原理

在之前文章中我们介绍了基于iptable方式实现的k8s集群中cluster ip类型和node port类型service的负载均衡。其本质上是当网络数据包从pod的network namespace中通过linux veth pair设备进入到host宿主中的network namespace时,经过iptable一系列的NAT转换,把service的cluster ip和端口DNAT成pod的ip和端口。同时leverage linux iptable的random模块,实现了对pod的负载均衡,然后再交由host对目标pod的路由策略来实现将数据包发往pod。当然,这一切都是在linux内核空间实现的,和应用程序的用户空间没有关系。在这里我们主要介绍基于ipvs的cluster ip类型service的实现原理。如果对于ipvs不熟悉的同学可以浏览一下网站http://www.linuxvirtualserver.org/,大名鼎鼎的LVS负载均衡就是基于ipvs来实现的。

04
您找到你想要的搜索结果了吗?
是的
没有找到

k8s集群网络(8)-service之ipvs node port实现原理

在上一篇文章中我们介绍了基于ipvs的cluster ip类型service的实现原理,本质上是在iptable的PREROUTING chain以及相关target中利用ipset来匹配cluster ip,完成对即将做MASQUERADE伪装的items的mark标记,同时结合ipset也减少了iptable中的entry数量。另外在host network namespace里创建kube-ipvs0网络设备,绑定所有cluster ip,保证网络数据包可以进入INPUT chain。在INPUT chain中ipvs利用映射规则(可由ipvsadm查看该规则)完成对cluster ip的DNAT和目标pod endpoints选择的负载均衡,然后直接把数据送入POSTROUTING chain。当数据包进入POSTROUTING chain,经过相关的iptable target,匹配在PREROUTING chain中的mark标记,完成MASQUERADE伪装(SNAT host的ip地址)。最后数据包根据host network namespace的路由表做下一跳路由选择。在这里我们主要介绍基于ipvs的node port类型service的实现原理,如果对上一篇文章内容有所理解,那么这里也比较简单。

05

Docker实践之09-高级网络配置

当Docker启动时,会自动在主机上创建一个名为docker0虚拟网桥,实际上是Linux的一个bridge,可以理解为一个软件交换机,它会在挂载到它的网口之间进行转发。 同时,Docker随机分配一个本地未占用的私有网段中的一个地址给docker0接口。比如典型的172.17.0.1,掩码为255.255.0.0。此后启动的容器内的网口也会自动分配一个同一网段(172.17.0.0/16)的地址。 当创建一个Docker容器的时候,同时会创建了一对veth pair接口(当数据包发送到一个接口时,另外一个接口也可以收到相同的数据包)。这对接口一端在容器内,即一端在本地并被挂载到docker0网桥,名称以veth开头(例如vethb305ad8)。通过这种方式,主机可以跟容器通信,容器之间也可以相互通信。 Docker创建了在主机和所有容器之间一个虚拟共享网络。

01

全网最硬核 JVM 内存解析 - 3.大页分配 UseLargePages

前面提到了虚拟内存需要映射物理内存才能使用,这个映射关系被保存在内存中的页表(Page Table)。现代 CPU 架构中一般有 TLB (Translation Lookaside Buffer,翻译后备缓冲,也称为页表寄存器缓冲)存在,在里面保存了经常使用的页表映射项。TLB 的大小有限,一般 TLB 如果只能容纳小于 100 个页表映射项。 我们能让程序的虚拟内存对应的页表映射项都处于 TLB 中,那么能大大提升程序性能,这就要尽量减少页表映射项的个数:页表项个数 = 程序所需内存大小 / 页大小。我们要么缩小程序所需内存,要么增大页大小。我们一般会考虑增加页大小,这就大页分配的由来,JVM 对于堆内存分配也支持大页分配,用于优化大堆内存的分配。那么 Linux 环境中有哪些大页分配的方式呢?

01

Linux下iptables学习笔记

在Centos7版本之后,防火墙应用已经由从前的iptables转变为firewall这款应用了。但是,当今绝大多数的Linux版本(特别是企业中)还是使用的6.x以下的Centos版本,所以对iptables的了解还是很有必要的。此外,需要说明的是iptables自身并不具备防火墙的功能,它需要通过内核netfilter(网络过滤器)来实现,与firewalld一样,他们的作用都是用于维护规则,而真正使用规则干活的是内核的netfilter,只不过firewalld和iptables的结构以及使用方法不一样,他们都只是一个外壳应用罢了。打个比方,就好像有一本书,同样的内容,一种是纸质的,另一种是电子的,我们翻阅它的方式不同,给它做笔记的方式不同,但是内容(内核)一样。

04
领券