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

Kubernetes与Docker Compose间DNS一致性问题求助

实现Docker Compose与Kubernetes下Apache Traffic Server DNS解析一致性

问题根源

Docker Compose和Kubernetes的DNS解析逻辑存在核心差异:

  • 在Docker Compose中,服务名(比如web)是直接可解析的短域名,容器默认的DNS搜索域不会干扰短域名的解析。
  • 在Kubernetes中,服务的完整域名(FQDN)格式是服务名.命名空间.svc.cluster.local,短域名web能被解析是因为K8s默认的DNS搜索域包含了当前命名空间的域。

你之前修改的proxy.config.dns.search_default_domains INT 1让TS自动搜索默认DNS域,这在K8s中能自动补全web的后缀,但在Docker Compose中,TS会去搜索主机默认的DNS域,反而找不到web这个短域名。

理想解决方案:对齐两边的DNS搜索域

我们可以给Docker Compose配置与Kubernetes一致的DNS搜索域,这样TS的配置可以完全统一,不用根据环境切换。

步骤1:统一Apache Traffic Server配置

保持proxy.config.dns.search_default_domains INT 1的配置不变,让TS在两个环境下都自动搜索默认DNS域。

步骤2:给Docker Compose配置自定义DNS搜索域

你有两种灵活的配置方式:

方式1:给单个服务添加DNS搜索域

在docker-compose.yml中,给web服务和运行TS的服务添加dns_search字段:

services:
  web:
    image: webimage
    command: run start
    build:
      context: ./web
      dockerfile: Dockerfile
    dns_search: default.svc.cluster.local

  # 假设你的Apache Traffic Server服务名为traffic-server
  traffic-server:
    image: your-traffic-server-image
    dns_search: default.svc.cluster.local
    # 其他端口、挂载等配置...
方式2:给整个Docker网络配置默认DNS搜索域

如果所有服务都需要这个配置,可以直接给默认网络设置,避免重复配置:

version: '3.8'
services:
  web:
    image: webimage
    command: run start
    build:
      context: ./web
      dockerfile: Dockerfile
  traffic-server:
    image: your-traffic-server-image
    # 其他配置...
networks:
  default:
    dns_search: default.svc.cluster.local

为什么这样有效?

  • 在Kubernetes中,web的FQDN是web.default.svc.cluster.local,TS开启搜索默认域后,会自动补全后缀完成解析。
  • 在Docker Compose中,我们手动设置了DNS搜索域为default.svc.cluster.local,TS解析web时会尝试web.default.svc.cluster.local,而Docker Compose的内部DNS会识别这个带后缀的域名,正确指向web服务;同时短域名web本身依然可以直接解析,不会影响原有逻辑。

验证方法

启动服务后,进入TS容器执行以下命令,确保两种域名都能正常解析:

nslookup web
nslookup web.default.svc.cluster.local

两边环境下都能返回web服务的IP,就说明配置生效了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:15:11