背景:
自建 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 解析
[
](https://my.oschina.net/u/2322…