<>环境:

k8s+docker

<>问题描述:

由于pod生命周期问题,或程序问题引起,pod重启,或删除后重新被deployment拉起以后,pod本身ip发生改变,nginx代理到前端,或者后端的service名称无法正常解析到新的pod
ip。

<>dns解析原理

这是nginx本身域名解析存在问题,由于只有在通过nginx第一次向proxy_pass后端对应的域名做代理数据转发时,这里nginx会通过操作系统配置的DNS服务器解析域名,此时才会缓存域名对应的IP,且会缓存很长时间,甚至一个月,由此导致pod重启后,不会重新解析到新的ip而导致nginx返回504的原因
<>解析图如下:

<>变更nginx配置遇到的坑

官网文档给了一个nginx自定dns服务器的配置:
resolver kube-dns.kube-system.svc.cluster.local valid=5s;
resolver_timeout 3s;
第一行:即重新指定DNS服务器, valid控制dns缓存时间,覆盖ttl值
第二行:控制域名解析超时时间。
我将这两行配置写入配置文件后,根据解析原理来说,nginx会先找系统本身的dns服务器去做对应,解析,而

技术
下载桌面版
GitHub
Gitee
SourceForge
百度网盘(提取码:draw)
云服务器优惠
华为云优惠券
腾讯云优惠券
阿里云优惠券
Vultr优惠券
站点信息
问题反馈
邮箱:[email protected]
吐槽一下
QQ群:766591547
关注微信