首页 > 解决方案 > 使用现有设置将 AKS 中的 pod 公开到 Internet

问题描述

我们请求将 AKS 环境中的某些 pod 公开到 Internet 以供第 3 方使用。

目前,我们有一个私有 AKS 集群,前面有一个托管的标准 SKU 负载均衡器,使用高级 azure 网络(基本上是 Calico),每个 Pod 从 Vnet IP 空间获取自己的私有 IP。当前,所有私有 IP 都通过用户定义的路由通过防火墙路由以访问 Internet,反之亦然。通过 azure 虚拟 WAN 通过 VPN 连接的本地路由之间的流量。除非 100% 必要,否则我不想更改任何现有的路由行为。

我的问题是,如何公开现有私有 AKS 群集的特定 Pod 以从 Internet 访问?整个集群不需要暴露在互联网上。我预见的问题是短暂的 Pod 和不断变化的 IP 使得防火墙中的简单 NAT 不是一种选择。我还考虑过简单地使用公共负载均衡器制作一个新的 AKS 集群。但是这里的问题是安全性,因为它仍然必须通过防火墙,并且可能可以使用现有的用户定义的路由

设置架构的推荐方法是什么,使 AKS 中的某些 Pod 可以通过 Internet 访问,同时仍允许这些 Pod 通过专用网络访问 Pod。我想避免将所有 Pod 暴露在互联网上

标签: kubernetesnamespacesazure-aks

解决方案


您可以使用几个选项来将您的应用程序公开给

在您的网络之外,例如: 服务:

  • NodePort: 在每个节点的 IP 上的静态端口 (the NodePort) 上公开服务。ClusterIP Service 路由到的 Service NodePort 是自动创建的。您可以 NodePort 通过请求从集群外部联系服务 <NodeIP>:<NodePort>

  • LoadBalancer:使用云提供商的负载均衡器在外部公开服务。 自动创建外部负载均衡器路由到的服务NodePortClusterIP

此外,还有另一个选项是使用ingressIMO,这是在外部公开 HTTP 应用程序的最佳方式,因为可以通过路径和主机创建规则,并为您提供比服务更大的灵活性。对于入口,支持 HTTP/HTTPS,如果您需要 TCP,请转到服务

我建议您查看此链接以深入了解服务和入口的工作原理:

Kubernetes 服务

Kubernetes 入口

NGINX 入口

AKS 网络概念


推荐阅读