kubernetes 雪崩了: 从k8s到linux内核

资讯 2024-06-06 阅读:30 评论:0
美化布局示例

欧易(OKX)最新版本

【遇到注册下载问题请加文章最下面的客服微信】永久享受返佣20%手续费!

APP下载   全球官网 大陆官网

币安(Binance)最新版本

币安交易所app【遇到注册下载问题请加文章最下面的客服微信】永久享受返佣20%手续费!

APP下载   官网地址

火币HTX最新版本

火币老牌交易所【遇到注册下载问题请加文章最下面的客服微信】永久享受返佣20%手续费!

APP下载   官网地址

问题说明 问题说明:为第二次故障分析第一次发生故障和在协议层上使用邻接分系统对udptcp 系统进行核分析的根本原因

我们可以看到原始的微型公用代码:Kubernetes“Avalanche”(qq.com)

注意我的公关号码

Kubenetes是云层生命的基本组成部分,它已经成为发送系统组织中一个事实上的标准,如果发生一些事情发生在Kubenetes身上,那将是灾难性的。 在集装箱化过程中,我们遇到了许多有趣的失败,今天我们将分析一个雪崩案例。

在黑色星期三,突然收到大量警报:5xx的大型服务;一台计算机网络主机,CPU, 几乎高达80%;记录和档案管理等。

发现有些服务很费时, 记忆在急剧增加, Gc 正在减速, CPU, Goroutines 等。

粗略分析没有显示是哪一种结果,因此启动了应急计划,机器上的POD被移到其他机器,服务在搬迁后正常运行,流动恢复。

最初的问题已经解决,对原因的详细分析已经开始,没有从监视中清楚地分析原因,没有内核日志,OOM杀人日志在故障四分钟后没有多大价值。

但从监控的角度来看 A 的POD服务问题 尤其严重

由于急于恢复交通,该站点没有被保留到假定服务有问题的地步(当时假定Linux的某部分没有适当隔离)。

服务失灵部分监测

图片图片

主 主 主 主 主 机 主

图片图片

OOM 内核日志

图片图片

三小时后,另一台机器发生故障,用穿梭器接通电话,然后继续进行差错行动,以转移POD,导致其他三个东道方、它们所依赖的服务以及它们所依赖的服务出现问题。

只有到那时,你才意识到什么已经达到了临界点,这会导致其他机器出现问题。 因此,迅速将一些服务转移到物理部署上,而主机将立即恢复正常。

主机CPU利用率

图片图片图片

虽然问题最初已经解决,但必须继续分析其根源。

从这个角度看,大多数过程都被叫来工作, 大部分是因为呼唤的结果, 所以谷歌搜索文章有类似的问题:

  https://www.cnblogs.com/tencent-cloud-native/p/14481570.html

然而,还不可能得出这种仓促的结论,这仍需进一步分析。

线上机器的内核较老,版本为3.10.0-1160.36.el7.x86_64,由于有 tcp 和 udp 流量,对两项协议都进行了分析。

从系统呼叫开始分析

代码语言: txt 副本

代码语言: txt 副本

Inet_ sendmsg 调用不同的协议发送功能,

udp: udp_ sendmsg; tcp: tcp_ sendmsg

Udp 代码语言: txt 副本

对功能的最后呼叫

tcp 代码语言: txt 副本

代码语言: txt 副本

代码语言: txt 副本

最后被调用到函数

代码语言: txt 副本

这就是重点!

呼叫邻居的子系统

代码语言: txt 副本

下一跳到网关并返回网关地址。 下一跳到 POD IP 地址, 所以对于 Macvlan 的网络结构, 在同一主机的两个 POD 之间可以访问两个 ARP 列表 。

代码语言: txt 副本

查找 ARP 表格项目

ipv4_neigh_bookup_noref 根据出口设备“ 单项标记” 和目标 ip 计算灰值, 然后在 rp hash 表格中发现是否存在此正数条目, 所以存储在 rp hash 表格中的条目是全球性的?

dev: 能够到达邻居的装置是 dev 设备指针的值, 指针位于内部核状态, 因此它可以被视为设备的唯一识别特性 : pip: L3 级目标地址( 下一个跳跃地址) 代码语言: txt 副本

创建邻居的表格项

如果 ARP 缓存表不存在, 创建、 创建失败、 返回- ENVAL 。 这就是问题所在, 没有内核日志, 并返回误导错误代码, 导致无法快速找到原因 。

幸运的是,在Linux neneel 5.x内核代码中, 你打印错误的信息:

代码语言: txt 副本

分布邻居,如果 ARP 缓存超过 gc_thresh3, 强制使用 1 gc 。

如果 gc 不恢复任何过期的ARP 记录, 且条目数量超过 gc_threshsh3, 则返回 NULL, 邻居列表的标记失败

代码语言: txt 副本

ARP表格是再循环的,在回收过程中需要写入锁。

如果成功恢复,返回1,返回1,否则返回0

代码语言: txt 副本

代码语言: txt 副本

  ARP

下文的源码分析已不再重要。

将邻里状态从NUD_none改为NUD_INCOMPLETTE

代码语言: txt 副本

处理对ARRP答复的处理

代码语言: txt 副本

旋转锁定

更改邻居的手表需要购买一个书写锁,这是一个旋转锁。

代码语言: txt 副本

根源。

原因已经很清楚,因为项目设计文件之间的沟通导致ARP表格中有两个ARP记录,如果东道飞机上有更多的PAD,将有许多ARP名单,Linux将限制ARP的规模。

内核参数

意意意意意意意 意思

默认值

  /proc/sys/net/ipv4/neigh/default/base_reachable_time

可达状态基数

30秒 30秒 30 seconds.

  /proc/sys/net/ipv4/neigh/default/gc_stale_time

Stale 状态过期失效时间

60秒,60秒,60秒,60秒,60秒,60秒,60秒,60秒,60秒,60秒,60秒,60秒,60秒,60秒,60秒,60秒,60秒,60秒,60秒,60秒,60秒,60秒,60秒,60秒,60秒,60秒,60秒,60秒,60秒,60秒,60秒,60秒,60秒,60秒,60秒,60秒,60秒,60秒,60秒,60秒,60秒,60秒,60秒,60秒,60秒,60秒,60秒,60秒,60秒,60秒,60秒,60秒,60秒,60秒,60秒,60秒,60秒,60秒,60秒,60秒,60秒,60秒,60秒,60秒,60秒,60秒,60秒,60秒,60秒。60秒,60秒,60秒,60秒,60秒,60秒,60秒,60秒,60秒。

  /proc/sys/net/ipv4/neigh/default/delay_first_probe_time

延迟状态到期用于探测的时间

五秒钟

  /proc/sys/net/ipv4/neigh/default/gc_interval

gc 启动周期时间

30秒 30秒 30 seconds.

  /proc/sys/net/ipv4/neigh/default/gc_thresh1

可保留的最低时间表数目

  128

  /proc/sys/net/ipv4/neigh/default/gc_thresh2

最高记录最长记录的软限制

  512

  /proc/sys/net/ipv4/neigh/default/gc_thresh3

对最高记录限制的硬性限制

  1024

ARP 废物回收处理机制

桌上的废物回收是同步和现成的:

同步: 当调用 gc_ interval 指定周期gc 时, naigh_ alloc 函数作为组执行 。

恢复战略?

表号 < gc_thresh1: 没有处理 gc_thresh1 = < ar 列表号 < gc_thresh2 > : 根据 gc_interval gc_thresh2 定期启动 ARP 计划废物回收时间表 < arp 表号 < gc_thresh3-5 * HZ (一般为5秒) 计划号废物回收项目 > gc_thresh3: 立即启动 ARP 表格废物回收

ARP 表格项目 状态转换

图片图片

来源来源:理解Linux网络内部

如图所示,只有两个州的ARP记录可以收回:

失效状态过期后失败

结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论结论

由于我们的千兆瓦网以马克夫兰网络为基础,每个POD将被指定一个马克地址,以便同一主机的POD之间的访问将产生两份ARP名单。

因此,当ARP名单超过时,即开始收回ARP表格,而当没有可收回的条目时,分发失败导致系统调用失败。

上层很可能会不断重新测试,还会有发送内核数据的其他交通电话。 归根结底,只要数据接收方的ARP记录不在ARP表上,它将导致废物回收,这需要锁住才能让ARP表穿行,尽管时间很短。 但通向写入锁的整个时间很长,导致大量锁竞争(轮换 ), 导致CPU激增,造成故障。

将 gc_thresh 更改为子代码语言: txt 副本

其他项目设计品达到ARP表格阈值代码语言的打印件: txt 副本

Ping不在ARP桌上 Ping的命令被卡住了

代码语言: txt 副本

大代码语言将被更改: txt 副本

Ping 命令立即恢复代码语言: txt 复制

当ARP参数在线上计算机主机的参数被更改时,不存在此类问题。

代码语言: txt 副本

虽然这个问题发生在宽网上,但本质上是由于对底部操作系统控制不足。

美化布局示例

欧易(OKX)最新版本

【遇到注册下载问题请加文章最下面的客服微信】永久享受返佣20%手续费!

APP下载   全球官网 大陆官网

币安(Binance)最新版本

币安交易所app【遇到注册下载问题请加文章最下面的客服微信】永久享受返佣20%手续费!

APP下载   官网地址

火币HTX最新版本

火币老牌交易所【遇到注册下载问题请加文章最下面的客服微信】永久享受返佣20%手续费!

APP下载   官网地址
文字格式和图片示例

注册有任何问题请添加 微信:MVIP619 拉你进入群

弹窗与图片大小一致 文章转载注明

分享:

扫一扫在手机阅读、分享本文

发表评论
平台列表
美化布局示例

欧易(OKX)

  全球官网 大陆官网

币安(Binance)

  官网

火币(HTX)

  官网

Gate.io

  官网

Bitget

  官网

deepcoin

  官网
热门文章
  • 0.00003374个比特币等于多少人民币/美金

    0.00003374个比特币等于多少人民币/美金
    0.00003374比特币等于多少人民币?根据比特币对人民币的最新汇率,0.00003374比特币等于2.2826 1222美元/16.5261124728人民币。比特币(BTC)美元(USDT)人民币(CNY)0.00003374克洛克-0/22216.5261124728比特币对人民币的最新汇率为:489807.72 CNY(1比特币=489807.72人民币)(1美元=7.24人民币)(0.00003374USDT=0.0002442776 CNY)。汇率更新于2024...
  • 0.00006694个比特币等于多少人民币/美金

    0.00006694个比特币等于多少人民币/美金
    0.00006694比特币等于多少人民币?根据比特币对人民币的最新汇率,0.00006694比特币等于4.53424784美元/32.5436 16人民币。比特币(BTC)美元(USDT)人民币(CNY)0.000066944.53424784【比特币密码】32.82795436 16比特币对人民币的最新汇率为:490408.64 CNY(1比特币=490408.64人民币)(1美元=7.24人民币)(0.00006694USDT=0.0004846456 CNY)汇率更新时...
  • 0.00015693个比特币等于多少人民币/美金

    0.00015693个比特币等于多少人民币/美金
    0.000 15693比特币等于多少人民币?根据比特币对人民币的最新汇率,0.000 15693比特币等于10.6 1678529美元/76.86554996人民币。比特币(BTC)【比特币价格翻倍】美元(USDT)人民币(CNY)0.000/克洛克-0/5693【数字货币矿机】10.6 167852976.8655254996比特币对人民币的最新汇率为:489,807.72 CNY(1比特币= 489,807.72人民币)(1美元=7.24人民币)(0.00015693 U...
  • 币圈院士:5.20比特币(BTC)以太坊(ETH)行情分析

    币圈院士:5.20比特币(BTC)以太坊(ETH)行情分析
    利空出尽?华尔街多头坚信美股将摆脱泥潭 经济衰退风险被夸大A lot of people on Wall Street believe that beauty will escape the quagmire; the risk of recession is exaggerated. 从目前美国经济的情况加上美股先有的走势来判断,确信通胀已经或即将见顶,这为价格压力回落铺平了道路,这最终将使美联储得以放缓...
  • 2000年美国GDP占世界的304%,中国GDP仅占35%,现在呢?

    2000年美国GDP占世界的304%,中国GDP仅占35%,现在呢?
    GDP作为全球公认的实力基准,就像是一个大国实力的代言人,它是布雷顿森林体系下全球团结的声音。它不仅仅是数字的累积,更是大国综合实力的人格化,默默诉说着每个国家的辉煌与荣耀。虽然GDP不是衡量一个国家综合实力的唯一标准,但无疑是最关键的指标之一。作为一面镜子,它反映了国家的经济实力和发展水平,是国家综合实力的重要体现,不容忽视。2000年,中国GDP迈过/克洛克-0/万亿美元的重要门槛,达到/克洛克-0/。2/克洛克-0/万亿美元(折合人民币7。7万亿元)。然而,在全球经济的...
标签列表