通过基于策略的网络扩展Kubernetes部署

编者注:今天的帖子是Nuage Networks产品管理总监Harmeet Sahni撰写的,内容是他们对Kubernetes的贡献以及对基于策略的网络的见解。  

尽管距Kubernetes 1.0发行仅18个月了,但我们已经看到Kubernetes成为部署分布式应用程序的领先容器编排平台。最大的原因之一是围绕它发展起来的充满活力的开源社区。 Kubernetes的众多贡献者来自不同的背景,这意味着我们和用户社区可以放心,我们正在投资开放平台。诸如Google(容器引擎),Red Hat(OpenShift)和CoreOS(构造)等公司正在开发基于Kubernetes的自己的商业产品。这是一件好事,因为它将导致更多的标准化并为用户提供选择。 

Kubernetes应用程序的网络要求

对于在Kubernetes上部署应用程序的公司而言,最大的问题之一是如何大规模部署和协调容器。他们知道底层基础架构(包括网络和存储)需要支持分布式应用程序。软件定义网络(SDN)非常适合此类应用程序,因为网络基础结构的灵活性和敏捷性可以与应用程序本身的灵活性和敏捷性相匹配。这些应用程序的网络要求包括:

  • 网络自动化 
  • 分布式负载平衡和服务发现
  • 具有细粒度策略的分布式安全
  • QoS政策
  • 可扩展的实时监控
  • 服务分散在容器,VM和Bare Metal Server中的混合应用程序环境
  • 服务插入(例如防火墙)
  • 支持私有和公共云部署

Kubernetes网络

Kubernetes提供了一组核心平台服务,这些服务通过以下方式公开 蜜蜂 。可通过扩展API,插件和标签以多种方式扩展该平台。这使得可以为Kubernetes开发各种各样的集成和工具。 Kubernetes认识到每个部署中的网络都是唯一的。 Kubernetes并没有尝试让核心系统尝试处理所有这些用例,而是选择使网络可插拔。

Nuage网络 我们提供了基于策略的可扩展SDN平台。该平台由网络策略引擎管理,该引擎抽象出与配置系统相关的复杂性。有一个单独的SDN控制器,它具有非常丰富的路由功能集,并且可以水平扩展。 Nuage使用开源 打开vSwitch(OVS) 在OVS用户空间中进行了一些增强的数据平面。与Kubernetes一样,Nuage也将开放性视为其平台的核心宗旨。 Nuage提供开放的API,允许用户协调其网络并集成诸如防火墙,负载平衡器,IPAM工具等网络服务。Nuage在OpenStack和VMware等各种云平台以及Kubernetes等容器平台中受支持。

Nuage平台实现了Kubernetes 网络插件 它创建VXLAN覆盖以在Kubernetes Pod和非Kubernetes环境(VM和裸机服务器)之间提供基于策略的无缝联网。每个Pod都从属于一个网络的网络获得了一个IP地址。 命名空间 且未绑定到Kubernetes节点。

随着使用微服务构建云应用程序,控制这些微服务之间的流量的能力是一项基本要求。重要的是要指出,这些网络策略还需要控制从外部网络和服务传入/传出的流量。 Nuage的策略抽象模型使您可以轻松声明应用程序的细粒度入口/出口策略。 Kubernetes有一个beta 网络策略API 使用Kubernetes扩展API实现。 Nuage实施此网络策略API来解决各种策略用例,例如:

  • Kubernetes命名空间隔离
  • 命名空间间政策
  • 相同或不同命名空间中Pod组之间的策略(策略组)
  • Kubernetes Pod /命名空间与外部网络/服务之间的策略

用户要考虑的一个关键问题是策略实施的可伸缩性。某些网络设置需要创建访问控制列表(ACL)条目,以告知Pods它们如何相互交互。在大多数情况下,这最终导致ACL条目的n平方堆积。 Nuage平台避免了此问题,可以快速分配适用于整个Pod组的策略。 Nuage平台使用基于OVS的完全分布式状态防火墙来实施这些策略。

能够监视Kubernetes Pod之间的流量对开发团队和运营团队都非常有用。 Nuage平台的实时分析引擎可为Kubernetes应用程序提供可见性和安全监控。用户可以直观地看到Pod组之间的流量,从而轻松查看网络策略如何生效。用户还可以获得丰富的流量和策略统计信息。此外,用户可以基于策略事件阈值设置要触发的警报。

结论

即使一年多以前我们就开始与Kubernetes进行集成,但感觉我们才刚刚起步。我们一直认为这是一个真正开放的社区,我们希望成为其中不可分割的一部分。您可以在我们的网站上找到有关Kubernetes集成的更多信息 GitHub页面.

-Nuage Networks产品管理总监Harmeet Sahni