亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何進行K8S中的runtime異常復盤

發布時間:2021-12-16 09:53:19 來源:億速云 閱讀:454 作者:柒染 欄目:云計算

這篇文章給大家介紹如何進行K8S中的runtime異常復盤,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

一、概述

收到線上k8s的events報警:

如何進行K8S中的runtime異常復盤

看到這個報警,趕緊看下服務,發現服務目前正常,但有一個正發布的服務,銷毀不了老的pod,我懷疑node節點可能是不可用了。果不其然,在控制節點上查看node狀態,為not ready。

二、檢查

報的內核報警,但是其實不應該導致node節點不可用,故趕緊深究一下,先將node節點打上污點,不可調度。

當集群節點進入NotReady狀態的時候,我們需要做的第一件事情,肯定是檢查運行在節點上的kubelet是否正常。在這個問題出現的時候,使用systemctl命令查看kubelet狀態,發現它作為systemd管理的一個daemon,是運行正常的。當我們用journalctl查看kubelet日志的時候,發現下邊的錯誤。

 Dec 11 19:38:45 ali-worker-k8s-001 kubelet[20140]: E1211 19:38:45.239546   20140 kubelet.go:1551] error killing pod: failed to "KillPodSandbox" for "31321cfc
-1bbe-11ea-893e-00163e14447d" with KillPodSandboxError: "rpc error: code = DeadlineExceeded desc = context deadline exceeded"

order-oms-64544b9c65-4lq5d_sec-mall 這個pod殺不掉,導致了docker死鎖,所以判斷是containerd的問題

問了下阿里的大佬

shim其實扮演父進程,回收容器里進程的角色,跟systemd去回收系統進程一樣。linux上如果systemd卡主了,就會有一堆defunct。shim老版本的同步機制,就用了一個32大小的channel,理論上超過32個進程一起退出,就會overflow

于是我exec進入容器,果然發現進程很多,都是多于32,于是選擇升級containerd解決問題

具體操作步驟如下

1、下載1.2.10 containerd
wget https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.10-3.2.el7.x86_64.rpm
2、停止kubelet進程
systemctl stop kubelet
3、停止containerd
systemctl stop containerd
4、更新rpm版本
rpm -Uvh containerd.io-1.2.10-3.2.el7.x86_64.rpm
5、啟動containerd,檢查版本
systemctl start containerd
ctr version
6、啟動docker,檢查容器進程
systemctl start docker
docker ps
7、啟動kubelet
systemctl start kubelet
8、調度pod到該節點,驗證是否正常

三、網上看到的另一個bug是systemd的問題

如何進行K8S中的runtime異常復盤

1、什么是PLEG

這個報錯很清楚的告訴我們,容器runtime是不工作的,且PLEG是不健康的。這里容器runtime指的就是docker daemon。Kubelet通過直接操作docker daemon來控制容器的生命周期。而這里的PLEG,指的是pod lifecycle event generator。PLEG是kubelet用來檢查容器runtime的健康檢查機制。這件事情本來可以由kubelet使用polling的方式來做。但是polling有其成本上的缺陷,所以PLEG應用而生。PLEG嘗試以一種“中斷”的形式,來實現對容器runtime的健康檢查,雖然實際上,它同時用了polling和”中斷”兩種機制。

基本上看到上邊的報錯,我們可以確認,容器runtime出了問題。在有問題的節點上,通過docker命令嘗試運行新的容器,命令會沒有響應。這說明上邊的報錯是準確的.

2、容器runtime

容器runtime包括docker daemon,containerd,containerd-shim以及runC。組件containerd負責集群節點上容器的生命周期管理,并向上為docker daemon提供gRPC接口。

故也升級了下systemd。升級systemd,直接yum update systemd就可以。

其中如果遇到容器起不來網絡插件的情況,可以ip link del dev cni0,會自動重啟的。

關于如何進行K8S中的runtime異常復盤就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

株洲市| 布尔津县| 邻水| 郴州市| 邳州市| 绥棱县| 沂源县| 保康县| 元谋县| 长武县| 台北市| 安达市| 闽侯县| 兴城市| 桦川县| 宣城市| 遂昌县| 万州区| 霍林郭勒市| 马山县| 江源县| 汉川市| 临漳县| 囊谦县| 黄骅市| 瑞昌市| 洪江市| 漳平市| 泌阳县| 周宁县| 墨脱县| 临沭县| 砀山县| 鲁甸县| 盘锦市| 成安县| 双柏县| 常州市| 三台县| 藁城市| 登封市|