Azure Kubernetes 服务 (AKS) 中应用程序的网络概念

在基于容器的微服务应用程序开发方法中,应用程序组件会协同工作以处理其任务。 Kubernetes 提供了各种资源来促成这种合作:

  • 可以在内部或外部连接应用程序并将其公开。
  • 可以对应用程序进行负载均衡,从而生成高可用性应用程序。
  • 可以限制网络流量流入 Pod 和节点或在其间流动以提高安全性。
  • 对于更复杂的应用程序,可以配置 SSL/TLS 终止的入口流量或多个组件的路由。

本文介绍了为 AKS 中的应用程序提供网络的核心概念:

Kubernetes 网络基础知识

Kubernetes 使用虚拟网络层来管理应用程序或其组件之内和之间的访问:

  • Kubernetes 节点和虚拟网络:Kubernetes 节点连接到虚拟网络。 此设置使得 Pod(Kubernetes 中的基本部署单元)具有入站和出站连接性。

  • Kube-proxy 组件:kube-proxy 在每个节点上运行,并负责提供必要网络功能。

有关特定的 Kubernetes 功能:

  • 负载均衡器:可以使用负载均衡器跨各种资源均匀分配网络流量。
  • 入口控制器:它们辅助第 7 层路由,这对于定向应用程序流量至关重要。
  • 出口流量控制:Kubernetes 让你可以管理和控制来自群集节点的出站流量。
  • 网络策略:这些策略实现了安全措施,以及对 Pod 中的网络流量的筛选。

在 Azure 平台的上下文中:

  • Azure 简化了 AKS(Azure Kubernetes 服务)群集的虚拟网络。
  • 在 Azure 上创建 Kubernetes 负载均衡器时,会同时设置相应的 Azure 负载均衡器资源。
  • 打开对 Pod 的网络端口时,Azure 会自动配置必要的网络安全组规则。
  • 建立新的入口路由时,Azure 还会管理 HTTP 应用程序路由的外部 DNS 配置。

Azure 虚拟网络

在 AKS 中,可以部署使用以下网络模型之一的群集:

  • 覆盖网络模型:覆盖网络是 Kubernetes 中使用的最常见网络模型。 Pod 是从专用的逻辑上将 CIDR 与部署 AKS 节点的 Azure 虚拟网络子网相分离的 IP 地址。 与平面网络模型相比,此模型可实现更简单、改进的可伸缩性。
  • 平面网络模型:AKS 中的平面网络模型将 IP 地址从与 AKS 节点相同的 Azure 虚拟网络中的子网分配给 Pod。 离开群集的任何流量都不是 SNAT,Pod IP 地址直接公开到目标。 此模型对于向外部服务公开 Pod IP 地址等方案非常有用。

控制出站(出口)流量

AKS 群集部署在虚拟网络上,并且对该虚拟网络之外的服务具有出站依赖关系。 这些出站依赖关系几乎完全由完全限定的域名 (FQDN) 定义。 默认情况下,AKS 群集提供不受限制的出站(出口)Internet 访问,允许运行的节点和服务根据需要访问外部资源。 如果需要,可以限制出站流量。

有关详细信息,请参阅控制 AKS 中群集节点的出口流量

网络安全组

网络安全组筛选 VM(例如 AKS 节点)的流量。 创建服务(如 LoadBalancer)时,Azure 平台会自动配置任何必需的网络安全组规则。

无需手动配置网络安全组规则,以筛选 AKS 群集中 Pod 的流量。 你可以定义任何所需端口并将其作为 Kubernetes 服务清单的一部分进行转发,让 Azure 平台创建或更新相应的规则。

还可以使用网络策略自动向 Pod 应用流量筛选器规则。

有关详细信息,请参阅网络安全组如何筛选网络流量

网络策略

默认情况下,AKS 群集中的所有 Pod 都可以无限制地发送和接收流量。 为了提高安全性,可定义用来控制流量流的规则,如:

  • 后端应用程序只公开给所需的前端服务。
  • 数据库组件只能由与其连接的应用程序层访问。

网络策略是 AKS 中提供的一项 Kubernetes 功能,允许你控制 Pod 之间的流量流。 你可以基于分配的标签、命名空间或流量端口等设置来允许或拒绝到 Pod 的流量。 虽然网络安全组更适用于 AKS 节点,不过网络策略是一种更适合于的云原生方式,可控制 pod 的流量流。 因为 Pod 是在 AKS 群集中动态创建的,则可以动态应用所需的网络策略。

有关详细信息,请参阅在 Azure Kubernetes 服务 (AKS) 中使用网络策略保护 Pod 之间的流量

后续步骤

若要开始使用 AKS 网络,请通过 kubenetAzure CNI 创建并配置采用你自己的 IP 地址范围的 AKS 群集。

如需相关的最佳做法,请参阅 AKS 中的网络连接和安全性的最佳做法

有关核心 Kubernetes 和 AKS 概念的详细信息,请参阅以下文章: