記一次K8s異常處理
一 背景
收到測(cè)試環(huán)境集群告警,登陸K8s集群進(jìn)行。
二 故障定位
2.1 查看pod
查看kube-system node2節(jié)點(diǎn)calico pod異常
查看詳細(xì)信息,查看node2節(jié)點(diǎn)沒(méi)有存儲(chǔ)空間,cgroup泄露
2.2 查看存儲(chǔ)
登陸node2查看服務(wù)器存儲(chǔ)信息,目前空間還很充足
集群使用到的分布式存儲(chǔ)為ceph,因此查看ceph集群狀態(tài)
三 操作
3.1 ceph修復(fù)
目前查看到ceph集群異常,可能導(dǎo)致node2節(jié)點(diǎn)cgroup泄露異常,進(jìn)行手動(dòng)修復(fù)ceph集群。
數(shù)據(jù)的不一致性(inconsistent)指對(duì)象的大小不正確、恢復(fù)結(jié)束后某副本出現(xiàn)了對(duì)象丟失的情況。數(shù)據(jù)的不一致性會(huì)導(dǎo)致清理失敗(scrub error)。 CEPH在存儲(chǔ)的過(guò)程中,由于特殊原因,可能遇到對(duì)象信息大小和物理磁盤(pán)上實(shí)際大小數(shù)據(jù)不一致的情況,這也會(huì)導(dǎo)致清理失敗。
由圖可知,pg編號(hào)1.7c 存在問(wèn)題,進(jìn)行修復(fù)。
pg修復(fù)
ceph pg repair 1.7c
進(jìn)行修復(fù)后,稍等一會(huì),再次進(jìn)行查看,ceph集群已經(jīng)修復(fù)
3.2 進(jìn)行pod修復(fù)
對(duì)異常pod進(jìn)行刪除,由于有控制器,會(huì)重新拉起最新的pod
查看pod還是和之前一樣,分析可能由于ceph異常,導(dǎo)致node2節(jié)點(diǎn)cgroup泄露,網(wǎng)上檢索重新編譯
Google一番后發(fā)現(xiàn)與https://github.com/rootsongjc/Kubernetes-handbook/issues/313 這個(gè)同學(xué)的問(wèn)題基本一致。
存在的可能有,
Kubelet 宿主機(jī)的 Linux 內(nèi)核過(guò)低 - Linux version 3.10.0-862.el7.x86_64
可以通過(guò)禁用kmem解決
查看系統(tǒng)內(nèi)核卻是低版本
3.3 故障再次定位
最后,因?yàn)樵趩?dòng)容器的時(shí)候runc的邏輯會(huì)默認(rèn)打開(kāi)容器的kmem accounting,導(dǎo)致3.10內(nèi)核可能的泄漏問(wèn)題
在此需要對(duì)no space left的服務(wù)器進(jìn)行 reboot重啟,即可解決問(wèn)題,出現(xiàn)問(wèn)題的可能為段時(shí)間內(nèi)刪除大量的pod所致。
初步思路,可以在今后的集群管理匯總,對(duì)服務(wù)器進(jìn)行維修,通過(guò)刪除節(jié)點(diǎn),并對(duì)節(jié)點(diǎn)進(jìn)行reboot處理
3.4 對(duì)node2節(jié)點(diǎn)進(jìn)行維護(hù)
3.4.1 標(biāo)記node2為不可調(diào)度
kubectl cordon node02
3.4.2 驅(qū)逐node2節(jié)點(diǎn)上的pod
kubectl drain node02 --delete-local-data --ignore-daemonsets --force
–delete-local-data 刪除本地?cái)?shù)據(jù),即使emptyDir也將刪除;
–ignore-daemonsets 忽略DeamonSet,否則DeamonSet被刪除后,仍會(huì)自動(dòng)重建;
–force 不加force參數(shù)只會(huì)刪除該node節(jié)點(diǎn)上的ReplicationController, ReplicaSet, DaemonSet,StatefulSet or Job,加上后所有pod都將刪除;
目前查看基本node2的pod均已剔除完畢
此時(shí)與默認(rèn)遷移不同的是,pod會(huì)先重建再終止,此時(shí)的服務(wù)中斷時(shí)間=重建時(shí)間+服務(wù)啟動(dòng)時(shí)間+readiness探針檢測(cè)正常時(shí)間,必須等到1/1 Running服務(wù)才會(huì)正常。因此在單副本時(shí)遷移時(shí),服務(wù)終端是不可避免的。
3.4.3 對(duì)node02進(jìn)行重啟
重啟后node02已經(jīng)修復(fù)完成。
對(duì)node02進(jìn)行恢復(fù)
恢復(fù)node02可以正常調(diào)度
kubectl uncordon node02
四 反思
后期可以對(duì)部署k8s 集群內(nèi)核進(jìn)行升級(jí)。
集群內(nèi)可能pod的異常,由于底層存儲(chǔ)或者其他原因?qū)е拢枰唧w定位到問(wèn)題進(jìn)行針對(duì)性修復(fù)。
參考鏈接
https://blog.csdn.net/yanggd1987/article/details/108139436
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。