本文已超过一年。较旧的文章可能包含过时内容。请检查页面中的信息自发布以来是否已失效。
使用基于策略的网络扩展 Kubernetes 部署
尽管 Kubernetes 1.0 发布只有短短 18 个月,但我们看到 Kubernetes 已成为部署分布式应用的主流容器编排平台。其中一个主要原因是其周围蓬勃发展的开源社区。Kubernetes 贡献者人数众多,来自不同背景,这确保了我们以及用户社区正在投资于一个开放平台。像 Google (Container Engine)、Red Hat (OpenShift) 和 CoreOS (Tectonic) 这样的公司正在基于 Kubernetes 开发自己的商业产品。这是一件好事,因为它将带来更多标准化,并为用户提供选择。
Kubernetes 应用的网络需求
对于在 Kubernetes 上部署应用的公司来说,最大的问题之一是如何大规模部署和编排容器。他们意识到底层基础设施,包括网络和存储,需要支持分布式应用。软件定义网络 (SDN) 非常适合此类应用,因为网络基础设施的灵活性和敏捷性可以与应用本身相匹配。此类应用的组网需求包括:
- 网络自动化
- 分布式负载均衡和服务发现
- 具有细粒度策略的分布式安全
- QoS 策略
- 可伸缩的实时监控
- 跨容器、VM 和裸金属服务器部署服务的混合应用环境
- 服务插入(例如防火墙)
- 支持私有云和公有云部署
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 环境(VM 和裸金属服务器)之间提供无缝的基于策略的网络。每个 Pod 从属于一个 Namespace 的网络中获得一个 IP 地址,并且该 IP 地址不与 Kubernetes 节点绑定。
随着云应用使用微服务构建,控制这些微服务之间流量的能力成为基本要求。值得指出的是,这些网络策略还需要控制进出外部网络和服务的流量。Nuage 的策略抽象模型使得声明应用的细粒度入站/出站策略变得容易。Kubernetes 有一个 Beta 网络策略 API,使用 Kubernetes 扩展 API 实现。Nuage 实现此网络策略 API 以解决各种策略用例,例如:
- Kubernetes Namespace 隔离
- Namespace 间策略
- 相同或不同 Namespace 中 Pod 组之间的策略(策略组)
- Kubernetes Pod/Namespace 与外部网络/服务之间的策略
用户需要考虑的一个关键问题是策略实现的可伸缩性。一些网络设置需要创建访问控制列表 (ACL) 条目,告诉 Pod 它们如何相互交互。在大多数情况下,这最终会导致 ACL 条目的 N 方爆炸式增长。Nuage 平台避免了这个问题,并且可以快速分配应用于整个 Pod 组的策略。Nuage 平台使用基于 OVS 的完全分布式有状态防火墙实现这些策略。
能够监控 Kubernetes Pod 之间流动的流量对于开发团队和运维团队都非常有用。Nuage 平台的实时分析引擎为 Kubernetes 应用提供可见性和安全监控。用户可以获得 Pod 组之间流量流动的可视化表示,从而轻松查看网络策略如何生效。用户还可以获得丰富的流量和策略统计信息。此外,用户可以设置基于策略事件阈值触发的警报。
结论
尽管我们在一年多前就开始与 Kubernetes 进行集成,但感觉我们才刚刚开始。我们一直觉得这是一个真正开放的社区,我们希望成为其中不可或缺的一部分。您可以在我们的 GitHub 页面上找到有关我们与 Kubernetes 集成的更多信息。