天天看點

k8s node節點異常下線問題排查處理(container runtime is down)

作者:JAVA互聯搬磚勞工

背景

使用的阿裡雲的k8s(ack),node節點資源充足,無任何壓力,但是會偶爾收到node節點下線的告警,以下是相關告警

k8s node節點異常下線問題排查處理(container runtime is down)

檢查主機的kubelet 日志發現報如下錯誤:container runtime is down

k8s node節點異常下線問題排查處理(container runtime is down)

問題定位

  1. 初步懷疑是docker inspec導緻,檢查docker運作無異常,并打開docker debug日志,發現在故障起降docker 正常運作且在列印日志,像這種日志都是docker inspect接口的日志資訊,表示當時容器的狀态檢查都是ok的
json複制代碼May 23 07:26:17 iZuf645tftc9680n2pp6s4Z dockerd: time="2023-05-23T07:26:17.707770704+08:00" level=debug msg="Calling GET /v1.40/containers/139f10487e85/json"
           
k8s node節點異常下線問題排查處理(container runtime is down)

2. 檢查message日志,發現故障時間段,kubelet不列印日志,懷疑kubelet在那段時間夯住.

grep -1000 "iZuf645tftc9680n2pp6s4Z kubelet: I0523 07:26:18.744911 3708450 setters.go:577" /var/log/messages | less

k8s node節點異常下線問題排查處理(container runtime is down)

3.于是檢查主機的kubelet程序資源使用情況,發現報警時間段,kubelet程序會出現毛刺

k8s node節點異常下線問題排查處理(container runtime is down)
  1. 通過kubelet出現毛刺,懷疑node節點有程序定時執行導緻了節點性能抖動幹擾了kubelet,如qaxsafe等軟體,通過排查發現确實了安裝此軟體
k8s node節點異常下線問題排查處理(container runtime is down)

問題修複

修改方式有以下兩種,都是可以解決此問題,推薦第二種

  1. 解除安裝node節點上qaxsafe軟體(方式1)
k8s node節點異常下線問題排查處理(container runtime is down)

2. 對kubelet相關程序和檔案夾進行加白處理,讓qaxsafe不進行掃描(方式2)

bash複制代碼/var/lib/kubelet 目錄
/usr/bin/kubelet 程序
/etc/kubernetes  目錄

/var/run/docker  目錄
/var/lib/containerd 目錄
/run/containerd 目錄
/usr/bin/dockerd 程序
           

總結

此問題我們和阿裡雲工程師排查了有二周時間有餘,包括分析k8s源碼,懷疑docker運作時版本、網絡不穩定、k8s版本等問題,但是最終發現是由以上問題導緻。

k8s的還是比較複雜的,是以要對其原理有一定掌握并且有比較強技術團隊做支撐,在決定上不上k8s,不要一味追尋新技術,适合自己最好。

參考

plpan.github.io/docker-hang…

# 一次單節點單個pod網絡問題排查過程

以下是常見的一些可能會導緻kubelet程序夯住的一些程序,供大家參考

bash複制代碼ds_agent  # 查下 agent 關鍵字
qaxsafed  # 奇安信,查下 qax 看看有沒有其他的
secdog    # 也查下 dog 和 sec
sangfor_watchdog # 這個不影響,但是有它基本是深信服的虛拟化環境,會和flannel的8472端口沖突
YDservice
Symantec
start360su_safed   # 推薦 ps aux | grep safe 先查下
gov_defence_service
gov_defence_guard      #  ps aux | grep defence 
wsssr_defence_daemon   # 奇安信伺服器安全加強系統,和下面是一起的。目前遇到過影響 socat 運作和容器程序通路另一個機器上的mysql端口
wsssr_defence_service
wsssr_defence_agent   # 影響pod網絡
ics_agent

/sdata/sbin/{sdatad,srepd,rpcserver,sdatalogd,I2Availability,i2monitor,HaDetector,collector} #容器無法啟動,各種資源不可用的錯誤, # ps aux | grep '/sdat[a]/'

/opt/nubosh/vmsec-host/intedrity/bin/icsintedrity # docker -p 的都無法通路
/opt/nubosh/vmsec-host/file/bin/icsfilesec

service360safe(360entclient)  # 導緻相關操作操作緩慢,apiserver etcdctl初始化逾時, 使用systemctl stop service360safe停止此服務

edr_sec_plan   # ps aux | grep edr , 深信服的 edr,這個會下發 iptables 規則,配置錯了會影響 node 之間,以及 pod 和 pod 之間通信
titanagent     # 青藤雲安全軟體
# dynarose的安全軟體,影響 docker 和 pod 的容器通信
ps -aux | grep -E 'blocklogc|collectclient|fwclient|identity|nodeclient|subconnc|subdomainc|sddog|sdc[c]' 
# 卡巴斯基,影響容器通信 systemctl disable --now kesl
ps aux | grep -E 'kaspersky|klnagent'
           

作者:dweizhao

連結:https://juejin.cn/post/7244707530457808933

繼續閱讀