一文搞懂Kubernetes的网络模型:Overlay和Underlay
- Private:禁止构建在同一物理接口上的多个MAC VLAN实例(容器接口)彼此间的通信,即便外部的物理交换机支持“发夹模式”也不行。
- VPEA:允许构建在同一物理接口上的多个MAC VLAN实例(容器接口)彼此间的通信,但需要外部交换机启用发夹模式,或者存在报文转发功能的路由器设备。
- Bridge:将物理接口配置为网桥,从而允许同一物理接口上的多个MAC VLAN实例基于此网桥直接通信,而无须依赖外部的物理交换机来交换报文;此为最常用的模式,甚至还是Docker容器唯一支持的模式。
- Passthru:允许其中一个MAC VLAN实例直接连接物理接口。
- Linux主机连接到的外部交换机或路由器启用了防止MAC地址欺骗的安全策略;
- 虚拟接口的需求数量超出物理接口能够支撑的容量上限,并且将接口置于混杂模式会给性能带来较大的负面影响;
-
将虚拟接口放入不受信任的网络名称空间中可能会导致恶意的滥用。
需要注意的是,Linux内核自4.2版本后才支持IP VLAN网络驱动,且在Linux主机上使用ip link命令创建的802.1q配置接口不具有持久性,因此需依赖管理员通过网络启动脚本保持配置。 3. 直接路由 “直接路由”模型放弃了跨主机容器在L2的连通性,而专注于通过路由协议提供容器在L3的通信方案。这种解决方案因为更易于集成到现在的数据中心的基础设施之上,便捷地连接容器和主机,并在报文过滤和隔离方面有着更好的扩展能力及更精细的控制模型,因而成为容器化网络较为流行的解决方案之一。 一个常用的直接路由解决方案如图10-12所示,每个主机上的各容器在二层通过网桥连通,网关指向当前主机上的网桥接口地址。跨主机的容器间通信,需要依据主机上的路由表指示完成报文路由,因此每个主机的物理接口地址都有可能成为另一个主机路由报文中的“下一跳”,这就要求各主机的物理接口必须位于同一个L2网络中。 于是,在较大规模的主机集群中,问题的关键便转向如何更好地为每个主机维护路由表信息。常见的解决方案有: ①Flannel host-gw使用存储总线etcd和工作在每个节点上的flanneld进程动态维护路由; ②Calico使用BGP(Border Gateway Protocol)协议在主机集群中自动分发和学习路由信息。与Flannel不同的是,Calico并不会为容器在主机上使用网桥,而是仅为每个容器生成一对veth设备,留在主机上的那一端会在主机上生成目标地址,作为当前容器的路由条目,如图10-13所示。 显然,较Overlay来说,无论是MAC VLAN、IP VLAN还是直接路由机制的Underlay网络模型的实现,它们因无须额外的报文开销而通常有着更好的性能表现,但对底层网络有着更多的限制条件。 本文选自马哥教育CEO马哥(马永亮)撰写的《Kubernetes进阶实战(第2版)》,第十章 10.1.3-10.1.4节,经出版方授权发布。 对本书感兴趣的读者朋友,欢迎扫码进群,与马哥进行技术交流。 畅销书全新升级,K8s架构、部署、组件原理、配置实战一次通关!多图详解流程与架构,大量示例可验证与实操,推荐阅读,京东限时5折,预购从速哟,扫码了解详情↓ 如果想彻底学透Kubernetes,强烈推荐马哥教育最新推出的Kubernetes专题课程,马哥亲授,书籍+配套视频教程,轻松拿下运维涨薪神器Kubernetes! Kubernetes 专题课程
今年4月份,马哥应华为邀请参加“华为云原生kubernetes进阶实操训练”,帮四川银行、成都农商银行、四川新网银行等60余家金融行业机构及20多家四川大型企业的技术人员开展相关培训,帮助行业客户更好地应对快速增长的“上云”需求。
2021年5月,马哥教育顺应技术迭代要求,重磅推出了《Kubernetes 专题课程》。便于你对kubernetes的实践运用,在实战项目中掌握、吃透企业级核心工作逻辑,本课程几乎涵盖了Kubernetes所有冲击大厂必备知识点,精准提升“薪”动力。
Kubernetes专题课程大纲
本课程致力于帮助容器编排技术的初级和中级用户循序渐进地理解与使用Kubernetes系统,因此课程充分考虑到初学者进入新知识领域时的茫然,采用由浅入深、提纲挈领、再由点到面的方式讲解每一个知识细节。 对于每个知识点,不仅介绍了其概念和用法,还分析了为什么有这个概念,实现的方式是什么,背后的逻辑为何,等等,使学员不仅能知其然,还能知其所以然 扫码解锁 高清完整版课程大纲 课程特色 马哥教育讲课贴合实际应用,采用“理论+实战”的方式,秉承“良心精神,匠心教育”的理念,势必教好每一位学员,传授真实有效的知识和经验,不断优化的授课方式和内容也得到了一众学员的好评。
参考互联网大厂的实战经验和岗位需求,为运维和开发人员设计的Kubernetes提升专题课程,更加实用。
Q&A
Q :课程时长多少?多久可以学完? A:本课程时长约70+课时,如果是全天学习,13天就可以学完。 Q :课程学习形式是什么? A:该课程为加密视频授权观看(授权期限1年,1年内仅授权2次,超过时间及次数不再授权),支持Windows电脑、iPad、iPhone、MAC设备。 Q :学不会,听不懂怎么办? A:看视频比看文档好很多,有群里同学的讨论可以形成一个一起学习的氛围。这些可以提高你的学习效果。