kubernetes - 使用现有设置将 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 暴露在互联网上
解决方案
您可以使用几个选项来将您的应用程序公开给
在您的网络之外,例如: 服务:
NodePort
: 在每个节点的 IP 上的静态端口 (theNodePort
) 上公开服务。ClusterIP
Service 路由到的 ServiceNodePort
是自动创建的。您可以NodePort
通过请求从集群外部联系服务<NodeIP>:<NodePort>
。
LoadBalancer
:使用云提供商的负载均衡器在外部公开服务。 自动创建外部负载均衡器路由到的服务NodePort
。ClusterIP
此外,还有另一个选项是使用ingress
IMO,这是在外部公开 HTTP 应用程序的最佳方式,因为可以通过路径和主机创建规则,并为您提供比服务更大的灵活性。对于入口,仅支持 HTTP/HTTPS,如果您需要 TCP,请转到服务
我建议您查看此链接以深入了解服务和入口的工作原理:
推荐阅读
- reactjs - 如何在没有组件的情况下导入 Mobx 状态树并在 Typescript 文件中引用其值?
- seaborn - 如何使用seaborn打破y轴?
- c# - 使用文本框创建 Google 搜索
- python - 无法使用 mtcnn mehtod 处理一些图像进行人脸检测,使用 mxnet 和 python 实现
- npm - 如果我取消我的 npm 订阅,我的 npm 私人包会怎样?
- google-analytics - 谷歌分析跟踪用户登录时间和注销时间
- python-3.x - 针对特定值过滤 DataFrame
- php - 在 php 文件中将代码从 mysql 更改为 mssql
- ruby-on-rails - 验证用户不能两次选择相同角色的下拉列表
- docker - 'vc_redist.x64 未安装在 microsoft/nanoserver 映像中