我在 AKS 上创建了一个专用集群并向其部署了一些工作负载,但我不确定如何连接到这些服务。它们都是 NodePort 服务,包括 TCP 和 UDP。
最初,我认为 AKS 提供的端点可用于与整个集群进行交互,但事实并非如此——这只公开了 Kubernetes API(可能是他们将其称为 API 端点的原因)
我也尝试过使用 VMSS 公共 IP,但也没有用。使用实例 IP 是可行的,但 IP 会随着时间而改变,对吧?
最终我决定使用入口控制器并代理流量,但因为我使用的是混合协议,所以我需要两个。更不用说这似乎太复杂而无法合理解决这个问题。
如何在专用 AKS 群集上公开服务?我认为这应该是一个很常见的问题,但我还没有找到明确的解决方案
如果有人发现自己处于这种情况,我们最终会使用 ExternalDNS 和私有区域,因为无论如何我们都在使用 NodePorts。
这为我们提供了一个稳定的端点,如果其中一个节点的 IP 发生变化,它将自动更新。
需要注意的是,文档暗示不需要对订阅进行角色分配(默认情况下,create-for-rbac
Contributor
对服务主体的订阅授予--skip-assignment避免)但这对我不起作用, ExternalDNS 在尝试读取私有区域时被拒绝。我尝试了一些不同的组合,但最终放弃
Private DNS Zone Contributor
了订阅并跳过了对区域和资源组的任何分配。还想指出一个问题,Azure 有两个提供商,
azure
公共 DNS 和azure-private-dns
私有 DNS,它们在配置上略有不同。