本文发布已超过一年。较旧的文章可能包含过时的内容。请检查页面上的信息自发布以来是否已不正确。
使用基于策略的网络扩展 Kubernetes 部署
尽管 Kubernetes 1.0 发布至今仅十八个月,但我们已经看到 Kubernetes 崛起为部署分布式应用程序的领先容器编排平台。 其中一个最大的原因是围绕它形成的充满活力的开源社区。 大量 Kubernetes 贡献者来自不同的背景,这意味着我们和用户社区可以确信我们正在投资一个开放的平台。 像 Google (Container Engine)、Red Hat (OpenShift) 和 CoreOS (Tectonic) 这样的公司正在基于 Kubernetes 开发他们自己的商业产品。 这是一件好事,因为它将导致更多的标准化并为用户提供选择。
Kubernetes 应用程序的网络需求
对于在 Kubernetes 上部署应用程序的公司来说,最大的问题之一是如何大规模部署和编排容器。 他们意识到包括网络和存储在内的底层基础设施需要支持分布式应用程序。 软件定义网络 (SDN) 非常适合此类应用程序,因为网络基础设施的灵活性和敏捷性可以与应用程序本身相匹配。 此类应用程序的网络需求包括
- 网络自动化
- 分布式负载平衡和服务发现
- 具有精细策略的分布式安全
- QoS 策略
- 可扩展的实时监控
- 服务分布在容器、虚拟机和裸金属服务器上的混合应用程序环境
- 服务插入(例如,防火墙)
- 支持私有云和公有云部署
Kubernetes 网络
Kubernetes 通过 API 提供一组核心平台服务。 可以通过扩展 API、插件和标签以多种方式扩展平台。 这使得可以为 Kubernetes 开发各种集成和工具。 Kubernetes 认识到每个部署中的网络将是独一无二的。 Kubernetes 没有尝试让核心系统处理所有这些用例,而是选择使网络可插拔。
通过 Nuage Networks,我们提供了一个可扩展的基于策略的 SDN 平台。 该平台由网络策略引擎管理,该引擎抽象了与配置系统相关的复杂性。 有一个单独的 SDN 控制器,它带有非常丰富的路由功能集,并且设计为可以水平扩展。 Nuage 使用开源的 Open vSwitch (OVS) 作为数据平面,并在 OVS 用户空间中进行了一些增强。 与 Kubernetes 一样,Nuage 也将开放性作为其平台的核心原则。 Nuage 提供开放的 API,允许用户编排其网络并集成网络服务,如防火墙、负载均衡器、IPAM 工具等。Nuage 支持各种云平台,如 OpenStack 和 VMware,以及 Kubernetes 等容器平台。
Nuage 平台实现了一个 Kubernetes 网络插件,该插件创建 VXLAN 覆盖网络,以在 Kubernetes Pod 和非 Kubernetes 环境(虚拟机和裸金属服务器)之间提供无缝的基于策略的网络。 每个 Pod 都从属于 命名空间的网络中获取一个 IP 地址,并且不绑定到 Kubernetes 节点。
由于云应用程序是使用微服务构建的,因此控制这些微服务之间的流量的能力是一项基本要求。 重要的是要指出,这些网络策略还需要控制进出外部网络和服务的流量。 Nuage 的策略抽象模型可以轻松声明应用程序的精细入口/出口策略。 Kubernetes 有一个使用 Kubernetes 扩展 API 实现的 beta 版 网络策略 API。 Nuage 实现了此网络策略 API,以解决各种策略用例,例如
- Kubernetes 命名空间隔离
- 跨命名空间策略
- 同一或不同命名空间中 Pod 的 Pod 组(策略组)之间的策略
- Kubernetes Pod/命名空间与外部网络/服务之间的策略
用户要考虑的关键问题是策略实现的可扩展性。 一些网络设置需要创建访问控制列表 (ACL) 条目,告诉 Pod 它们如何相互交互。 在大多数情况下,这最终会导致 ACL 条目呈 n 平方堆积。 Nuage 平台避免了这个问题,并且可以快速分配适用于整个 Pod 组的策略。 Nuage 平台使用基于 OVS 的完全分布式有状态防火墙来实现这些策略。
能够监控 Kubernetes Pod 之间流动的流量对于开发和运营团队都非常有用。 Nuage 平台的实时分析引擎实现了 Kubernetes 应用程序的可见性和安全监控。 用户可以获得 Pod 组之间流量的可视化表示,从而轻松查看网络策略如何生效。 用户还可以获得丰富的流量和策略统计信息。 此外,用户可以设置基于策略事件阈值触发的警报。
结论
尽管我们在一年前就开始与 Kubernetes 集成,但感觉我们才刚刚开始。 我们一直认为这是一个真正开放的社区,我们希望成为其中的重要组成部分。 您可以在我们的 GitHub 页面上找到有关我们 Kubernetes 集成的更多信息。