php报错为:php_network_getaddresses:getaddrinfo failed

问题可能出现的位置

这类问题对应的都是dns解析错误。这里我的错误是因为我连接阿里云数据库用的域名方式,同样的错误还可能出现在调用带域名的网络服务等情况。

这个问题为啥那么魔性

首先我在阿里云上的k8s中有多个节点,使用的是同一个安全组策略(所以一开始没有考虑是网络安全组问题)。但是其中一个节点中的pod的dns出现问题。连接不到数据库,也ping不通其他的域名。而且如果你部署的pod数量大于1,那么你会发现某些时候访问不出现问题,某些时候访问出现了问题,要看你的请求被路由到的那个pod是否在出问题的节点上,问题定位困难。

魔性问题到底是怎么出现的

这里的根本原因是pod跨节点通信问题,对于pod来说,他们需要通过一个dns的服务(kube-dns)来解析域名,这个dns服务对应的pod叫coredns,它是一个pod,所以也会被调度到某个节点。

一般这个pod阿里云已经为我们创建好的。他在kube-system命名空间下,我们查询一下

$ kubectl get pods -n kube-system -o wide|grep dnscoredns-6d5d8b96d5-6nbdc                            1/1     Running     0          30d   172.20.0.3     cn-hangzhou.192.168.1.45   <none>           <none>
coredns-6d5d8b96d5-jknzf                            1/1     Running     0          30d   172.20.0.2     cn-hangzhou.192.168.1.45   <none>           <none>

可以看到 我的集群中这两个coredns,两个都被布置到了192.168.1.45这个节点上。所以在其他节点上的pod,调用dns的时候,都是要跨节点调用,会出现网络问题。所以需要在安全组中放行k8s的pod网络CIDR实现每个节点上pod的dns解析。

这样就解释了,为什么两个节点在同样的安全组 ,有不同的现象。应该是表现正常的那些节点上有coredns 所以解析可以正常。 不正常的节点上没有coredns,而且这些不正常节点的pod和coredns的ip的53端口不通。

我去查询了我不能解析dns的pod所在的节点ip,果然就是没有coredns的节点。

解决方案

在节点的安全组中放行k8s的pod网络CIDR。来解决pod跨节点调用coredns的问题,同样这样也解决了之后其他的pod跨节点通信的问题。

深入思考

建议应该增加coredns应用的反亲和性,防止coredns调度到一台主机上,毕竟coredns是一个系统组件,我们应该尽量让coredns分散部署,增强其可用性。

亲和性反亲和性之后再出文章讲解。

阿里云上的k8s中某些节点的pod报dns错误,dns解析失败,bad address相关推荐

  1. ajax的post请求出现403错误,如何解决Django中ajax发送post请求报403错误CSRF验证失败的问题...

    如何解决Django中ajax发送post请求报403错误CSRF验证失败的问题 发布时间:2021-02-05 14:23:57 来源:亿速云 阅读:92 作者:小新 这篇文章主要介绍了如何解决Dj ...

  2. python token post403原因_Django中ajax发送post请求 报403错误CSRF验证失败解决方案

    前言 今天学习Django框架,用ajax向后台发送post请求,直接报了403错误,说CSRF验证失败:先前用模板的话都是在里面加一个 {% csrf_token %} 就直接搞定了CSRF的问题了 ...

  3. 阿里云上千规模节点项目提炼精华,全在这里了!

    作为国内最大市场占有份额的云服务提供商,阿里云凭借过硬的研发支撑和良好的安全机制,帮助企业成功地解决了许多高并发场景下的业务难题,如:分布式集群项目的自动化部署.降级和熔断,以及海量数据下的MQ消息队 ...

  4. 阿里云上自建k8s挂载ali nas

    阿里云上自建k8s挂载ali nas@TOC k8s nas ali 基础环境: 阿里云上两台ecs搭建k8s平台,版本信息: k8s: 1.23.5 docker: 20.10.7 ubuntu: ...

  5. 云计算之路-阿里云上:在乌云中坚信蓝天

    继续向大家汇报阿里云上的天气变化情况.今天(5月8日)上午糟糕的天气(8:30~9:50,10:50~11:40)给大家逛园带来了很大的麻烦,请谅解! 早上8:30左右由于阿里云RDS出现突发故障(故 ...

  6. 如何在阿里云上构建一个合适的Kubernetes集群

    摘要: 声明 本文主要介绍如何在阿里云上构建一个K8S集群的实践,只是作为参考,大家可以根据实际情况做出调整. 集群规划 在实际案例中发现,有不少同学使用了很多的小规格的ECS来构建K8S集群,这样其 ...

  7. 通过阿里云ecs部署k8s集群

    通过阿里云ecs部署k8s集群 1. 搭建环境 2. 安装步骤 禁用Selinux Restart Docker 此处仅有两台服务器,一台master节点,一台node节点,后期可按照步骤继续增加no ...

  8. 在阿里云上部署生产级别Kubernetes集群

    阿里云是国内非常受欢迎的基础云平台,随着Kubernetes的普及,越来越多的企业开始筹划在阿里云上部署自己的Kubernetes集群. 本文将结合实战中总结的经验,分析和归纳一套在阿里云上部署生产级 ...

  9. 通过阿里云容器服务K8S Ingress Controller实现应用服务的灰度发布

    简介 日常工作中我们经常需要对服务进行版本更新升级,为此我们经常使用到的发布方式有滚动升级.分批暂停发布.蓝绿发布以及灰度发布,今天主要跟大家分享下在阿里云容器服务Kubernetes集群中如何通过I ...

最新文章

  1. vue click事件冒泡,默认行为
  2. ili9341代码移植注意事项
  3. 【ST表】栈(jzoj 2295)
  4. 使用Maven 创建web3.0项目
  5. 数据3分钟丨CSDN 1024程序员节来啦!PostgreSQL 14和openGauss 2.1.0在同一天正式发布。...
  6. Django+Bootstrap+Mysql 搭建个人博客(一)
  7. alisql mysql5.7_wps2016抢鲜版_AliSQL 5.6.32 vs MySQL 5.7.15抢鲜测试-云栖社区-阿里云
  8. android 模拟器 电脑配置,手机安卓模拟器多开对电脑配置要求与占用浅谈
  9. windows下载及安装redis
  10. macOS 访达的隐藏小技巧
  11. 24_MySQL高可用之MMM
  12. 智遥工作流为SAP节省License实例
  13. 文献管理软件Mendeley优缺点分析
  14. python制作流动图_炫酷!用Python制作漂亮的流动桑基图
  15. win7音量图标不见了如何解决
  16. ABAQUS中inp文件的使用和书写
  17. 【Unity 手写PBR】补充:多光源 阴影 视差 自发光
  18. c语言判断是否以某个字符串开头,以某个字符串结尾
  19. MAP(Maximum A Posteriori,最大后验准则)算法
  20. 文件操作和IO --- 文件操作

热门文章

  1. 快手通过标签添加你什么意思_快快手粉丝数旁边的关注是什么意思手通过关注页添加是什么意思...
  2. mybatis查询一对多数据
  3. Facebook COO桑德伯格
  4. 【gradle】gradle配置全局仓库
  5. oc账号无法登出,oc登出后官网还显示登陆状态?
  6. Arco Pro最佳实践,路由与菜单
  7. 常用数字、数学式及时间日期的英文读法
  8. MQTT服务器Mosquitto 2.x编译安装配置
  9. 域名分级与域名解析过程(DNS)
  10. Idea安装插件的两种方法