集群巡檢項及解決方案
容器智能運維平臺提供定時巡檢功能。您可以設(shè)置巡檢的定時規(guī)則,定期檢查集群存在的風(fēng)險預(yù)警。本文介紹集群巡檢的常見風(fēng)險預(yù)警以及解決方案。
集群巡檢項
關(guān)于如何使用集群巡檢功能,請參見使用集群巡檢。
根據(jù)集群配置,具體巡檢項可能稍有不同。實際結(jié)果請以檢查報告結(jié)果為準。
檢查類型 | 預(yù)警風(fēng)險 |
資源配額 ResourceQuotas | |
資源水位 ResourceLevel | |
版本與證書 Versions&Certificates | |
集群風(fēng)險 ClusterRisk | |
VPC路由表條目配額緊張
異常影響:VPC內(nèi)剩余路由表條目配額少于5條。Flannel集群每個節(jié)點都會消耗一條路由表規(guī)則,當(dāng)路由表規(guī)則耗盡后,集群內(nèi)無法添加新節(jié)點。Terway集群不使用VPC路由表。
解決方案:VPC默認情況下僅支持200條路由表項。如需超過默認值,請到配額平臺提交申請擴容。關(guān)于配額限制,參見配額限制。
ECS可關(guān)聯(lián)SLB配額緊張
異常影響:檢查每個ECS實例可掛載的后端服務(wù)器組配額。ECS可關(guān)聯(lián)的SLB數(shù)量有限制。LoadBalancer類型的Service,其后端Pod所在的ECS被添加到SLB的后端。同一個ECS關(guān)聯(lián)的SLB達到上限后,其新部署的LoadBalancer類型Service的后端Pod將無法正常提供服務(wù)。
解決方案:默認情況下一個ECS實例可掛載的后端服務(wù)器組的數(shù)量為50。如需超過默認值,請到配額平臺提交申請擴容。關(guān)于配額限制,參見配額限制。關(guān)于負載均衡注意事項,請參見Service的負載均衡配置注意事項。
SLB后端服務(wù)器配額緊張
異常影響:檢查SLB實例可以掛載后端服務(wù)器配額。SLB后端可掛載的ECS數(shù)量有限制。當(dāng)LoadBalancer類型的Service規(guī)模較大時,Pod分布在多個ECS上,當(dāng)ECS數(shù)量超過SLB后端可掛載的ECS數(shù)量限制時,超出部分的ECS將無法配置到SLB上。
解決方案:默認情況下一個SLB實例可以掛載200個后端服務(wù)器。如需超過默認值,請到配額平臺提交申請擴容。關(guān)于配額限制,參見配額限制。關(guān)于負載均衡注意事項,請參見Service的負載均衡配置注意事項。
SLB可監(jiān)聽數(shù)配額緊張
異常影響:檢查SLB實例監(jiān)聽數(shù)。SLB可配置的監(jiān)聽數(shù)量有限,每個LoadBalancer類型的Service,其監(jiān)聽的每個端口對應(yīng)一個SLB的監(jiān)聽。當(dāng)端口數(shù)達到SLB監(jiān)聽上限時,超出部分的端口將無法正常提供服務(wù)。
解決方案:默認情況下一個SLB實例可以添加50個監(jiān)聽。如需超過默認值,請到配額平臺提交申請擴容。關(guān)于配額限制,參見配額限制。關(guān)于負載均衡注意事項,請參見Service的負載均衡配置注意事項。
SLB實例數(shù)配額緊張
異常影響:檢查SLB實例剩余配額是否小于5個。每個LoadBalancer類型的Kubernetes Service創(chuàng)建一個SLB實例,SLB配額耗盡后,新創(chuàng)建的LoadBalancer類型Service無法正常工作。
解決方案:默認情況下一個用戶可以保留60個SLB實例,如需超過默認值,請到配額平臺提交申請擴容。關(guān)于負載均衡注意事項,請參見Service的負載均衡配置注意事項。
SLB帶寬使用率過高
異常影響:檢查SLB過去三天網(wǎng)絡(luò)流出帶寬的最大值是否達到上限的80%以上。當(dāng)帶寬達到上限后,可能產(chǎn)生SLB上的丟包,導(dǎo)致請求抖動、延遲。
解決方案:若SLB實例網(wǎng)絡(luò)帶寬使用率過高,您需要提升實例規(guī)格。具體操作,請參見使用指定的SLB實例。
SLB最大連接數(shù)過高
異常影響:檢查SLB過去三天最大連接數(shù)是否達到上限的80%以上。當(dāng)連接數(shù)達到上限后,短時間內(nèi)無法建立新連接,導(dǎo)致客戶端無法訪問。
解決方案:若過去三天內(nèi)SLB實例連接數(shù)過高,達到最大連接數(shù)的80%。超過SLB連接數(shù)最大值會導(dǎo)致客戶端無法訪問。為避免業(yè)務(wù)受損,您需要提升實例規(guī)格。具體操作,請參見使用指定的SLB實例。
SLB新建連接速率過高
異常影響:檢查SLB過去三天最大新建連接速率是否達到上限的80%以上。當(dāng)新建連接速率達到上限后,短時間內(nèi)無法建立新連接,導(dǎo)致客戶端無法訪問。
解決方案:若過去三天內(nèi)SLB實例新建連接速率過高,達到每秒最大新建連接數(shù)的80%。新建連接數(shù)達到SLB每秒最大新建連接數(shù)的最大值會導(dǎo)致客戶端無法訪問。為避免業(yè)務(wù)受損,您需要提升實例規(guī)格。具體操作,請參見使用指定的SLB實例。
SLB QPS過高
異常影響:檢查SLB過去三天最大QPS是否達到上限的80%以上。當(dāng)QPS達到上限后,可能導(dǎo)致客戶端無法訪問。
解決方案:若過去三天內(nèi)SLB實例QPS過高,達到最大QPS的80%。超過SLB QPS最大值會導(dǎo)致客戶端無法訪問。為避免業(yè)務(wù)受損,您需要提升實例規(guī)格。具體操作,請參見使用指定的SLB實例。
集群Pod網(wǎng)段余量緊張
異常影響:檢查Flannel集群剩余可用PodCIDR網(wǎng)段是否少于5個。每個節(jié)點消耗一個PodCIDR網(wǎng)段,集群可添加的節(jié)點少于5個。Pod網(wǎng)段耗盡后,新添加的節(jié)點將無法正常工作。
解決方案:請您提交工單處理。
節(jié)點CPU水位過高
異常影響:檢查節(jié)點過去一周內(nèi)節(jié)點CPU使用率。節(jié)點CPU水位過高時,如果部署較多Pod會導(dǎo)致資源爭搶,可能會影響業(yè)務(wù)的正常運行。
解決方案:為避免業(yè)務(wù)受損,您需要設(shè)置合理的Pod request和limit,避免一個節(jié)點上運行的Pod過多。具體操作,請參見設(shè)置容器的CPU和內(nèi)存資源上下限。
節(jié)點內(nèi)存水位過高
異常影響:檢查節(jié)點過去一周內(nèi)節(jié)點內(nèi)存使用率。節(jié)點內(nèi)存水位過高時如部署較多Pod會導(dǎo)致資源爭搶,可能導(dǎo)致OOM(Out of Memory),影響部分業(yè)務(wù)的正常運行。
解決方案:為避免業(yè)務(wù)受損,您需要設(shè)置合理的Pod request和limit,避免一個節(jié)點上運行的Pod過多。具體操作,請參見設(shè)置容器的CPU和內(nèi)存資源上下限。
vSwitch剩余IP不足
異常影響:檢查Terway集群內(nèi)配置的vSwitch剩余IP是否小于10個,每個Pod占用一個IP。當(dāng)可用IP耗盡后,新創(chuàng)建的Pod分配不到IP,所以無法正常啟動。
解決方案:您需要盡快擴容或更換vSwitch。具體操作,請參見容器服務(wù)Kubernetes的Terway網(wǎng)絡(luò)場景中交換機的IP資源不足。
Ingress Controller SLB新建連接速率檢查
異常影響:檢查SLB過去三天最大新建連接速率是否達到上限的80%。新建連接速率達到上限后,短時間內(nèi)無法建立新連接,可能導(dǎo)致客戶端無法訪問。
解決方案:SLB實例新建連接速率過高,為避免業(yè)務(wù)受損,您需要提升實例規(guī)格。具體操作,請參見使用指定的SLB實例。
Ingress Controller SLB QPS檢查
異常影響:檢查SLB過去三天最大QPS是否達到上限的80%。QPS達到上限后,可能導(dǎo)致客戶端無法訪問。
解決方案:SLB實例QPS過高,為避免業(yè)務(wù)受損,您需要提升實例規(guī)格。具體操作,請參見使用指定的SLB實例。
集群控制面vSwitch剩余IP
異常影響:集群控制面的vSwitch剩余IP小于10個,新創(chuàng)建的Pod可能將分配不到IP無法正常啟動。
解決方案:請提交工單處理。
集群版本過低
異常影響:集群版本即將或者已經(jīng)超出支持期限。ACK僅保障支持最近三個Kubernetes版本的穩(wěn)定運行。過期版本的集群存在運行不穩(wěn)定和集群升級失敗的風(fēng)險。關(guān)于ACK版本機制和Kubernetes版本發(fā)布記錄,請參見Kubernetes版本概覽及機制。
解決方案:若集群版本即將或者已經(jīng)超出支持期限,請您盡快升級集群。具體操作,請參見升級集群和獨立升級集群控制面和節(jié)點池。
CoreDNS版本過低
異常影響:集群內(nèi)CoreDNS組件版本過低,會導(dǎo)致業(yè)務(wù)出現(xiàn)DNS解析問題。最新版的CoreDNS提供了更好的穩(wěn)定性配置和新的功能。
解決方案:為避免業(yè)務(wù)出現(xiàn)DNS解析問題,您需要盡快升級CoreDNS 。具體操作,請參見CoreDNS手動升級。
節(jié)點Systemd版本過低
異常影響:Systemd版本過低存在已知的穩(wěn)定性風(fēng)險,會導(dǎo)致Docker和Containerd等組件無法正常運行。
解決方案:關(guān)于Systemd版本過低的解決方案,請參見Kubernetes集群使用CentOS 7.6系統(tǒng)時kubelet日志含有“Reason:KubeletNotReady Message:PLEG is not healthy:”信息。
節(jié)點OS版本過低
異常影響:操作系統(tǒng)版本過低,存在已知的穩(wěn)定性風(fēng)險,會導(dǎo)致Docker/containerd等組件無法正常運行。
解決方案:您可以創(chuàng)建一個新的節(jié)點池,所有節(jié)點逐步輪轉(zhuǎn)到新的節(jié)點池上。具體操作,請參見創(chuàng)建節(jié)點池。
集群組件更新檢查
異常影響:檢查集群中關(guān)鍵組件是否需要更新版本。
解決方案:您的集群中部分組件需要盡快更新版本,您可以在容器服務(wù)控制臺升級相關(guān)組件。
節(jié)點Docker Hang
異常影響:節(jié)點上發(fā)生Docker Hang,Docker已經(jīng)無法正常運行。
解決方案:您需要登錄節(jié)點,執(zhí)行命令sudo systemctl restart docker
,重啟Docker。具體操作,請參見Dockerd異常處理-RuntimeOffline。
節(jié)點最大Pod數(shù)設(shè)置檢查
異常影響:檢查節(jié)點最大Pod數(shù)設(shè)置與理論上限是否一致。
解決方案:節(jié)點最大Pod數(shù)設(shè)置與理論上限不一致。如果您從未修改該值,請提交工單處理。
CoreDNS ConfigMap配置
異常影響:檢查CoreDNS ConfigMap配置是否異常,異常配置將會影響組件正常運行。
解決方案:請檢查CoreDNS ConfigMap配置。更多信息,請參見DNS最佳實踐。
CoreDNS部署位置
異常影響:檢查CoreDNS實例是否部署在Master節(jié)點上,CoreDNS運行在Master節(jié)點上可能導(dǎo)致Master帶寬過高,影響控制面正常運行。
解決方案:請將CoreDNS副本部署到Worker節(jié)點上。具體操作,請參見DNS解析異常問題排查。
CoreDNS節(jié)點高可用
異常影響:檢查CoreDNS實例部署形態(tài),CoreDNS多個實例部署在同一節(jié)點上存在單點故障的風(fēng)險,當(dāng)節(jié)點出現(xiàn)故障、重啟時CoreDNS將無法提供服務(wù),影響業(yè)務(wù)正常運行。
解決方案:請將CoreDNS副本部署到不同的節(jié)點上。具體操作,請參見DNS解析異常問題排查。
DNS服務(wù)后端的服務(wù)端點
異常影響:檢查集群DNS服務(wù)關(guān)聯(lián)的后端DNS服務(wù)器數(shù),如果為0,DNS服務(wù)將無法使用。
解決方案:檢查CoreDNS Pod運行狀態(tài)和運行日志,排查DNS問題。具體操作,請參見DNS解析異常問題排查。
DNS服務(wù)的ClusterIP檢查
異常影響:檢查集群DNS服務(wù)的Cluster IP是否正常分配,集群DNS服務(wù)異常會造成集群功能異常,影響業(yè)務(wù)。
解決方案:檢查CoreDNS Pod運行狀態(tài)和運行日志,排查DNS問題。具體操作,請參見DNS解析異常問題排查。
集群NAT網(wǎng)關(guān)狀態(tài)
異常影響:檢查集群NAT網(wǎng)關(guān)狀態(tài)。
解決方案:請登錄NAT網(wǎng)關(guān)管理控制臺檢查集群的NAT網(wǎng)關(guān)是否處于欠費鎖定狀態(tài),及時處理。
集群NAT網(wǎng)關(guān)并發(fā)超規(guī)格丟棄速率
異常影響:檢查NAT網(wǎng)關(guān)會話并發(fā)超規(guī)格丟棄速率是否過高。
解決方案:若集群NAT網(wǎng)關(guān)會話并發(fā)超規(guī)格丟棄速率過高,請嘗試通過升級NAT網(wǎng)關(guān)的規(guī)格解決,具體操作,請參見普通型公網(wǎng)NAT網(wǎng)關(guān)升級至增強型公網(wǎng)NAT網(wǎng)關(guān)FAQ。
NodeLocal DNSCache DNS配置自動注入
異常影響:檢查NodeLocal DNSCache DNS配置自動注入是否開啟。NodeLocal DNSCache只會在注入DNS配置后生效,如果沒有開啟自動注入,DNS緩存能力可能處于尚未生效狀態(tài)。
解決方案:開啟NodeLocal DNSCache DNS配置自動注入。具體操作,請參見使用NodeLocal DNSCache。
API Server SLB訪問控制配置
異常影響:檢查集群API Server SLB 訪問控制配置是否正確。即集群API Server負載均衡訪問控制是否放開集群VPC網(wǎng)段及100.104.0.0/16,訪問控制配置錯誤會造成集群不可用。
解決方案:請檢查API Server SLB訪問控制并及時調(diào)整。
API Server SLB實例后端狀態(tài)
異常影響:檢查ACK專有集群的API Server SLB實例后端狀態(tài)。ACK專有集群中API Server負載均衡實例后端需包含Master節(jié)點機器,否則會造成流量轉(zhuǎn)發(fā)異常。
解決方案:請調(diào)整負載均衡實例轉(zhuǎn)發(fā)配置,將其加入Master節(jié)點機器。
API Server SLB 6443端口監(jiān)聽配置
異常影響:檢查集群API Server SLB 6443端口監(jiān)聽配置。若配置異常,將導(dǎo)致集群無法訪問。
解決方案:集群API Server負載均衡實例6443端口監(jiān)聽配置異常,請調(diào)整負載均衡實例監(jiān)聽設(shè)置,恢復(fù)至集群創(chuàng)建時狀態(tài)。
API Server SLB實例
異常影響:檢查集群API Server負載均衡實例是否存在。若集群API Server負載均衡實例不存在,會造成集群不可用。
解決方案:請檢查負載均衡實例是否存在,如果確認誤刪除,請提交工單處理。
API Server SLB實例狀態(tài)
異常影響:檢查集群API Server SLB實例狀態(tài)。若實例狀態(tài)異常,將會影響集群可用性。
解決方案:請檢查負載均衡實例狀態(tài)是否正常。
Ingress Controller SLB健康檢查失敗檢查
異常影響:檢查SLB過去三天是否存在健康檢查失敗的情況,可能由于組件負載過高或配置錯誤引起。
解決方案:若過去三天內(nèi)存在健康檢查失敗。為避免業(yè)務(wù)受損,請檢查Ingress Controller Service有無異常事件,組件負載是否過高。關(guān)于異常問題排查,請參見Nginx Ingress異常問題排查。
Ingress就緒Pod百分比
異常影響:檢查Ingress Deployment已就緒的Pod百分比,小于100表明Ingress Pod可能出現(xiàn)問題,無法正常啟動或健康檢查失敗。
解決方案:通過Pod診斷或Ingress異常排查文檔查找問題Pod。關(guān)于異常問題排查,請參見Nginx Ingress異常問題排查。
Ingress Controller Pod錯誤日志
異常影響:檢查Ingress Controller Pod中是否存在錯誤日志。出現(xiàn)錯誤日志,表示Ingress Controller可能工作異常。
解決方案:根據(jù)錯誤日志,查找原因并修復(fù)問題。關(guān)于異常問題排查,請參見Nginx Ingress異常問題排查。
Nginx Ingress中rewrite-target配合捕獲組使用
異常影響:檢查使用了rewrite-target的Nginx Ingress規(guī)則是否與捕獲組一起使用。在0.22.0及以上的Ingress Controller版本中使用rewrite-target時,需要顯式指定捕獲組,否則會造成流量轉(zhuǎn)發(fā)異常。
解決方案:請重新配置規(guī)則。具體操作,請參見Nginx Ingress高級用法。
Nginx Ingress灰度規(guī)則
異常影響:檢查service-match和service-weight是否指定不超過2個的目標服務(wù)。service-match和service-weight目前僅支持2個服務(wù)間的流量分發(fā),配置大于2個將導(dǎo)致多出的配置被忽略,出現(xiàn)流量不符合預(yù)期的情況。
解決方案:請調(diào)整規(guī)則中服務(wù)的數(shù)量。
Nginx Ingress使用正確的Annotation
異常影響:檢查社區(qū)版Nginx Ingress Controller是否使用nginx.ingress.kubernetes.io
開頭的Annotation,而不是以nginx.com/nginx.org
開頭。使用nginx.com/nginx.org
開頭的Annotation,將無法被Nginx Ingress Controller識別,造成配置無效或不符合預(yù)期的情況。
解決方案:請選擇所需功能的Annotation使用。關(guān)于Annotation更多信息,請參見阿里云官方文檔或社區(qū)文檔。
廢棄組件檢查
異常影響:檢查集群是否安裝使用已經(jīng)廢棄的組件。
解決方案:請檢查您的集群中是否安裝或正在使用alicloud-application-controller組件,該組件目前已經(jīng)下線且停止維護,安裝或使用該組件可能會影響集群升級和正常使用。請盡快卸載已經(jīng)廢棄的組件。具體操作,請參見管理組件。
集群API Server連接狀態(tài)
異常影響:檢查節(jié)點能否正常連接集群API Server。
解決方案:請檢查集群相關(guān)配置。具體操作,請參見容器服務(wù)ACK集群故障排查。
節(jié)點Pod網(wǎng)段VPC路由表條目檢查
異常影響:檢查節(jié)點的Pod網(wǎng)段是否在VPC的路由表中。
解決方案:若節(jié)點Pod網(wǎng)段不在VPC路由表條目中,請?zhí)砑覲od網(wǎng)段的下一跳路由到當(dāng)前節(jié)點。具體操作,請參見添加自定義路由條目到自定義路由表。
節(jié)點文件系統(tǒng)只讀狀態(tài)
異常影響:節(jié)點出現(xiàn)文件系統(tǒng)只讀,通常是因為磁盤故障,可能導(dǎo)致節(jié)點無法寫入數(shù)據(jù),造成業(yè)務(wù)異常。
解決方案:請嘗試在節(jié)點上使用fsck
命令修復(fù)文件系統(tǒng),然后重啟節(jié)點。
節(jié)點kubelet組件版本
異常影響:檢查節(jié)點kubelet組件版本是否低于控制面版本。
解決方案:若您的集群中節(jié)點kubelet組件版本低于控制面版本,為避免可能的穩(wěn)定性問題,建議您手動移除該節(jié)點。更多信息,請參見相關(guān)功能及自定義配置說明。
節(jié)點安全組出方向規(guī)則檢查
異常影響:檢查節(jié)點安全組出方向規(guī)則是否滿足集群訪問權(quán)限需求。
解決方案:若節(jié)點安全組出方向規(guī)則不滿足集群訪問權(quán)限需求,請調(diào)整出方向安全組規(guī)則。具體操作,請配置集群安全組。
節(jié)點安全組入方向規(guī)則檢查
異常影響:檢查節(jié)點安全組入方向規(guī)則是否滿足集群訪問權(quán)限需求。
解決方案:若節(jié)點安全組入方向規(guī)則不滿足集群訪問權(quán)限需求,請調(diào)整入方向安全組規(guī)則。具體操作,請配置集群安全組。
節(jié)點公網(wǎng)訪問情況
異常影響:檢查節(jié)點能否正常訪問公網(wǎng)。
解決方案:請檢查集群是否開啟SNAT公網(wǎng)訪問。關(guān)于開啟SNAT公網(wǎng)相關(guān)操作,請參見為已有集群開啟公網(wǎng)訪問能力。
檢查是否存在多個Service復(fù)用同一個SLB同一個端口
異常影響:如果多個Service復(fù)用同一個SLB的同一個端口,會導(dǎo)致服務(wù)異常。
解決方案:請修改或刪除沖突的Service,確保多個Service復(fù)用同一個SLB時使用不同的端口。