侧边栏壁纸
博主头像
路小飞博主等级

行动起来,活在当下

  • 累计撰写 72 篇文章
  • 累计创建 12 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

腾讯云TKE和COS内网调用冲突

路小飞
2025-12-11 / 0 评论 / 0 点赞 / 1 阅读 / 2619 字

一、故障背景

环境配置:Kubernetes(K8s)集群使用CoreDNS作为DNS解析服务,默认未启用IPv6解析功能;
资源特性:腾讯云COS(对象存储)的内网IPv4地址为169.254.0.49网段(该网段属于APIPA自动专用IP地址段,常规环境下被判定为无路由的“无效地址”);
故障现象:应用访问COS内网域名时,日志频繁抛出ENOTFOUND错误,影响业务正常访问。

二、故障表现

日志中出现 ENOTFOUND 字样

三、故障触发链路(流程图解)

1 解析顺序
应用发起COS域名解析
→ 调用操作系统底层`getaddrinfo()`函数
→ 优先解析IPv6(AAAA记录)
→ CoreDNS默认配置返回`NXDOMAIN`,解析判断失败
→ 降级解析IPv4(A记录)
→ CoreDNS返回COS内网地址169.254.0.49
→ 系统校验地址有效性 
→ 169.254.0.49为无路由的无效地址
→ `getaddrinfo()`返回底层错误`EAI_NONAME`
→ 应用层网络库将错误映射为`ENOTFOUND`日志输出
2 关键判定
  • 若 IPv6 解析失败(如返回 NXDOMAIN),且 IPv4 解析返回有效可路由地址
    → 函数返回成功,应用用 IPv4 通信,无 ENOTFOUND;

  • 若 IPv6 解析失败,且 IPv4 解析返回无效地址(如 169.254.0.49)
    → 函数判定 “无可用地址”,返回 EAI_NONAME(对应应用层的 ENOTFOUND);

3 关键配置
# Coredns配置
.:53 {
    errors
    health {
        lameduck 30s
    }
    kubernetes cluster.local. in-addr.arpa ip6.arpa {
        pods insecure
        fallthrough in-addr.arpa ip6.arpa
    }
    hosts {
        1.1.1.1 baidu.com
        fallthrough
    }
    prometheus :9153
    template ANY HINFO . {
        rcode NXDOMAIN
    }
    template ANY AAAA {
        rcode NXDOMAIN
    }
    forward . 183.60.83.19 183.60.82.98 {
        prefer_udp
    }
    cache 30
    reload
    loadbalance
    ready
}

四、问题解决

删除 CoreDNS 对 IPV6 解析的特性化配置

# Coredns配置
.:53 {
    errors
    health {
        lameduck 30s
    }
    kubernetes cluster.local. in-addr.arpa ip6.arpa {
        pods insecure
        fallthrough in-addr.arpa ip6.arpa
    }
    hosts {
        1.1.1.1 baidu.com
        172.19.0.15 yach-doc-shimo-test.zhiyinlou.com
        fallthrough
    }
    prometheus :9153
    template ANY HINFO . {
        rcode NXDOMAIN
    }

template ANY AAAA {

rcode NXDOMAIN

}

    forward . 183.60.83.19 183.60.82.98 {
        prefer_udp
    }
    cache 30
    reload
    loadbalance
    ready
}
0

评论区