k8s中
一个应用的pod内调用外部接口失败,报错的原因就是unknown host
,最开始我以为是外部应用没在一个网段的问题,但是直接通过服务器却可以访问的。当时pod使用的是默认的DNS策略,即ClusterFirst
,ndots
也是默认值,即5。问题出现了。我请求的域名是www.abc.com/api
,域名只有2个点,所以会和search
域的域名进行组合,结果当然无法解析。考虑到我们的pod访问都是在同一namespace
下,即使跨namespace
,我们也是通过servicename.namespace
进行访问的,所以最终选择将ndots
改为2。修改应用的Deployment yaml
文件,修改如下:
dnsConfig:
options:
- name: ndots
value: "2"
修改完成之后重新部署项目,测试解决。