k8s容器狀態(tài)Terminating無(wú)法刪除的問(wèn)題及解決
容器狀態(tài)一直為T(mén)erminating的解決
若Pod的狀態(tài)為T(mén)erminating,說(shuō)明此Pod正處于關(guān)閉狀態(tài)。Pod停留在Terminating狀態(tài)一段時(shí)間后會(huì)被自動(dòng)刪除。
若Pod一直停留在Terminating狀態(tài),則:
- 1、判斷是否為k8s和docker容器狀態(tài)不一致問(wèn)題造成;
- 2、判斷 Pod 上是否有 finalizers ,如果有需要確認(rèn)是否是有防止刪除的保護(hù);
- 3、判斷節(jié)點(diǎn)是否出現(xiàn) NotReady,節(jié)點(diǎn)如果處于NotReady,此節(jié)點(diǎn)上出現(xiàn) Pod 狀態(tài) Terminating 是預(yù)期中的行為
如果確定可以安全刪除 Pod,可執(zhí)行如下命令強(qiáng)制刪除:
kubectl delete pod [namespace] --grace-period=0 --force
k8s和docker容器狀態(tài)不一致解決
在內(nèi)存緊張、系統(tǒng)負(fù)載極高、IO 負(fù)載極高時(shí),Pod 底層容器可能出現(xiàn) dockerd 查詢到的容器狀態(tài),跟真實(shí)容器關(guān)聯(lián)進(jìn)程狀態(tài)不一致的問(wèn)題。
因?yàn)?kubelet 只跟 dockerd 通信,從 kubelet 層面,就無(wú)法感知 Pod 的真實(shí)狀態(tài)了。
Pod狀態(tài)為Running,但實(shí)際服務(wù)異常;如果刪除Pod,會(huì)長(zhǎng)期卡在Terminating
解決方案
檢測(cè)是否為BAD容器,執(zhí)行下列命令有 BAD 相關(guān)輸出
for c in `docker ps -q`; do echo $c; pc=`docker inspect $c -f "{{ .State.Pid }}"`; echo $pc; ps aux |grep -v grep | grep " $pc " || echo "BAD: container_id: $c, pid: $pc"; done | grep BAD
批量逐個(gè)清理BAD容器。默認(rèn)只會(huì)輸出要?jiǎng)h除的容器命令,復(fù)制執(zhí)行會(huì)逐個(gè)刪除
for c in `docker ps -q`; do echo $c; pc=`docker inspect $c -f "{{ .State.Pid }}"`; echo $pc; ps aux |grep -v grep | grep " $pc " || echo docker rm -f $c; done | grep 'docker rm -f'
清理全部異常容器(重啟docker)
systemctl restart docker
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Rainbond的ServiceMesh架構(gòu)組件端口沖突處理解決
這篇文章主要大家介紹了Rainbond?ServiceMesh架構(gòu)組件端口沖突處理方式,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-04-04
k8s如何使用NFS作為StorageClass提供動(dòng)態(tài)存儲(chǔ)
本文主要介紹了k8s中的StorageClass,包括其定義、引入的原因、實(shí)現(xiàn)方式、定義方法以及回收策略對(duì)數(shù)據(jù)的影響等,首先,StorageClass是在K8s集群中創(chuàng)建用于動(dòng)態(tài)PV的管理,可以鏈接至不同的后端存儲(chǔ),對(duì)存儲(chǔ)的請(qǐng)求可以指向StorageClass2024-09-09
K8S之StatefulSet有狀態(tài)服務(wù)詳解
本文主要介紹了K8S之StatefulSet有狀態(tài)服務(wù)詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07
Kubernetes 1.28.2集群安裝過(guò)程中的關(guān)鍵步驟詳解(最新推薦)
Kubernetes K8s是Google開(kāi)源的容器編排平臺(tái),最初由Borg項(xiàng)目發(fā)展而來(lái),K8s 1.28版本引入了非正常節(jié)點(diǎn)關(guān)閉恢復(fù)、內(nèi)置Sidecar容器支持、Job優(yōu)化、Proxy改進(jìn)和調(diào)度框架優(yōu)化等功能,本文介紹Kubernetes 1.28.2集群安裝過(guò)程中的關(guān)鍵步驟,感興趣的朋友一起看看吧2025-03-03

