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

AKS中自定义dnsPolicy的Locust Slave Pod无法连接Master Pod

问题根因

你配置自定义DNS后slave连不上master是两个配置错误共同导致的,master不需要修改自定义DNS策略,保持默认配置即可:

  • 当Pod的dnsPolicy设为None时,Kubernetes不会给Pod自动注入集群内部的DNS配置,你当前dnsConfig.nameservers里只配置了外部DNS地址,没有添加AKS集群内部CoreDNS(即kube-dns服务)的集群IP,Pod根本无法向集群DNS发起内部域名解析请求,自然找不到master服务。
  • 你将dnsConfig.options里的ndots值设为了0,这个配置会让Pod直接把所有域名当作绝对根域名查询,不会拼接你配置的searches搜索域后缀。你slave启动参数里填的master地址是短域名master,正常默认ndots为5时,系统会依次拼接locust-xxxx.svc.cluster.local等搜索域查找内部服务,ndots设为0时会直接查询公网根域的master记录,外部DNS不可能返回你集群内部服务的解析结果。
修复步骤
  1. 先查询当前AKS集群的内部CoreDNS服务IP,执行以下命令获取:
kubectl get svc kube-dns -n kube-system -o jsonpath='{.spec.clusterIP}'

AKS默认的CoreDNS集群IP一般为10.0.0.10,以实际查询结果为准。

  1. 修改slave Deployment的DNS配置段,调整为如下内容(其余配置保持不变):
dnsPolicy: "None"
dnsConfig:
  nameservers:
    # 第一步查到的CoreDNS集群IP放在最前面,优先解析内部域名
    - <替换为实际查询到的CoreDNS IP>
    - xx.xx.xx.xx # 原有外部DNS1
    - xx.xx.xx.xx # 原有外部DNS2
  searches:
    - xxxxxx # 原有自定义搜索域
    - locust-xxxx.svc.cluster.local 
    - svc.cluster.local 
    - cluster.local
    - xxxxxxxxxxxxxx.jx.internal.cloudapp.net
  options:
    - name: ndots
      value: "5" # 改回K8s默认值,保证短域名会拼接搜索域查询
  1. 重新应用slave Deployment配置,等待Pod重建完成后验证:
    进入任意slave Pod执行nslookup master,如果能返回master Service对应的集群IP,就说明内部解析正常,Locust worker会自动连接master,同时外部服务的解析会走你配置的外部DNS,不影响压测业务访问集群外服务。

不需要给master Pod配置相同的自定义dnsPolicy,master保持默认的ClusterFirst dnsPolicy即可正常工作,之前给master配置自定义DNS后仍然连通失败,也是因为上述两个配置错误没有修复。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 16:18:19