管理和扩缩在托管式 Kubernetes 上运行的 Windows 应用的网络

Last reviewed 2024-08-14 UTC

此参考架构提供了一个高可用且可伸缩的解决方案,该解决方案使用 Cloud Service MeshEnvoy 网关来管理在 Google Kubernetes Engine (GKE) 上运行的 Windows 应用的网络流量。该文档介绍了如何使用可将流量路由到 Pod 和符合 xDS 规范的开源代理的服务来管理该网络流量。采用这样的架构有助于降低成本并改进网络管理。

本文档适用于负责设计和管理在 GKE 上运行的 Windows 应用的云架构师、网络管理员和 IT 专业人员。

下图展示了使用 Cloud Service Mesh 和 Envoy 网关为在 GKE 上运行的 Windows 应用管理网络的架构:

数据流经内部应用负载均衡器和 Envoy 网关。

该架构包括以下组件:

  • 包含 Windows 和 Linux 节点池的区域级 GKE 集群。
  • 两个 Windows 应用分别在两个单独的 GKE Pod 中运行。
  • Cloud Service Mesh 会为每个 GKE Pod 创建和管理指向 NEG 的流量路线。每条路线都会映射到特定的 scope。该 scope 用于唯一标识 Cloud Service Mesh 入站流量网关
  • 映射到 Cloud Service Mesh 后端服务的 HTTP 路由。
  • 充当 GKE 集群的 Envoy 网关的 Envoy 容器 Pod。
  • 在 Linux 节点上运行的 Envoy 网关。网关配置为通过与这些应用对应的服务将流量定向到 Windows 应用。Envoy 配置为使用 scope 参数加载相关 Cloud Service Mesh 服务的配置详情。
  • 一个内部应用负载平衡器,用于终止 SSL 流量并将所有外部传入流量定向到 Envoy 网关。

使用的产品

此参考架构使用以下 Google Cloud 和第三方产品:

Google Cloud 产品

  • Cloud Load Balancing:一组高性能、可扩缩的全球和区域级负载均衡器。
  • Google Kubernetes Engine (GKE):一种 Kubernetes 服务,可用于使用 Google 的基础架构来大规模部署和操作容器化应用。
  • Cloud Service Mesh:一套工具,可帮助您在本地或 Google Cloud 上监控和管理可靠的服务网格。

第三方产品

  • Envoy 网关:将 Envoy 代理作为独立或基于 Kubernetes 的应用网关进行管理。
  • Gateway API:一个官方 Kubernetes 项目,专注于 Kubernetes 中的 L4 和 L7 路由。

使用场景

此参考架构的主要用例是管理在 GKE 上运行的 Windows 应用的网络流量。这种架构具有以下优势:

简化网络管理:Cloud Service Mesh 和 Envoy 网关通过集中式控制平面管理应用的网络流量,从而简化网络管理。这些应用可以是运行在 GKE 或 Compute Engine 上的 Linux 或 Windows 应用。使用这种简化的网络管理方案可减少手动配置的需要。

增强的可伸缩性和可用性:为了满足不断变化的需求,请使用 Cloud Service Mesh 和 Envoy 网关扩缩 Linux 和 Windows 应用。您还可以使用 Envoy 网关,通过在多个 Pod 之间负载均衡流量来为应用提供高可用性。

增强安全性:使用 Envoy 网关为 Linux 和 Windows 应用添加安全功能,例如 SSL 终止、身份验证和速率限制。

降低成本:Cloud Service Mesh 和 Envoy 网关都可以帮助降低管理 Linux 和 Windows 应用网络流量的成本。

设计考虑事项

本部分提供的指导可帮助您开发满足特定安全性、可靠性、费用和效率要求的架构。

安全

  • 安全网络:该架构使用内部应用负载平衡器对传入到 Windows 容器的流量进行加密。传输中加密有助于防止数据泄露。
  • Windows 容器:Windows 容器有助于为容器化应用提供安全的隔离环境。

可靠性

  • 负载均衡:该架构使用多层 Cloud Load Balancing 将流量分布到 Envoy 网关和 Windows 容器。
  • 容错:此架构具有容错功能,没有单点故障。这种设计有助于确保即使一个或多个组件发生故障,它也始终可用。
  • 自动扩缩:该架构使用自动扩缩功能根据负载自动扩缩 Envoy 网关和 Windows 容器的数量。自动扩缩功能有助于确保网关和应用能够在不出现性能问题的情况下处理流量高峰。
  • 监控:该架构使用 Google Cloud Managed Service for Prometheus 和 Cloud Operations 来监控 Envoy 网关和 Windows 容器的运行状况。监控有助于您尽早发现问题,并可能防止问题干扰您的应用。

费用优化

  • 为您的工作负载选择合适的实例类型:选择实例类型时,请考虑以下因素:
    • 应用所需的 vCPU 数量和内存
    • 应用的预期流量负载
    • 用户需要高可用性应用
  • 使用自动伸缩:自动伸缩功能可自动纵向和横向伸缩 Windows 工作负载,从而帮助您节省资金。

    • 纵向伸缩会根据客户的使用情况调整容器请求和限制。

    • 横向伸缩会添加或移除 Kubernetes Pod 以满足需求。

  • 使用 Cloud Service Mesh 和 Envoy 网关:Cloud Service Mesh 和 Envoy 网关可以高效地将流量路由到 Windows 应用,从而帮助您节省开支。使用更高效的路由可以帮助您减少必须购买的带宽量。还可以帮助提升这些应用的性能。

  • 使用共享虚拟私有云 (VPC) 网络:借助共享虚拟私有云网络,您可以在多个项目中共享单个 VPC。共享可减少您需要创建和管理的 VPC 数量,从而帮助您节省开支。

运营效率

  • 使用单个内部负载均衡器的多个网域:此架构使用内部应用负载均衡器分流 SSL 流量。每个 HTTPS 目标代理都可以支持多个 SSL 证书(最多支持的上限),以便管理具有不同网域的多个应用。
  • 基础架构即代码 (IaC):如需管理基础架构,可以使用 IaC 部署架构。IaC 有助于确保基础架构一致且可重复。

部署

如需部署此架构,请参阅部署在托管式 Kubernetes 上运行的 Windows 应用

后续步骤

贡献者

作者:Eitan Eibschutz | 员工技术解决方案顾问

其他贡献者: