
嗨,habrozhiteli! 我们最近出版了有关Kubernetes版本1.10的书。 该帖子评论了“ Kubernetes的网络解决方案”一文。
网络是一个广泛的话题。 使用设备,炉床和容器配置网络的方法有很多。 Kubernetes不仅限于此。 该平台规定的只是一个高级网络模型,该模型具有用于壁炉的平坦地址空间。 在此空间内,您可以针对不同的环境实施具有不同功能的许多良好解决方案。 在本节中,我们将研究其中的一些,并尝试了解它们如何适合Kubernetes网络模型。
在硬件集群中创建网桥
最简单的环境是裸机群集,它是常规的L2级物理网络。 要将容器连接到这样的网络,可以使用标准的Linux网桥。 这是一个非常艰苦的过程,需要使用低级Linux网络命令(例如brctl,ip addr,ip路由,ip链接,nsenter等)的经验。您可以通过阅读以下指南开始实现这种解决方案:blog.oddbit.com/
2014/08/11 /四路连接到docker /(查找“使用Linux Bridge设备”部分)。
康蒂夫
Contiv是通用网络附件。 它旨在通过CNI连接容器,并且可以与Docker(直接),Mesos,Docker Swarm以及自然地与Kubernetes一起使用。 Contiv处理网络策略,并部分复制Kubernetes中的类似对象。 以下是此网络插件的一些功能:
- 支持libnetwork中的CNM和CNI规范;
- 一个功能丰富的策略引擎,可提供安全性和可预测的应用程序部署。
- 同类最佳的容器性能;
- 多租户,隔离和重叠子网;
- IPAM集成和服务发现;
- 多种物理拓扑:
a)第2层协议(VLAN);
b)第三层协议(BGP);
c)覆盖网络;
d)思科SDN(ACI); - IPv6支持;
- 可扩展的策略和路由分配;
- 与应用程序模板的集成,包括以下内容:
a)由Docker组成;
b)Kubernetes部署管理器;
c)内置于“东-西”类型(东-西)微服务均衡器中的服务负载平衡;
d)存储,访问控制(例如etcd / consul),网络传输和管理过程中的流量隔离。
Contiv具有许多功能。 该工具执行各种各样的任务并支持各种平台,因此我不确定它是否将是Kubernetes的最佳选择。
打开vswitch
Open vSwitch是成熟的虚拟交换机(软件)交换机解决方案,受到许多主要市场参与者的支持。 开放式虚拟网络(OVN)系统允许您构建各种虚拟网络拓扑。 她有一个特别的Kubernetes插件,但是配置起来非常困难(请参阅
github.com/openvswitch/ovn-kubernetes手册)。 Linen CNI附加组件的功能较少,但其配置要容易得多:
github.com/John-Lin/linen-cni 。 亚麻CNI结构如图2所示。 10.6。
Open vSwitch可以将物理服务器,VM和Pod /容器集成到单个逻辑网络中。 该系统支持覆盖和物理模式。
以下是其一些主要功能:
- 具有中继和公共端口的标准802.1Q VLAN
- 带或不带LACP的NIC绑定,用于更高级别的交换机
- NetFlow,sFlow®和镜像可增强可见性;
- QoS配置(服务质量)以及策略;
- 通过Geneve,GRE,VXLAN,STT和LISP进行隧道传输;
- 802.1ag中的中断控制;
- OpenFlow 1.0以及众多附加组件;
- 事务性数据库,用于存储带有C和Python绑定的配置;
- 使用Linux内核模块的高性能重定向。
Nuage Networks VCS
虚拟化云服务(VCS)是Nuage的产品,Nuage是一个可扩展的,基于策略的平台,用于构建软件定义的网络(软件定义的网络,SDN)。 这是一个企业级解决方案,基于开放系统Open vSwitch(用于数据重定向)和基于开放标准的多功能SDN控制器。
Nuage平台将Kubernetes Pod和第三方环境(虚拟和硬件)组合到透明的覆盖网络中,并允许您描述针对不同应用程序的详细策略。 它的实时分析引擎使您可以监视Kubernetes应用程序的可见性和安全性。
此外,所有VCS组件都可以作为容器安装。 没有特定的硬件要求。
运河区
Canal是两个开源项目的混合物:Calico和Flannel。 因此得名。 由CoreOS团队开发的Flannel项目处理容器的网络功能,而Calico负责网络策略。 最初,它们是彼此独立开发的,但是用户希望一起使用它们。 Canal开源项目现在是用于将Calico和Flannel作为单独的CNI插件安装的部署模板。 Tigera由Calico的创始人创建,曾支持两个项目,甚至计划进行更紧密的集成,但是自从发布自己的解决方案以在Kubernetes中实现应用程序之间的安全联网以来,优先级已转向简化Flannel和Calico的配置和集成,而不是开发统一的解决方案。 在图。 10.7显示了运河系统的当前状态以及它与业务平台(如Kubernetes和Mesos)的关系。
请注意,与Kubernetes集成时,Canal不会直接访问etcd,而是Kubernetes API服务器。
绒布
Flannel是一个虚拟网络,可为每个节点提供一个用于处理容器运行时的虚拟网络。 在每个节点上,启动flaneld代理,根据etcd集群中存储的保留地址空间来提升子网。 容器之间以及整个节点之间的数据包交换是由多个服务器之一进行的。 通常,服务器在TUN设备上使用UDP,默认情况下,该设备通过端口8285传输流量(请不要忘记在防火墙中打开它)。
在图。 10.8详细描述了Flannel网络的各个组件,其创建的虚拟网络设备以及它们如何通过docker0桥与主机和炉膛进行通信。 在这里,您还可以看到封装UDP数据包的过程及其在节点之间的移动。
支持其他网络技术:
- vxlan-在内核内部使用VXLAN封装数据包;
- host-gw-通过远程服务器的IP地址创建到子网的IP路由。 值得注意的是,这需要在运行Flannel的服务器之间的第二网络层进行直接连接。
- aws-vpc-在Amazon VPC路由表中创建IP路由
- gce-在Google Compute Engine网络中创建IP路由
- alloc-仅执行子网的选择,而不执行数据包的重定向;
- ali-vpc-在Alicloud VPC路由表中创建IP路由。
印花布项目
Calico是容器之间联网和网络安全性的完整解决方案。 它可以与所有主要的业务流程平台和运行时集成:
- Kubernetes(CNI的附加组件);
- Mesos(CNI的附加组件);
- Docker(libnework的附加组件);
- OpenStack(Neutron的附加组件)。
Calico还可以在保留所有功能的同时在本地或公共云中部署。 网络策略的应用可能取决于负载,这可以提供清晰的流量控制并确保数据包始终到达所需的目的地。 Calico可以从业务流程平台自动导入网络策略。 实际上,他负责在Kubernetes实施网络策略。
罗曼娜
Romana是用于容器之间联网的现代解决方案。 它最初是为在云中使用而设计的,并且在第三层网络上运行,它依赖于管理IP地址的标准方法。 Romana允许您通过使用基于Linux的服务器创建网关和路由来隔离整个网络。 在第三网络层上的工作不需要封装。 网络策略作为分布式防火墙应用于所有端点和服务。 由于您不再需要配置虚拟覆盖网络,因此Romana促进了不同云平台之间的本地部署和混合部署。
最近出现在Romana中的虚拟IP地址允许本地用户使用外部地址和服务规范在第二级本地网络中打开对其服务的访问。
Romana开发人员声称,他们的方法大大提高了性能。 在图。 图10.9显示了如何避免VXLAN封装,从而避免了很多开销。
织网
Weave Net项目的主要功能是易于使用和缺乏配置。 它使用VXLAN封装,并在每个节点上安装微型DNS。 作为开发人员,您将要处理高水平的抽象。 为容器命名后,Weave Net将允许您连接到标准端口并启用适当的服务。 这有助于将现有应用程序迁移到微服务和容器化平台。 Weave Net提供了一个CNI插件,可用于Kubernetes和Mesos。 从Kubernetes 1.4开始,可以通过部署DaemonSet的单个命令完成与Weave Net的集成:
kubectl apply -f https://git.io/weave-kube
每个节点上托管的Weave Net Pod负责将任何其他Pod实例连接到Weave网络。 Weave Net通过网络策略支持API,从而提供了完整且易于配置的解决方案。
有效使用网络策略
Kubernetes网络策略旨在控制定向到特定Pod和名称空间的流量。 当管理数百个已部署的微服务时(Kubernetes经常是这种情况),炉床之间的联网就变得尤为重要。 重要的是要了解该机制仅与安全性间接相关。 如果攻击者能够穿透内部网络,则他极有可能能够创建自己的炉床实例,该实例将符合网络策略并允许与其他炉床的自由通信。 在上一节中,我们研究了Kubernetes中的各种网络解决方案,重点是网络接口。 这里,我们将重点介绍在这些解决方案之上实施的网络策略,尽管这两个组件紧密相连。
Kubernetes中的网络策略架构
网络策略决定了炉床的子集如何与彼此以及与其他网络端点进行交互。 NetworkPolicy资源使用标签选择炉床,并定义权限规则列表,该规则允许将流量定向到选定的炉床实例(除了给定名称空间中隔离策略已允许的内容)。
»这本书的更多信息可以
在出版商的网站上找到»
目录»
摘录Khabrozhitel -
Kubernetes的 20%优惠券
支付纸质版本的书后,将通过电子邮件发送该书的电子版本。
PS:这本书的成本的7%将用于新计算机书籍的翻译,移交给印刷厂的书籍清单在
此处 。