Kubernetes中域名解析的异常问题分析
Posted saynaihe
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kubernetes中域名解析的异常问题分析相关的知识,希望对你有一定的参考价值。
背景:
自建kubernetes1.16集群,服务应用早期多为php应用。docker封装nginx+php-fpm基础镜像,将代码打包成image jenkins进行ci/cd构建。
php应用中出现大量域名解析失败的报错…what?开始怀疑过kubernets版本问题,也怀疑过网络组件。但是未能找到原因。今天正好百度搜索资料时候偶然看到:https://www.it1352.com/589254.html,看到他上面解决的curl调取花费时间过长的时候curl指定了CURL_IPRESOLVE_V4。就顺便想了下…是了。我的集群没有禁用ipv6!划重点了:
如果开启了IPv6,curl默认会优先解析 IPv6,在对应域名没有 IPv6 的情况下,会等待 IPv6 dns解析失败 timeout 之后才按以前的正常流程去找 IPv4
关于解决方案:
自己简单想一想也有两种解决方式:
- work节点禁用ipv6.
- php代码指定CURL_IPRESOLVE_V4。
入手解决:
1.关于work节点禁用ipv6
参照:https://blog.csdn.net/wh211212/article/details/80996364
我是直接sysctl设置禁用IPv6的方式了,不想重启集群节点!
在/etc/sysctl.conf中添加以下行
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
# 或者执行
sed -i '$ a\\net.ipv6.conf.all.disable_ipv6 = 1\\nnet.ipv6.conf.default.disable_ipv6 = 1' /etc/sysctl.conf
要使设置生效,请执行
sysctl -p
2. 关于php代码的修改
参照:https://www.jb51.net/article/39788.htm,直接扔给php小伙伴了…毕竟我也不会php。
其他可以参考的:
1. k8s – coredns禁用ipv6解析
2. 容器中使用nscd缓存优化 DNS 解析
以上是关于Kubernetes中域名解析的异常问题分析的主要内容,如果未能解决你的问题,请参考以下文章