91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

如何進行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

涪陵区| 霍山县| 隆尧县| 江安县| 绿春县| 广宁县| 大余县| 沙田区| 平远县| 科尔| 桐庐县| 普洱| 翁源县| 大名县| 丹江口市| 阿坝| 乾安县| 鱼台县| 陈巴尔虎旗| 大竹县| 贞丰县| 松桃| 额敏县| 河曲县| 吕梁市| 盘锦市| SHOW| 明星| 西城区| 江津市| 洪江市| 仙游县| 镇沅| 湖南省| 拜城县| 綦江县| 澜沧| 洞口县| 平顺县| 北辰区| 伊川县|