k8s pod https请求异常问题排查
2026-01-05/2026-01-05
k8s pod https请求异常问题排查
现象:
1、宿主机可正常请求外部 https 接口,pod 请求异常,具体体现在日志中的异常
查询谷歌,基本有两种情况
1、 jdk 版本过低,首先先替换了基础镜像的 jdk,然后重新打包,仍报错。
2、与远程服务握手时加解密协议不一致,然后在代码侧加入服务器支持协议,仍报错。
结合我们项目的实际情况,我们在k8s入口侧部署了一台 nginx,并且 ssl 证书配置在nginx 上,项目可以正常访问,那么证书的问题不存在;我们在主机直接 curl 第三方接口地址,可正常调用;再进入 pod 中,curl http 接口可以正常访问,但是 https 不行,那么初步判断是 pod dns 解析异常。
CoreDns
1、我们知道,Kubernetes 使用 CoreDNS(或其他 DNS 插件)作为集群的 DNS 服务,为 Pod 提供服务发现和域名解析功能。
- CoreDNS 是 Kubernetes 的默认 DNS 服务,以 Pod 的形式运行在集群中。
kubectl get svc -n kube-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kube-dns ClusterIP 10.96.0.10 <none> 53/UDP 45d
每个 Pod 的网络配置中会自动配置 Kubernetes 的 DNS 服务:
- /etc/resolv.conf 中包含指向 kube-dns 的 ClusterIP 地址,例如:
nameserver 10.96.0.10
search default.svc.cluster.local svc.cluster.local cluster.local
options ndots:5
- 这意味着所有的域名解析请求都会被发送到 CoreDNS。
2、DNS 查询流程
当 Pod 内的应用尝试访问一个域名(例如 my-service.default.svc.cluster.local):
1. Pod 的 DNS 客户端会将查询请求发送到 CoreDNS。
2. CoreDNS 根据预配置规则(ConfigMap)解析请求。
3. 如果是 Kubernetes 内部服务,会直接返回相应的 ClusterIP。
4. 如果是外部域名(例如 google.com),CoreDNS 会将请求转发到上游 DNS 服务器。
再来查看我们的CoreDns配置

在转发这一行配置可以看到,是根据 ./etc/resolv.conf 来转发的,
再来看这个配置文件

有一行 search global 令我们感到疑惑
于是我们再去看解析日志

可以看到查找到了 域名.global,导致了超时
于是我们注释掉了#search global这一行
重启服务后可以正常访问了,看来是运维人员配置的该文件存在错误,小小的一点错误排查了接近了两天…
标题:k8s pod https请求异常问题排查
作者:buguniao
地址:https://thunderdemon.cn/articles/2026/01/05/1767600775371.html