国产av一二三区|日本不卡动作网站|黄色天天久久影片|99草成人免费在线视频|AV三级片成人电影在线|成年人aV不卡免费播放|日韩无码成人一级片视频|人人看人人玩开心色AV|人妻系列在线观看|亚洲av无码一区二区三区在线播放

網(wǎng)易首頁 > 網(wǎng)易號(hào) > 正文 申請(qǐng)入駐

干貨 | 執(zhí)行個(gè) systemd 命令,竟然讓容器CPU“打架”?一文看懂綁核錯(cuò)亂的根因

0
分享至


導(dǎo)讀:近期,我們遇到了一個(gè)棘手的線上故障:在 K8s 集群宿主機(jī)執(zhí)行 systemd 相關(guān)發(fā)布操作時(shí),會(huì)觸發(fā)宿主機(jī)上的業(yè)務(wù)服務(wù)出現(xiàn)超時(shí)問題。

本文將完整復(fù)盤這一故障的排查全過程,從業(yè)務(wù)超時(shí)的異?,F(xiàn)象切入,一步步抽絲剝繭,最終定位到runc 1.1.5 版本向 systemd 傳遞錯(cuò)誤綁核信息這一根因。排查過程中,我們還會(huì)分享如何巧用 Perfetto、BPF 等工具捕捉關(guān)鍵線索,還原問題本質(zhì)。無論你是 K8s 運(yùn)維人員、容器技術(shù)愛好者,還是經(jīng)常與線上故障 “過招” 的研發(fā)同學(xué),都能從這份實(shí)戰(zhàn)案例中收獲排查思路與工具使用技巧,為日后解決同類問題提供可借鑒的參考。

關(guān)鍵詞:k8s, BPF, containerd, runc, systemd

  • 一、故障的起因

  • 二、排查過程

  • 2.1 為什么 CPU Load 會(huì)升高?

  • 2.2 為什么 CPU 使用率掉底了?

  • 2.3 為什么綁核容器使用了同樣的 CPU?

  • 2.4 Systemd 的錯(cuò)誤參數(shù)是哪里來的?

  • 三、總結(jié)與思考

故障的起因

在某次對(duì) systemd 管理的組件進(jìn)行變更后,觀測(cè)到服務(wù)出現(xiàn)大量超時(shí)。這些服務(wù)都是綁核的時(shí)延敏感型服務(wù),所在機(jī)器的 cpu load 都顯著升高,這可能是造成業(yè)務(wù)超時(shí)的原因。

排查過程

2.1 為什么 CPU Load 會(huì)升高?

在故障發(fā)生的機(jī)器上,我們注意到 CPU load 明顯升高。


圖片為了復(fù)現(xiàn)問題,我們選取了一臺(tái)宿主機(jī),排空上面的業(yè)務(wù)實(shí)例,并部署了 90 個(gè) 2 核的綁核容器用于模擬業(yè)務(wù)實(shí)例。對(duì)這 90 個(gè)容器發(fā)送請(qǐng)求,使得 cpu 利用率穩(wěn)定在 50%,然后對(duì)這臺(tái)宿主機(jī)進(jìn)行一次相同的變更。cpu load 并沒有像故障時(shí)那樣劇烈上升,但是我們卻發(fā)現(xiàn)了 cpu util 的異常現(xiàn)象:在本次變更后,cpu util 瞬間下降。下圖為我們?cè)趩栴}復(fù)現(xiàn)時(shí)的 cpu util 變化情況。


我們又重新看了下機(jī)器監(jiān)控,發(fā)現(xiàn)在故障發(fā)生時(shí),很多其他的指標(biāo)也符合 cpu util 下降的表現(xiàn),例如:

  • cpu idle time 上升

  • 進(jìn)程切換的次數(shù)下降

  • 軟中斷的次數(shù)下降




我們意識(shí)到,cpu load 升高可能并不是業(yè)務(wù)超時(shí)的原因,而是結(jié)果。我們有一直往被測(cè)試的 Pod 打流量,按理說它們應(yīng)該一直很繁忙猜對(duì),為什么 CPU 使用率會(huì)下降呢?當(dāng)時(shí)的 CPU 核上在做什么?

`2.2 為什么 CPU 使用率掉底了?

那么為何發(fā)布會(huì)導(dǎo)致 cpu 使用率掉底了?我們抓取了 cfs 的調(diào)度事件,想看看當(dāng)時(shí) CPU 上到底在跑什么,使用 perfetto 分析得到的數(shù)據(jù)如下:


可以看到,在發(fā)布后,某些核上的任務(wù)被切成 idle 了。這些容器都是綁核的容器,是一直有流量進(jìn)來的,容器一直存活,為何這些核上的任務(wù)被切成 idle 了?

檢查了下容器的 cpuset.cpus,發(fā)現(xiàn),在發(fā)布過后,一些不同的容器竟然綁定到了相同的核!


我們又對(duì)比了發(fā)布前容器拿到的 cpu 列表和 kubelet 分配的記錄,是一致的。


也就是說,在發(fā)布前,容器分配到的核與 kubelet 分配的記錄保持一致,符合預(yù)期。而在發(fā)布后,分配被打亂,有些容器使用了同樣的 CPU 列表。這就導(dǎo)致在這些 CPU 上排隊(duì)的線程數(shù)多了,cpu load 上升, 線程遲遲得不到調(diào)度,業(yè)務(wù)的延遲也上升。被空出來的 cpu 就處于 idle 狀態(tài),所以整體的 cpu 使用率下降了。

2.3 為什么綁核容器使用了同樣的 CPU?

那么是誰改了容器的 cpuset.cpus,導(dǎo)致不同的綁核容器跑到了同樣的 cpu 核上 ?我們寫了一個(gè) bpf 程序,通過埋點(diǎn) linux 內(nèi)核函數(shù) cpuset_write_resmask ,監(jiān)控是誰在修改 cpuset.cpus 文件。


發(fā)現(xiàn)在容器創(chuàng)建時(shí),runc 和 systemd 都會(huì)去設(shè)置 cpuset.cpus 文件,其中 runc 直接寫入的 cpu 列表是 kubelet 分配的 cpu 列表,符合預(yù)期,而systemd 寫入的是錯(cuò)的。

在容器創(chuàng)建時(shí),執(zhí)行順序上,systemd 會(huì)先寫入,runc 再后寫入,因此最終的結(jié)果是對(duì)的。發(fā)布通過 systemd 管理的組件時(shí),會(huì)執(zhí)行 systemd daemon-reload , 這會(huì)觸發(fā) systemd 對(duì)賬,將它自己持有的配置數(shù)據(jù)同步到 cgroup , 從上圖我們可以看到它持有的配置數(shù)據(jù)是錯(cuò)的,同步到 cgroup 后就導(dǎo)致不同的綁核容器使用同樣的 cpu 核了,這就是業(yè)務(wù)超時(shí)的原因。

2.4 Systemd 的錯(cuò)誤參數(shù)是哪里來的?

systemd 設(shè)置 cpuset.cpus 的鏈路為“容器創(chuàng)建請(qǐng)求 -> kubelet -> containerd -> containerd-shim-runc-v2 -> runc -> systemd ->容器 cgroup 的 cpuset.cpus”

結(jié)合 bpf 程序的結(jié)果。我們可以發(fā)現(xiàn),runc 拿到的是一個(gè)正確的參數(shù),但是 systemd 卻得到了一個(gè)錯(cuò)誤的參數(shù),問題可能出現(xiàn)在 runc 傳給 systemd 的參數(shù)上。

該機(jī)器使用的 runc 版本是 v1.1.5,去查看了 runc 的 release log ,在 v1.1.6 中發(fā)現(xiàn)了相關(guān)的 bug-fix。


圖片于是我們將 runc 從 v1.1.5 升級(jí)到了 v1.1.6,再次進(jìn)行實(shí)驗(yàn),發(fā)現(xiàn)錯(cuò)誤綁核的問題不再發(fā)生。至此,我們將問題定位到了 runc v1.1.5 的 bug 上。

定位問題后,現(xiàn)在來詳解一些為何 runc 拿到的是正確的綁核信息,傳給 systemd 后就變成了錯(cuò)誤的綁核信息。這里先貼一下該 bug-fix 的 PR https://github.com/opencontainers/runc/pull/3808/files

關(guān)鍵的代碼為:

    } 

這段代碼的邏輯是做一個(gè)反序操作,將 cpu 序號(hào)的二進(jìn)制掩碼轉(zhuǎn)成 systemd 要求的順序,systemd 在這個(gè) PR 里面做了對(duì)應(yīng)的接口。

舉例來說,假設(shè)一個(gè)容器想要綁定的核是"0-3,12",即 0 至 3 號(hào)核,以及 12 號(hào)核。

systemd 期望得到的信息是這樣的:

    } 

在 runc 的這個(gè) bug-fix 之前,并沒有進(jìn)行反序操作,因此 runc 給 systemd 的信息是這樣的

這就導(dǎo)致 systemd 拿到的 cpu 信息為 4 號(hào)核,以及 8 至 11 號(hào)核。

那為何會(huì)有不同容器綁定到一個(gè)核上? 舉例來說,容器 A 想要綁定的是 8 號(hào)核與 10 號(hào)核,容器 B 想要綁定的是 16 號(hào)核與 18 號(hào)核。 Systemd 期望的參數(shù)是:

容器 A:

00000101  // 8 號(hào)以及 10 號(hào)核

容器 B:

00000101  // 8 號(hào)以及 10 號(hào)核

實(shí)際 runc 1.1.5 版本給 systemd 的信息分別是:

容器 A:

00000000

容器 B:

00000000

兩者都被 systemd 解析為需要 0 號(hào)核與 2 號(hào)核。

總結(jié)與思考


最后來總結(jié)下,本次故障的原因?yàn)椋?/p>

容器創(chuàng)建時(shí),systemd 拿到了錯(cuò)誤的綁核信息,runc 拿到了正確的綁核信息,由于 systemd 先寫入配置,runc 后覆蓋寫入,此時(shí)容器的綁核信息最終保持正確。

執(zhí)行 systemd 相關(guān)發(fā)布操作(如 systemctl daemon-reload)時(shí),會(huì)觸發(fā) systemd 再次寫入錯(cuò)誤的綁核信息,覆蓋原正確配置。多個(gè)容器因此綁定到相同 CPU 核,引發(fā)算力競(jìng)爭(zhēng),業(yè)務(wù)無法獲得足夠資源導(dǎo)致超時(shí),進(jìn)而觸發(fā)請(qǐng)求重試,最終表現(xiàn)為 CPU load 升高、業(yè)務(wù)服務(wù)異常。

本次故障排查跨越了 K8s、containerd、runc、systemd 多個(gè)組件,涉及內(nèi)核調(diào)度、容器綁核等底層邏輯。整個(gè)過程既驗(yàn)證了工具的價(jià)值,也沉淀了可復(fù)用的故障排查與運(yùn)維思路。

線上故障既是挑戰(zhàn),也是優(yōu)化的契機(jī)。本次排查不僅解決了具體問題,也啟發(fā)了我們要打破“現(xiàn)象即原因”的思維定式,聚焦指標(biāo)關(guān)聯(lián)性分析, 同時(shí)要重視組件版本管理與 bug 追蹤,從源頭規(guī)避風(fēng)險(xiǎn)。

希望本文能給遇到類似問題的小伙伴們一些啟發(fā)。最后,感謝燒魚、kimi song 兩位同學(xué)在故障排查過程中給予的大力支持和幫助。

作者簡(jiǎn)介

YY,攜程高級(jí)云原生研發(fā)經(jīng)理,關(guān)注云原生技術(shù)相關(guān);

licabbage,云原生研發(fā)工程師,關(guān)注單機(jī)性能優(yōu)化方向;

團(tuán)隊(duì)熱招崗位:資深云原生開發(fā)工程師(容器)

特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相關(guān)推薦
熱點(diǎn)推薦
廣告使用“清朝長辮”被指辱華,法國品牌Lemaire致歉

廣告使用“清朝長辮”被指辱華,法國品牌Lemaire致歉

南方都市報(bào)
2026-04-26 20:40:18
男子一身名牌坐地鐵,被指像成功人士,網(wǎng)友:再有錢也怕堵車

男子一身名牌坐地鐵,被指像成功人士,網(wǎng)友:再有錢也怕堵車

丫頭舫
2026-04-27 17:39:57
38歲王思聰近照認(rèn)不出!滿頭白發(fā)穿睡衣度假,駝背顯老像 50 歲

38歲王思聰近照認(rèn)不出!滿頭白發(fā)穿睡衣度假,駝背顯老像 50 歲

橙星文娛
2026-04-27 14:17:09
2-3!3-3!瘋狂一夜,亞特蘭大爆大冷,拉齊奧補(bǔ)時(shí)絕平,曼聯(lián)險(xiǎn)勝

2-3!3-3!瘋狂一夜,亞特蘭大爆大冷,拉齊奧補(bǔ)時(shí)絕平,曼聯(lián)險(xiǎn)勝

足球狗說
2026-04-28 05:07:09
“酩酊大醉”不讀míng dīng dà zuì了,正確讀音是什么?

“酩酊大醉”不讀míng dīng dà zuì了,正確讀音是什么?

未央看點(diǎn)
2026-04-27 22:13:40
從排隊(duì)入籍到集體觀望?美國入籍申請(qǐng)?bào)E降,綠卡人群態(tài)度變了?

從排隊(duì)入籍到集體觀望?美國入籍申請(qǐng)?bào)E降,綠卡人群態(tài)度變了?

紐約時(shí)間
2026-04-28 02:29:16
看完女排最新集訓(xùn),心里五味雜陳!別說里約,連倫敦周期都比不上

看完女排最新集訓(xùn),心里五味雜陳!別說里約,連倫敦周期都比不上

金毛愛女排
2026-04-28 00:00:04
Deepseek,光通信之后的下一個(gè)主升浪

Deepseek,光通信之后的下一個(gè)主升浪

靜姐的財(cái)富第六感
2026-04-26 22:31:06
淚目 趙心童曬兒時(shí)與丁俊暉合照:偶像暉哥讓我加油 你也要加油啊

淚目 趙心童曬兒時(shí)與丁俊暉合照:偶像暉哥讓我加油 你也要加油啊

風(fēng)過鄉(xiāng)
2026-04-27 06:15:09
有的人為了當(dāng)官,把老婆送給領(lǐng)導(dǎo)睡

有的人為了當(dāng)官,把老婆送給領(lǐng)導(dǎo)睡

斜杠人生
2026-04-28 00:00:04
金價(jià):大家不用等候了!不出意外,金價(jià)可能將歷史重演!

金價(jià):大家不用等候了!不出意外,金價(jià)可能將歷史重演!

殘夢(mèng)重生來
2026-04-28 04:40:09
不到72小時(shí),俞敏洪再迎兩大壞消息,主播集體辭職只是“開胃菜”

不到72小時(shí),俞敏洪再迎兩大壞消息,主播集體辭職只是“開胃菜”

阿廢冷眼觀察所
2026-04-28 00:24:36
皮蛋再次成為關(guān)注對(duì)象!研究發(fā)現(xiàn):高血脂吃皮蛋,身體或有6改善

皮蛋再次成為關(guān)注對(duì)象!研究發(fā)現(xiàn):高血脂吃皮蛋,身體或有6改善

健康科普365
2026-04-25 09:27:08
七萬匹東洋大馬的覆滅:國民黨三年敗光日本四十五年心血

七萬匹東洋大馬的覆滅:國民黨三年敗光日本四十五年心血

小莜讀史
2026-04-26 22:44:33
特朗普轉(zhuǎn)發(fā)“中印是人間地獄”,印度痛批低俗,中方態(tài)度耐人尋味

特朗普轉(zhuǎn)發(fā)“中印是人間地獄”,印度痛批低俗,中方態(tài)度耐人尋味

線裝史冊(cè)
2026-04-28 02:38:29
東南亞隱藏的“電詐大佬”,一個(gè)個(gè)正在浮出水面

東南亞隱藏的“電詐大佬”,一個(gè)個(gè)正在浮出水面

現(xiàn)實(shí)的聲音
2026-04-27 20:36:14
大姑子一家9口住進(jìn)來,老公說他5200養(yǎng)活全家足夠,我?guī)夯啬锛?>
    </a>
        <h3>
      <a href=麥子情感故事
2026-04-27 21:34:15
沒人再提激光雷達(dá)數(shù)量?直擊北京車展:今年智能駕駛“卷”什么

沒人再提激光雷達(dá)數(shù)量?直擊北京車展:今年智能駕駛“卷”什么

時(shí)代周報(bào)
2026-04-26 18:14:26
涉黃被傳喚,馬斯克出事了

涉黃被傳喚,馬斯克出事了

營銷頭版
2026-04-27 14:42:14
中國排協(xié)官宣!16點(diǎn)30分,女排訓(xùn)練將直播,第二批球員恐揭曉

中國排協(xié)官宣!16點(diǎn)30分,女排訓(xùn)練將直播,第二批球員恐揭曉

跑者排球視角
2026-04-27 23:48:17
2026-04-28 05:28:49
InfoQ incentive-icons
InfoQ
有內(nèi)容的技術(shù)社區(qū)媒體
12309文章數(shù) 51863關(guān)注度
往期回顧 全部

科技要聞

DeepSeek V4上線三天,第一批實(shí)測(cè)出來了

頭條要聞

坐在特朗普身邊親歷槍擊案的女記者 身份非常不一般

頭條要聞

坐在特朗普身邊親歷槍擊案的女記者 身份非常不一般

體育要聞

人類馬拉松"破二"新紀(jì)元,一場(chǎng)跑鞋軍備競(jìng)賽

娛樂要聞

黃楊鈿甜為“耳環(huán)風(fēng)波”出鏡道歉:謠言已澄清

財(cái)經(jīng)要聞

Meta 140億收購Manus遭中國發(fā)改委否決

汽車要聞

不那么小眾也可以 smart的路會(huì)越走越寬

態(tài)度原創(chuàng)

數(shù)碼
房產(chǎn)
教育
手機(jī)
公開課

數(shù)碼要聞

6K/3K雙模切換!三星這款顯示器什么水平?

房產(chǎn)要聞

信號(hào)!海南商業(yè)版圖,迎來大變局!

教育要聞

你不說這是計(jì)算障礙,我真以為我是智障呢

手機(jī)要聞

一加Nord CE6 Lite官宣5月7日發(fā)布,7000mAh電池

公開課

李玫瑾:為什么性格比能力更重要?

無障礙瀏覽 進(jìn)入關(guān)懷版