You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过FQDN访问Terraform创建的AKS集群及异常问题排查

问题根因
  • CoreDNS是Kubernetes集群内部的DNS解析组件,默认仅暴露集群内部访问端点,kubectl cluster-info返回的CoreDNS地址为集群内部Service IP/内部域名,本身不支持集群外(包括本地浏览器)直接访问。
  • 你提供的Terraform配置存在两处错误影响解析能力:
    1. default_node_pool块中max_count = var.存在语法错误,变量引用不完整,会导致节点池自动扩缩容配置不生效,严重时会影响集群组件正常运行。
    2. 你创建了abhi.io私有DNS Zone,但未和AKS集群所在的虚拟网络绑定,也未在AKS配置中关联该私有DNS Zone,集群相关域名不会自动同步到该私有域解析,且私有DNS Zone本身仅支持关联虚拟网络内部的资源解析,公网环境无法解析该域下的记录。
  • AKS的API服务器默认需要身份认证,直接在浏览器中访问API服务器FQDN时,请求未携带Kubernetes认证信息,会直接返回权限类错误。
正确操作步骤

1. 验证CoreDNS运行状态

不需要通过浏览器访问,在集群内部运行测试Pod即可验证CoreDNS功能正常:

kubectl run -it --rm --image=busybox:1.28 dns-test -- nslookup kubernetes.default

如果返回正常的解析记录,说明CoreDNS工作无异常。

2. 修正Terraform配置

首先补全节点池的配置错误,将max_count = var.修改为max_count = var.max_count,并在variables定义中补充对应的max_count变量。
如果需要使用私有DNS解析AKS集群端点,需要在AKS资源配置中添加私有DNS关联,并配置虚拟网络链接:

resource "azurerm_kubernetes_cluster" "cluster" {
  # 原有配置保持不变
  private_dns_zone_id = azurerm_private_dns_zone.ahasa-private.id
}

# 新增私有DNS Zone和AKS虚拟网络的绑定
resource "azurerm_private_dns_zone_virtual_network_link" "aks_link" {
  name                  = "aks-vnet-link"
  resource_group_name   = azurerm_resource_group.rg.name
  private_dns_zone_name = azurerm_private_dns_zone.ahasa-private.name
  virtual_network_id    = azurerm_kubernetes_cluster.cluster.network_profile[0].vnet_subnet_id
  registration_enabled  = false
}

3. 访问AKS集群FQDN

公网访问场景

执行如下命令获取AKS API服务器的公网FQDN:

az aks show -g <替换为你的资源组名称> -n <替换为你的集群名称> --query fqdn -o tsv

该FQDN仅支持通过kubectl、Kubernetes客户端SDK等携带认证信息的方式访问,不可直接通过浏览器访问。

私有网络访问场景

完成上述Terraform私有DNS配置后,在和私有DNS Zone绑定的虚拟网络内部,即可通过私有域名访问AKS集群端点。


内容的提问来源于stack exchange,提问作者Mands

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 22:27:04