关于kubernetes: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

对于解决方案:

本人简略想一想也有两种解决形式:

  1. work节点禁用ipv6.
  2. 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…

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理