k8s中nginx域名无动态解析(error 502 网关错误问题)及启动失败问题

问题症状

Nginx的错误日志里:no resolver defined to resolve example.com

就是提示你没有定义resolver指令,Nginx就这样,它不理会系统的DNS(/etc/resolv.conf)配置, 如果你在配置文件中使用了域名或主机名,一定要配置resolver指令。

1 临时修改

查看 pod 的 dns 配置

kubectl exec -it <pod name> --  cat /etc/resolv.conf
search default.svc.cluster.local svc.cluster.local cluster.local home
nameserver 10.96.0.10
options ndots:5

nginx 里 指定 nameserver IP

http {
    server {
        resolver 10.96.0.10 valid=10s;

2 永久,指定全限定域名(FQDN)

resolver kube-dns.kube-system.svc.cluster.local valid=5s;

location /app {
  proxy_pass http://webapp.default.svc.cluster.local;
  # proxy_pass http://svc-xman-baseline-fe-insight.xman.svc.cluster.local:8080 加端口的
}
# note default and kube-system explicit namespaces)
# webapp is Kuberentes service name

3 ship

pop名称 xcsc-xcommon-web-gateway-m7v8v-59fbbbbcd-bhk9q

负载均衡 域名 xcsc-xcommon-web-gateway.dev.test.za-tech.net 端口9006

服务地址 svc-xcsc-xcommon-web-gateway.dev:9006

location /app {
   proxy_pass http://xcsc-xcommon-gateway.dev.test.za-tech.net;
}

## ship 中 基础镜像 nginx 版本下加入 resolver,才可以解析 域名
http{
  resolver local=on valid=5s;
}
如果ship 没有域名解析,用svc 地址
http://xcsc-xcommon-gateway.dev.svc.cluster.local:8080

Leave a Reply

Your email address will not be published. Required fields are marked *