Cloud Native Network #
容器通过云原生网络相互通信,并与基础设施层交互。分布式应用程序由多个组件组成,这些组件为了不同的目的使用网络。此类别中的工具在现有网络之上创建一个虚拟网络,专为应用程序通信设计,这种网络被称为叠加网络(Overlay Network)。
解决的问题 #
虽然通常将运行在容器中的代码称为应用程序,但实际上,大多数容器只包含一个较大应用程序中一小部分特定功能。现代应用程序(如 Netflix 或 Gmail)由许多这样的较小组件组成,每个组件都运行在独立的容器中。为了让这些独立组件协同运行,形成一个整体应用程序,容器需要彼此私密地通信。此类别的工具提供了这种私密通信网络。
容器之间传输的数据和消息可能包含敏感或私密信息。云原生网络使用软件控制、检查和修改数据流,从而更易于管理、保护和隔离容器之间的连接。在某些情况下,您可能需要扩展容器网络及其策略(如防火墙和访问规则),以允许应用程序连接到容器网络外运行的虚拟机或服务。云原生网络的可编程性以及通常的声明式特性,使这一切成为可能,同时通过配置简化操作。
提供的帮助 #
此类别中的项目和产品使用容器网络接口(Container Network Interface, CNI),这是一个 CNCF 项目,为容器化应用程序提供网络功能。一些工具(如 Flannel)相对简洁,仅提供基础连接功能。其他工具(如 NSX-T)则提供完整的软件定义网络层,为每个 Kubernetes 命名空间创建独立的虚拟网络。
最低限度,一个容器网络需要为 Pod 分配 IP 地址(Kubernetes 中运行容器化应用程序的地方),从而允许其他进程访问。
技术基础 #
此领域的多样性和创新在很大程度上得益于 CNI(类似于存储领域的容器存储接口 CSI)。CNI 标准化了网络层向 Pod 提供功能的方式。为 Kubernetes 环境选择合适的容器网络至关重要,您可以选择多种工具,例如 Weave Net、Antrea、Calico 和 Flannel,它们都提供高效的开源网络层。这些工具的功能各不相同,您的具体需求应决定最终选择。
许多供应商通过软件定义网络(SDN)工具支持并扩展 Kubernetes 网络。这些工具能够深入分析网络流量、强制实施网络策略,甚至将容器网络及其策略扩展到更广泛的数据中心。
Keywords #
- SDN - 软件定义网络
- Network Overlay - 网络叠加
- CNI - 容器网络接口