首页 > 其他分享 >k8s-mtu设置不当引发的线上故障

k8s-mtu设置不当引发的线上故障

时间:2022-08-22 07:44:47浏览次数:51  
标签:mtu 故障 集群 operator 日志 k8s 节点

背景

在部署新的paas平台线上环境时,突发consul和es中间件无法创建。

排查过程

以consul

通过查询k8s集群中pod状态发现原来3pod的consul集群,其中2个pod一直重启。
# kubectl get pods -n paasconsul-propaas
通过describe查看pod信息,发现是liveness失败。
# kubectl describe pods -n paasconsul-propaas
查看liveness调用的是health-check的二进制文件,经过分析源码发现这个二进制文件的作用为连接本地consul节点,查看当前节点状态。现在查看集群状态错误。此时怀疑consul集群配置出现问题

通过查看operator的log发现集群并没有报错。并且打印有副本集配置完成的日志出现在最后一行。但是后续一直没有日志打印,此时怀疑是operator没有收到events事件。

为了验证events事件没有获取到,通过修改cr文件的cpu和内存参数,想要触发新的更新event。结果不出意外,operator并没有触发更新操作,日志并无新增,节点状态并没有改变

看到operator无任何响应,怀疑其已经卡死,为了验证此想法,又从paas平台创建一个集群,发现出现新日志,后续又到副本集配置完成日志打印,然后卡死。判断operator状态存活正常,只是对更新cr信息无响应。

问题分析

针对无法更新cr的状态无法获取events时间。开始分析

怀疑etcd写入失败,通过查看etcd日志发现一切正常。(❎)

想起之前遇见的pod名字受DNS Label Names 63位长度限制,怀疑其cr是否也存在其问题。通过将原cr的yaml信息保留下来,改其名称再运行。结果发现其正常运行。(✅)

问题处理

为什么名称长度限制会导致operator卡死无响应?

这时候想到了tcp的mtu设置。虚拟机mtu和容器mtu不匹配将会导致网络不通。

因为当前k8s集群采用的是IP-IN-IP协议,此协议可以解决掉k8s生产扩容时,不会引起新老主机不通问题。

# 查看物理节点mtu:
netstat -i
# 发现其物理节点mtu值为1450

# 查看calico配置的mtu参数
kubectl get configmap/cali-config -n kube-system | grep "veth_mtu"
# 发现其mtu值也为1450
此时问题原因找到,calico启用tunnel模式,因此经过tunnel会封装一个新的20字节的ip包头,所以当发送大量数据时,calico生成的1450大小的数据包再加上20大小的ip包头为1470字节的包。
本地网卡转发calico通讯数据包1470,将失败。

可以通过两种方式解决此问题。1、更改物理节点mtu值大小。2.修改calicomtu值大小为 物理节点mtu-20。
推荐使用第二种

kubectl patch configmap/calico-config -n kube-system --type merge -p '{"data":{"veth_mtu": "1430"}}
根据实际需要调整所在k8s node节点的 eth0或tunl0的mtu,需确保tunl0的mtu比eth0的mtu少20。

标签:mtu,故障,集群,operator,日志,k8s,节点
From: https://www.cnblogs.com/zisefeizhu/p/16611626.html

相关文章

  • K8s 删除Terminating状态Pod
    K8s删除Terminating状态Pod删除nfs的svc之后删除pod一直卡在Terminating状态  分析无法删除的原因在了解以上机制后,对象无法删除无外乎以下两个原因:对象存在fi......
  • k8s部署Wordpress(定义不同的资源对象文件)
    1)新建namespace(名称空间)新建wordpress-blognamespace,将应用都部署到wordpress-blog这个命名空间下面。[23:17:36root@k8s-master~]#llnamespace.yamlpod.ymlse......
  • 行车记录仪不工作故障排除记事
    我的行车记录仪不能用有一段时间了,它是点烟器取电的,点烟器那里不知道为什么突然就没有电了。我尝试用一个大容量的充电宝为它供电,但记录仪开机一会儿就自动关机。我试图去......
  • 【系统设计】FMEA(Fail Model and Effect Analysis)故障模式与影响分析(又称失效模式与后
     FEMAFMEA方法:(1)给出初始的架构图(2)假设某个部件出现故障(3)分析次故障对系统功能造成的影响(4)根据分析结果判断是否需要优化架构 FMEA举例:软件系统设计 ......
  • k8s--HPA 控制器
    HorizontalPodAutoscaler(HPA)控制器介绍在前面的学习中,我们已经可以实现通过手工执行kubectlscale命令实现pod扩容或缩容,但是这显示不符合kubernetes的定位目......
  • k8s
    架构与组件Master——控制节点APIServer,由API组件构成,负责提供API服务Scheduler,负责集群调度ControllerManagerNode——计算节点,本质是通过各种协议对简单容......
  • wireshark故障解决案例分享
    wireshark常见使用操作讲解以及几个故障解决案例分享系统集成项目专家阿祥 2022-06-1310:26 发表于河南 以下文章来源于网络之路博客 ,作者网络之路作者一天......
  • Tomcat 故障案例排错
    案例一、Tomcat开机自启动故障01、Tomcat 开机自启动方式,通过systemctl 设置开机自启动(点击此处查看二进制安装如何通过systemclt 管理服务)02、修改/etc/rc.d/rc.loc......
  • 在Ubuntu20.04上使用kubeadm搭建k8s集群(2022年8月版本为v1.24.4)
    1.一些真心话在开始之前,需要将重要的事情说三遍:一定要认真阅读官方文档!一定要认真阅读官方文档!!一定要认真阅读官方文档!!!我在搭建k8s之前看了网上很多教程,也尝试的执行了......
  • ceph 009 管理定义crushmap 故障域
    管理和自定义crushmap定义pg到osd的映射关系通过crush算法使三副本映射到理想的主机或者机架更改故障域提高可靠性pg到osd映射由crush实现下载时需要将对象从osd搜索......