k8s中

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

  1. dnsConfig:
  2. options:
  3. - name: ndots
  4. value: "2"

修改完成之后重新部署项目,测试解决。