kubernetes 雪崩了: 从k8s到linux内核

资讯 2024-06-06 阅读:67 评论: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...
  • ??今日BTC和ETH行情分析以及对BICO的看法

    ??今日BTC和ETH行情分析以及对BICO的看法
    ? 如果你刚认识我那么此刻开始你的幸福? 幸运之路正式开启!? ? 历史记录皆可追溯,往期的记录依然可查,山水相逢,皆是缘!?以后也会经常分享一些看好现货给大家! ? 本周热点 ? ? ? ? ? TON 启动公...
  • 孟洪涛谈威科夫交易法

    孟洪涛谈威科夫交易法
     大咖看市 | 判断趋势的工具(一)  原创2016-04-30孟洪涛期货日报 在讨论判断工具之前,我们先说下判断趋势。趋势包括以下几个阶段:趋势的开始,趋势在运行中,以及趋势的结束。我们判断趋势就是能够找出当前市场处于趋势的哪个阶段,以便调整交易。趋势的不同阶段伴随着交易者不同的行为,起始阶段是进场时机,结束阶段是出场时机,同时也是准备反转的进场时机。但是在交易中遇到的最头疼的问题是以上几个趋势阶段并不会白纸黑字表现出来。 ...
标签列表