阿里云上的k8s中某些节点的pod报dns错误,dns解析失败,bad address
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相关推荐
- ajax的post请求出现403错误,如何解决Django中ajax发送post请求报403错误CSRF验证失败的问题...
如何解决Django中ajax发送post请求报403错误CSRF验证失败的问题 发布时间:2021-02-05 14:23:57 来源:亿速云 阅读:92 作者:小新 这篇文章主要介绍了如何解决Dj ...
- python token post403原因_Django中ajax发送post请求 报403错误CSRF验证失败解决方案
前言 今天学习Django框架,用ajax向后台发送post请求,直接报了403错误,说CSRF验证失败:先前用模板的话都是在里面加一个 {% csrf_token %} 就直接搞定了CSRF的问题了 ...
- 阿里云上千规模节点项目提炼精华,全在这里了!
作为国内最大市场占有份额的云服务提供商,阿里云凭借过硬的研发支撑和良好的安全机制,帮助企业成功地解决了许多高并发场景下的业务难题,如:分布式集群项目的自动化部署.降级和熔断,以及海量数据下的MQ消息队 ...
- 阿里云上自建k8s挂载ali nas
阿里云上自建k8s挂载ali nas@TOC k8s nas ali 基础环境: 阿里云上两台ecs搭建k8s平台,版本信息: k8s: 1.23.5 docker: 20.10.7 ubuntu: ...
- 云计算之路-阿里云上:在乌云中坚信蓝天
继续向大家汇报阿里云上的天气变化情况.今天(5月8日)上午糟糕的天气(8:30~9:50,10:50~11:40)给大家逛园带来了很大的麻烦,请谅解! 早上8:30左右由于阿里云RDS出现突发故障(故 ...
- 如何在阿里云上构建一个合适的Kubernetes集群
摘要: 声明 本文主要介绍如何在阿里云上构建一个K8S集群的实践,只是作为参考,大家可以根据实际情况做出调整. 集群规划 在实际案例中发现,有不少同学使用了很多的小规格的ECS来构建K8S集群,这样其 ...
- 通过阿里云ecs部署k8s集群
通过阿里云ecs部署k8s集群 1. 搭建环境 2. 安装步骤 禁用Selinux Restart Docker 此处仅有两台服务器,一台master节点,一台node节点,后期可按照步骤继续增加no ...
- 在阿里云上部署生产级别Kubernetes集群
阿里云是国内非常受欢迎的基础云平台,随着Kubernetes的普及,越来越多的企业开始筹划在阿里云上部署自己的Kubernetes集群. 本文将结合实战中总结的经验,分析和归纳一套在阿里云上部署生产级 ...
- 通过阿里云容器服务K8S Ingress Controller实现应用服务的灰度发布
简介 日常工作中我们经常需要对服务进行版本更新升级,为此我们经常使用到的发布方式有滚动升级.分批暂停发布.蓝绿发布以及灰度发布,今天主要跟大家分享下在阿里云容器服务Kubernetes集群中如何通过I ...
最新文章
- vue click事件冒泡,默认行为
- ili9341代码移植注意事项
- 【ST表】栈(jzoj 2295)
- 使用Maven 创建web3.0项目
- 数据3分钟丨CSDN 1024程序员节来啦!PostgreSQL 14和openGauss 2.1.0在同一天正式发布。...
- Django+Bootstrap+Mysql 搭建个人博客(一)
- alisql mysql5.7_wps2016抢鲜版_AliSQL 5.6.32 vs MySQL 5.7.15抢鲜测试-云栖社区-阿里云
- android 模拟器 电脑配置,手机安卓模拟器多开对电脑配置要求与占用浅谈
- windows下载及安装redis
- macOS 访达的隐藏小技巧
- 24_MySQL高可用之MMM
- 智遥工作流为SAP节省License实例
- 文献管理软件Mendeley优缺点分析
- python制作流动图_炫酷!用Python制作漂亮的流动桑基图
- win7音量图标不见了如何解决
- ABAQUS中inp文件的使用和书写
- 【Unity 手写PBR】补充:多光源 阴影 视差 自发光
- c语言判断是否以某个字符串开头,以某个字符串结尾
- MAP(Maximum A Posteriori,最大后验准则)算法
- 文件操作和IO --- 文件操作