如何在私有 AKS 集群中公开服务?

如何在私有 AKS 集群中公开服务?

我在 AKS 上创建了一个私有集群并向其中部署了一些工作负载,但我不知道如何连接到这些服务。它们都是 NodePort 服务,包括 TCP 和 UDP。

最初,我认为 AKS 提供的端点可用于与整个集群进行交互,但事实并非如此——它仅公开了 Kubernetes API(可能这就是他们称之为 API 端点的原因)

我也尝试使用 VMSS 公共 IP,但也没有用。使用实例 IP 可以,但 IP 会随着时间而改变,对吗?

最终我决定使用入口控制器并代理流量,但因为我使用的是混合协议,所以我需要两个。更不用说这似乎太复杂了,不是解决这个问题的合理方法。

如何在私有 AKS 集群上公开服务?我认为这应该是一个非常常见的问题,但我还没有找到明确的解决方案

答案1

如果有人遇到这种情况,我们最终会使用 ExternalDNS 和私有区域,因为我们无论如何都在使用 NodePorts。

这为我们提供了一个稳定的端点,如果其中一个节点的 IP 发生变化,它将自动更新。

需要注意的是文档意味着不需要对订阅进行角色分配(默认情况下,create-for-rbac 会将Contributor订阅授予服务主体,--跳过分配避免)但这对我来说不起作用,ExternalDNS在尝试读取私有区域时被拒绝权限。

我尝试了一些不同的组合,但最终放弃了Private DNS Zone Contributor订阅并跳过了对区域和资源组的任何分配。

还要指出一个问题,Azure 有两个提供商,一个azure用于公共 DNS,一个azure-private-dns用于私有 DNS,它们的配置略有不同。

相关内容