![如何在私有 AKS 集群中公开服务?](https://linux22.com/image/772189/%E5%A6%82%E4%BD%95%E5%9C%A8%E7%A7%81%E6%9C%89%20AKS%20%E9%9B%86%E7%BE%A4%E4%B8%AD%E5%85%AC%E5%BC%80%E6%9C%8D%E5%8A%A1%EF%BC%9F.png)
我在 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,它们的配置略有不同。