热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

k8s集群网络(1)简介

在以前文章中我们以学习为目的介绍了二级制手动安装k8s集群。在这里我们

在以前系列文章中我们以学习为目的介绍了二进制手动安装k8s集群,这里也是一个系列文章,同样以学习为目的,我们介绍k8s集群网络。对于网络基本涉及两个方面,一是到各个服务的网络间负载均衡,另一个是网络间的通讯。


对于k8s来说网络间的负载均衡是由infrastructure实现的,即对于部署在集群中的各个pod是透明无感知的。基本的实现有2种方式,iptable方式和ipvs方式。


对于iptable方式是k8s默认的网络负载均衡模式,顾名思义就是利用linux iptable中的nat实现负载均衡。对于ipvs方式是在1.11版本中引入的,利用linux ipvs内核模块来实现负载均衡(大名鼎鼎的LVS同样也是利用ipvs来实现的负载均衡)。我们以前文章里并没有刻意配置k8s负载均衡策略,所以是默认的iptable方式。如果希望以ipvs方式运行,那么需要在kube-proxy网络组件的启动参数中加入--proxy-mode=ipvs。


对于容器之间的网络通讯总结起来基本分为两种,underlay方式和overlay方式。underlay方式在通讯过程中没有额外的封包,通常将容器的宿主作为路由来实现数据包的转发,需要宿主开启网络转发功能(net.ipv4.ip_forward = 1)。常见的实现方案有flannel host-gw方式,calico bgp方式。


overlay方式在通讯过程中有额外的封包,例如flannel vxlan方式(在三层网络里构建二层网络,即在udp包里封装eth以太包),calico ipip模式(在ip包里再次封装ip包)。还有flannel udp方式,在upd包里封装ip包(当然这种方式使用tun device,每次通讯都涉及到用户态到内核态的切换,所以效率不高,基本是不会被用的。不过作为学习入手是可以的)。


所以总结一下,对于k8s网络基本会包括以下方面

  • 网络负载均衡

    iptable方式(默认负载均衡策略)

    ipvs方式(v1.11以及以后版本)

  • 网络间通讯

    underlay网络:flannel host-gwcalico bgp等方式

    overlay网络:flannel vxlan,calico ipipflannel udp等方式



目前先写到这里,下一篇文章里我们继续介绍k8s集群中宿主内的网络。



推荐阅读
author-avatar
仔田
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有