線上集群中,業(yè)務(wù)跑著跑著,突然發(fā)現(xiàn)有個Pod上出現(xiàn)大量錯誤日志,其他的Pod是正常的,該如何處理呢? 直接刪除Pod? 這樣不便于保留現(xiàn)場,可能會影響判斷問題的根因 讓業(yè)務(wù)方忍一會,先排查下問題? 會被噴死 最好的方案是既讓Pod停止接收流量,又保留Pod 思路: 停止接收流量 停止接收流量這個動作
在線上集群中,有時候會遇到業(yè)務(wù)正常運行,但突然有一個Pod出現(xiàn)大量錯誤日志的情況,而其他Pod則正常運行。這種情況該如何處理呢?
直接刪除Pod可能會導(dǎo)致保留現(xiàn)場困難,并影響對問題根本原因的判斷。
讓業(yè)務(wù)方忍耐一會,先排查問題是否是Pod導(dǎo)致的嗎?這種方法可能會引起不滿。
最佳的解決方案是停止該Pod接收流量,并保留該Pod。
思路是:
通過修改Pod的標(biāo)簽來實現(xiàn)停止接收流量的動作。本質(zhì)上是通過將Pod從endpoint中移除,這樣無論是服務(wù)化還是http都會將當(dāng)前這個節(jié)點移除,不再轉(zhuǎn)發(fā)流量。當(dāng)然,前提是服務(wù)化和http的節(jié)點發(fā)現(xiàn)是基于k8s的endpoint來實現(xiàn)的(理論上都是這么干的,不排除有黑科技)。
首先要主動調(diào)用服務(wù)下線的方法,理論上這個調(diào)用應(yīng)該會配在Pod的prestop鉤子中,這樣在Pod被刪除時,會先調(diào)用這個方法,然后再刪除Pod。
preStop:
exec:
command:
- /bin/sh
- -c
- /bin/stop.sh
調(diào)用下線完畢后,再修改Pod的標(biāo)簽,使Pod脫離Workload的控制,變成孤兒Pod,要注意修改Pod標(biāo)簽也要讓service的selector選擇不到這個Pod,這樣Pod也就從endpoint中移除,服務(wù)發(fā)現(xiàn)也就感知不到這個節(jié)點了。
針對這種情況,可以直接將Pod的網(wǎng)絡(luò)切斷,這樣Pod就無法接收流量了。切斷方式也很簡單,直接在Pod上添加一個iptables規(guī)則,將流量全部丟棄即可。
/sbin/iptables -A INPUT -s {node_ip}/32 -j ACCEPT && // 允許節(jié)點訪問,避免kubelet liveness檢查失敗
/sbin/iptables -A OUTPUT -d {node_ip}/32 -j ACCEPT &&
/sbin/iptables -A OUTPUT -s localhost -d localhost -j ACCEPT &&
/sbin/iptables -A INPUT -s localhost -d localhost -j ACCEPT &&
/sbin/iptables -A INPUT -p tcp --tcp-flags RST RST -j ACCEPT &&
/sbin/iptables -A OUTPUT -p tcp --tcp-flags RST RST -j ACCEPT &&
/sbin/iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset &&
/sbin/iptables -A OUTPUT -p tcp -j REJECT --reject-with tcp-reset"""
小編推薦閱讀
機器學(xué)習(xí):神經(jīng)網(wǎng)絡(luò)構(gòu)建(下)
閱讀華為Mate品牌盛典:HarmonyOS NEXT加持下游戲性能得到充分釋放
閱讀實現(xiàn)對象集合與DataTable的相互轉(zhuǎn)換
閱讀算法與數(shù)據(jù)結(jié)構(gòu) 1 - 模擬
閱讀5. Spring Cloud OpenFeign 聲明式 WebService 客戶端的超詳細使用
閱讀Java代理模式:靜態(tài)代理和動態(tài)代理的對比分析
閱讀Win11筆記本“自動管理應(yīng)用的顏色”顯示規(guī)則
閱讀本站所有軟件,都由網(wǎng)友上傳,如有侵犯你的版權(quán),請發(fā)郵件[email protected]
湘ICP備2022002427號-10 湘公網(wǎng)安備:43070202000427號© 2013~2025 haote.com 好特網(wǎng)