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