您的位置:首页 > 软件教程 > 教程 > 线上集群中,如何处理出现大量错误日志的Pod

线上集群中,如何处理出现大量错误日志的Pod

来源:好特整理 | 时间:2024-09-06 09:54:35 | 阅读:163 |  标签: a 错误 何处 K 隔离   | 分享到:

线上集群中,业务跑着跑着,突然发现有个Pod上出现大量错误日志,其他的Pod是正常的,该如何处理呢? 直接删除Pod? 这样不便于保留现场,可能会影响判断问题的根因 让业务方忍一会,先排查下问题? 会被喷死 最好的方案是既让Pod停止接收流量,又保留Pod 思路: 停止接收流量 停止接收流量这个动作

在线上集群中,有时候会遇到业务正常运行,但突然有一个Pod出现大量错误日志的情况,而其他Pod则正常运行。这种情况该如何处理呢?

直接删除Pod可能会导致保留现场困难,并影响对问题根本原因的判断。

让业务方忍耐一会,先排查问题是否是Pod导致的吗?这种方法可能会引起不满。

最佳的解决方案是停止该Pod接收流量,并保留该Pod。

思路是:

  1. 停止接收流量

通过修改Pod的标签来实现停止接收流量的动作。本质上是通过将Pod从endpoint中移除,这样无论是服务化还是http都会将当前这个节点移除,不再转发流量。当然,前提是服务化和http的节点发现是基于k8s的endpoint来实现的(理论上都是这么干的,不排除有黑科技)。
首先要主动调用服务下线的方法,理论上这个调用应该会配在Pod的prestop钩子中,这样在Pod被删除时,会先调用这个方法,然后再删除Pod。

preStop:
    exec:
      command:
      - /bin/sh
      - -c
      - /bin/stop.sh
  1. 将Pod从Workload中移除

调用下线完毕后,再修改Pod的标签,使Pod脱离Workload的控制,变成孤儿Pod,要注意修改Pod标签也要让service的selector选择不到这个Pod,这样Pod也就从endpoint中移除,服务发现也就感知不到这个节点了。

  1. 如果Pod是消费型业务,比如nsq worker,不具备主动发起下线的方法,该怎么办?

针对这种情况,可以直接将Pod的网络切断,这样Pod就无法接收流量了。切断方式也很简单,直接在Pod上添加一个iptables规则,将流量全部丢弃即可。

/sbin/iptables -A INPUT -s {node_ip}/32 -j ACCEPT &&   // 允许节点访问,避免kubelet liveness检查失败
/sbin/iptables -A OUTPUT -d {node_ip}/32 -j ACCEPT &&
/sbin/iptables -A OUTPUT -s localhost -d localhost -j ACCEPT &&
/sbin/iptables -A INPUT -s localhost -d localhost -j ACCEPT &&
/sbin/iptables -A INPUT -p tcp --tcp-flags RST RST -j ACCEPT &&
/sbin/iptables -A OUTPUT -p tcp --tcp-flags RST RST -j ACCEPT &&
/sbin/iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset &&
/sbin/iptables -A OUTPUT -p tcp -j REJECT --reject-with tcp-reset"""
小编推荐阅读

好特网发布此文仅为传递信息,不代表好特网认同期限观点或证实其描述。

a 1.0
a 1.0
类型:休闲益智  运营状态:正式运营  语言:中文   

游戏攻略

游戏礼包

游戏视频

游戏下载

游戏活动

《alittletotheleft》官网正版是一款备受欢迎的休闲益智整理游戏。玩家的任务是对日常生活中的各种杂乱物
何处 1.0
何处 1.0
类型:休闲益智  运营状态:正式运营  语言:中文   

游戏攻略

游戏礼包

游戏视频

游戏下载

游戏活动

《何处》是PitaGame开发的一款以休闲玩法为主题的闯关类手游,在游戏里玩家需要在精密十足的3D场景中找到

相关视频攻略

更多

扫二维码进入好特网手机版本!

扫二维码进入好特网微信公众号!

本站所有软件,都由网友上传,如有侵犯你的版权,请发邮件[email protected]

湘ICP备2022002427号-10 湘公网安备:43070202000427号© 2013~2024 haote.com 好特网