我们已经使用 KrakenD 配置了 Apigw,并在 Kubernetes 环境 (AWS EKS) 中的同一命名空间中使用 fastapi 部署了带有 Python 应用程序的后端服务器。到目前为止,我们已经成功验证了所有内容,但在使用 Locust 进行负载测试时遇到了 DNS 错误。当 RPS 约为 5000 时会出现问题。
2024/03/31 - 13:45:52.643 [ERROR] [ENDPOINT: /route] Get “http://cal.ns-cal.svc.cluster.local:8080/route”: dial tcp: lookup cal.ns-cal.svc.cluster.local: Try again 2024/03/31 - 13:45:52.643 [ERROR] [ENDPOINT: /list] Get “http://cal.ns-cal.svc.cluster.local:8080/list”: dial tcp: lookup cal.ns-cal.svc.cluster.local: Try again
我检查了 CoreDNS 指标,但除了轻微的负载外,似乎没有任何问题。
运行 Dig 命令时,我收到以下输出:
/etc/krakend # dig SRV cal.ns-cal.svc.cluster.local
; <<>> DiG 9.18.24 <<>> SRV cal.ns-cal.svc.cluster.local
;; global options: +cmd
;; Got answer:
;; WARNING: .local is reserved for Multicast DNS
;; You are currently testing what happens when an mDNS query is leaked to DNS
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50654
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 2
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 9e4e7820c3deb5a5 (echoed)
;; QUESTION SECTION:
;cal.ns-cal.svc.cluster.local. IN SRV
;; ANSWER SECTION:
cal.ns-cal.svc.cluster.local. 5 IN SRV 0 100 8080 cal.ns-cal.svc.cluster.local.
;; ADDITIONAL SECTION:
cal.ns-cal.svc.cluster.local. 5 IN A 172.20.9.168
;; Query time: 0 msec
;; SERVER: 172.20.0.10#53(172.20.0.10) (UDP)
;; WHEN: Mon Apr 01 02:22:25 UTC 2024
;; MSG SIZE rcvd: 189
为了全面起见,我还分享了 resolv.conf 文件的内容:
/etc/krakend # cat /etc/resolv.conf
search ns-cal.svc.cluster.local svc.cluster.local cluster.local ap-northeast-2.compute.internal
nameserver 172.20.0.10
options ndots:5
此外,我检查了 /etc/nsswitch.conf 文件以检查 mDNS,它似乎配置如下,并且基于此配置,它似乎不像是 mDNS 问题。
/etc/nsswitch.conf:
hosts: files dns
我们还应该调查哪些方面?
我想了解DNS解析失败的原因。