本文发表于一年多前。旧文章可能包含过时内容。请检查页面中的信息自发布以来是否已变得不正确。
使用基于策略的网络扩展 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 Pods 和非 Kubernetes 环境(虚拟机和裸金属服务器)之间提供无缝的基于策略的网络。每个 Pod 都从属于 命名空间 且不与 Kubernetes 节点绑定的网络中获得一个 IP 地址。
随着云应用程序采用微服务构建,控制这些微服务之间的流量成为一项基本要求。重要的是要指出,这些网络策略还需要控制进出外部网络和服务的流量。Nuage 的策略抽象模型使得为应用程序声明细粒度的入站/出站策略变得容易。Kubernetes 有一个使用 Kubernetes 扩展 API 实现的测试版 网络策略 API。Nuage 实现了这个网络策略 API,以解决各种策略用例,例如:
- Kubernetes 命名空间隔离
- 命名空间间策略
- 针对同一或不同命名空间中的 Pod 组(策略组)的策略
- Kubernetes Pods/命名空间与外部网络/服务之间的策略
用户需要考虑的一个关键问题是策略实现的伸缩性。有些网络设置需要创建访问控制列表(ACL)条目,告诉 Pods 如何相互交互。在大多数情况下,这最终会导致 ACL 条目呈 n 平方堆积。Nuage 平台避免了这个问题,可以快速分配适用于整个 Pod 组的策略。Nuage 平台使用基于 OVS 的完全分布式有状态防火墙来实现这些策略。
能够监控 Kubernetes Pods 之间流动的流量对开发和运维团队都非常有用。Nuage 平台的实时分析引擎为 Kubernetes 应用程序提供可见性和安全监控。用户可以获得 Pods 组之间流量流动的可视化表示,从而轻松查看网络策略如何生效。用户还可以获得丰富的流量和策略统计数据。此外,用户可以设置基于策略事件阈值触发的警报。
结论
尽管我们一年多前就开始了与 Kubernetes 的集成工作,但感觉我们才刚刚开始。我们一直认为这是一个真正开放的社区,我们希望成为其中不可或缺的一部分。您可以在我们的 GitHub 页面上找到更多关于我们 Kubernetes 集成的信息。