Ingress診斷
容器計(jì)算服務(wù)平臺(tái)提供Ingress診斷功能,幫助您診斷Ingress常見問題。本文介紹Ingress診斷對(duì)應(yīng)的檢查項(xiàng)以及修復(fù)方案。
Ingress診斷包括Ingress檢查、啟動(dòng)參數(shù)配置、Ingress Pod錯(cuò)誤日志、Ingress Controller SLB等檢查項(xiàng)。
使用故障診斷功能時(shí),系統(tǒng)將在您的集群節(jié)點(diǎn)上執(zhí)行數(shù)據(jù)采集程序并收集檢查結(jié)果。采集的信息包括系統(tǒng)版本,負(fù)載、容器組件等運(yùn)行狀態(tài)及系統(tǒng)日志中關(guān)鍵錯(cuò)誤信息。數(shù)據(jù)采集程序不會(huì)采集您的業(yè)務(wù)信息及敏感數(shù)據(jù)。
Ingress診斷對(duì)應(yīng)的檢查項(xiàng)
根據(jù)集群配置,具體檢查項(xiàng)可能稍有不同。實(shí)際結(jié)果請(qǐng)以診斷頁面結(jié)果為準(zhǔn)。
診斷項(xiàng)分組 | 說明 |
檢查集群Ingress資源可用性等。 | |
檢查Ingress組件啟動(dòng)參數(shù)配置、Ingress Service及Pod等。 | |
檢查Ingress Controller SLB狀態(tài)、最大連接數(shù)、QPS、健康檢查等。 |
Ingress
檢查項(xiàng) | 檢查項(xiàng)說明 | 修復(fù)方案 |
Ingress存在 | 檢查是否通過提供的信息找到了對(duì)應(yīng)的Ingress資源。 | 檢查所提供的URL信息是否有能夠?qū)?yīng)的Ingress規(guī)則。若URL信息無誤,可能是Ingress規(guī)則存在問題,例如,使用了正則表達(dá)式作路徑,而沒有使用use-regex注解等。 |
使用base-url-scheme | 使用了 | 確認(rèn)當(dāng)前Ingress Controller版本,移除該注解或使用其他注解代替。 |
使用grpc-backend | 使用了 | 確認(rèn)當(dāng)前Ingress Controller版本,移除該注解或使用其他注解代替。 |
使用mirror-uri | 使用了 | 確認(rèn)當(dāng)前Ingress Controller版本,移除該注解或使用其他注解代替。 |
使用secure-backends | 使用了 | 確認(rèn)當(dāng)前Ingress Controller版本,移除該注解或使用其他注解代替。 |
使用session-cookie-hash | 使用了 | 確認(rèn)當(dāng)前Ingress Controller版本,移除該注解或使用其他注解代替。 |
使用nginx.com/nginx.org注解 | 檢查Ingress上是否使用了商業(yè)版Ingress的注解配置(以 | 請(qǐng)使用對(duì)應(yīng)功能的正確用法。關(guān)于Ingress更多信息,請(qǐng)參見Nginx Ingress管理或社區(qū)官方文檔Nginx Ingress Controller。 |
啟用Canary | 當(dāng)使用Canary相關(guān)功能時(shí),需要指定 | 如果您需要在該Ingress上開啟Canary功能,請(qǐng)?jiān)贗ngress規(guī)則上添加 |
Addon
檢查項(xiàng)名稱 | 檢查項(xiàng)說明 | 修復(fù)方案 |
Ingress就緒Pod百分比 | Ingress Deployment已就緒的Pod百分比,此值小于100表明Ingress Pod可能出現(xiàn)問題導(dǎo)致啟動(dòng)或健康檢查失敗。 | 請(qǐng)根據(jù)錯(cuò)誤日志查找問題Pod并修復(fù)。關(guān)于Ingress異常問題排查,請(qǐng)參見Nginx Ingress異常問題排查。 |
Ingress資源上存在地址 | 檢查Ingress資源被Ingress Controller成功更新了地址。 | 該值不存在時(shí),檢查Ingress的IngressClass是否存在對(duì)應(yīng)的Ingress Controller,以及Controller是否正常工作。具體問題可查看其他檢查點(diǎn)的檢查結(jié)果。 |
Leader Pod存在 | 選主成功,存在Leader Pod。若該值不存在,可能是由于Pod啟動(dòng)時(shí)間過短或Ingress Controller權(quán)限配置問題導(dǎo)致。 | 檢查Ingress Pod是否存在錯(cuò)誤日志,并修復(fù)日志問題。關(guān)于Ingress異常問題排查,請(qǐng)參見Nginx Ingress異常問題排查。 |
Nginx Ingress使用正確的Annotation | 社區(qū)版Nginx Ingress Controller使用 | 請(qǐng)?jiān)O(shè)置正確的Annotation。關(guān)于Annotation更多信息,請(qǐng)參見Annotations。 |
Nginx Ingress中rewrite-target配合捕獲組使用 | 檢查使用了rewrite-target的Nginx Ingress規(guī)則是否與捕獲組一起使用。在0.22.0及以上版本使用rewrite-target時(shí),需要顯式指定捕獲組,否則會(huì)造成流量轉(zhuǎn)發(fā)異常。 | 請(qǐng)正確配置Ingress。關(guān)于Ingress配置更多信息,請(qǐng)參見Nginx Ingress高級(jí)用法。 |
Nginx Ingress灰度規(guī)則 | 檢查service-match和service-weight是否指定不超過2個(gè)目標(biāo)服務(wù)。service-match和service-weight僅支持2個(gè)服務(wù)間的流量分發(fā),配置大于2個(gè)將導(dǎo)致多出的配置被忽略,出現(xiàn)流量不符合預(yù)期的情況。 | 請(qǐng)調(diào)整規(guī)則中的服務(wù)數(shù)量。 |
Ingress名稱 | 展示所匹配到的Ingress規(guī)則名稱。 | 無。 |
Pod錯(cuò)誤日志 | Ingress Controller Pod中存在錯(cuò)誤日志。出現(xiàn)錯(cuò)誤日志可能表示Ingress Controller工作異常。 | 根據(jù)錯(cuò)誤日志查找原因并修復(fù)。關(guān)于Ingress異常問題排查,請(qǐng)參見Nginx Ingress異常問題排查。 |
使用rewrite-target時(shí)路徑中使用捕獲組 | 在0.22.0及以上版本時(shí),使用 | 請(qǐng)正確配置Ingress信息。有關(guān)Ingress更多信息,請(qǐng)參見配置URL重定向的路由服務(wù)。 |
service-*配置多個(gè)目標(biāo) | service-weight和service-weight僅支持2個(gè)服務(wù)之間的流量分發(fā),不支持3個(gè)及以上的服務(wù)。 | 請(qǐng)正確配置service-weight或service-match。有關(guān)配置更多信息,請(qǐng)參見通過Nginx Ingress實(shí)現(xiàn)灰度發(fā)布和藍(lán)綠發(fā)布。 |
Ingress Service存在 | Ingress啟動(dòng)參數(shù)中指定的Service是否存在。該Service被刪除可能會(huì)導(dǎo)致Ingress啟動(dòng)異常等情況。 | 在Deployment啟動(dòng)參數(shù)中確認(rèn)被刪除的Service名稱,并修復(fù)問題。更多信息,請(qǐng)參見網(wǎng)絡(luò)與負(fù)載均衡相關(guān)高危操作。 |
Ingress Service存在端點(diǎn) | Ingress Service正確存在端點(diǎn)。若不存在,會(huì)導(dǎo)致SLB無法正常將流量轉(zhuǎn)發(fā)到Ingress Controller中。 | 檢查Service的標(biāo)簽選擇器是否正常。 |
Ingress Service存在事件 | Ingress Service上存在Warning或Error事件。可能是由于SLB配置出現(xiàn)問題導(dǎo)致的。 | 檢查Service異常事件,查找原因并修復(fù)問題。有關(guān)Service異常問題排查,請(qǐng)參見Service異常事件及處理方式。 |
Ingress Service外部流量策略 | 外部流量策略影響流量進(jìn)入集群后的分發(fā)方式。默認(rèn)為L(zhǎng)ocal,可以更改為Cluster。推薦使用Local模式,在不使用Local模式時(shí),客戶端源IP可能無法正常保留,且會(huì)導(dǎo)致SLB健康檢查不準(zhǔn)確。 | 若您確認(rèn)要使用Cluster模式或有集群內(nèi)部通過SLB地址訪問Ingress Controller的需求,請(qǐng)忽略該警告。否則,推薦將外部流量策略改為L(zhǎng)ocal。 |
Ingress Service有外部IP地址 | Service上有通過CCM(Cloud Controller Manager)分配的IP地址。若不存在該地址,可能導(dǎo)致Ingress無法通過公網(wǎng)訪問。 | 檢查Service狀態(tài)、CCM狀態(tài)、SLB配額等指標(biāo)是否正常。大部分問題通過事件的形式暴露。 |
Ingress Service為L(zhǎng)oadBalancer類型 | Ingress啟動(dòng)參數(shù)中指定的Service為L(zhǎng)oadBalancer類型。如果不為該類型時(shí),可能會(huì)導(dǎo)致Ingress Controller無法被外網(wǎng)訪問。 | 如果確認(rèn)不需要LoadBalancer類型的Service,可忽略該警告。否則,請(qǐng)將Service類型改為L(zhǎng)oadBalancer。 |
使用--force-namespace-isolation | 使用了 | 確認(rèn)當(dāng)前Ingress Controller版本,移除該啟動(dòng)參數(shù)。 |
使用--sort-backends | 使用了 | 確認(rèn)當(dāng)前Ingress Controller版本,移除該啟動(dòng)參數(shù)。 |
SLB
檢查項(xiàng)名稱 | 檢查項(xiàng)說明 | 修復(fù)方案 |
SLB存在 | 檢查Ingress Controller的SLB是否存在。 | 請(qǐng)檢查Ingress Controller Service是否存在,且無異常事件,以及SLB控制臺(tái)中是否存在對(duì)應(yīng)SLB實(shí)例。若SLB實(shí)例被誤刪,可通過重建Service的方式進(jìn)行恢復(fù)。具體操作,請(qǐng)參見誤刪除SLB怎么辦?。 |
Ingress Controller SLB當(dāng)前健康檢查狀態(tài) | 檢查當(dāng)前事件SLB后端的健康檢查狀態(tài)。 | 當(dāng)前SLB后端健康檢查狀態(tài)異常。請(qǐng)檢查Ingress Controller Service有無異常事件,組件負(fù)載是否過高。關(guān)于組件異常問題排查,請(qǐng)參見Nginx Ingress異常問題排查。 |
SLB ID | 展示對(duì)應(yīng)SLB實(shí)例的ID。 | 無。 |
Ingress Controller SLB最大連接數(shù)檢查 | 檢查SLB過去三天最大連接數(shù)是否超過上限的80%以上。連接數(shù)達(dá)到上限后無法建立新連接,可能會(huì)導(dǎo)致客戶端無法訪問。 | SLB實(shí)例連接數(shù)過高,為避免業(yè)務(wù)受損,請(qǐng)?zhí)嵘龑?shí)例規(guī)格。具體操作,請(qǐng)參見使用指定的SLB實(shí)例。 |
Ingress Controller SLB新建連接速率檢查 | 檢查SLB過去三天最大新建連接速率是否超過上限的80%以上。新建連接速率達(dá)到上限后,短時(shí)間內(nèi)無法建立新連接,導(dǎo)致客戶端無法訪問。 | SLB實(shí)例新建連接速率過高,為避免業(yè)務(wù)受損,請(qǐng)?zhí)嵘龑?shí)例規(guī)格。具體操作,請(qǐng)參見使用指定的SLB實(shí)例。 |
Ingress Controller SLB QPS檢查 | 檢查SLB過去三天最大QPS是否達(dá)到上限的80%。QPS達(dá)到上限后,可能導(dǎo)致客戶端無法訪問。 | SLB實(shí)例QPS過高,為避免業(yè)務(wù)受損,請(qǐng)?zhí)嵘龑?shí)例規(guī)格。具體操作,請(qǐng)參見使用指定的SLB實(shí)例。 |
TLS同時(shí)配置Host與SecretName | 配置Ingress TLS規(guī)則時(shí),需要同時(shí)配置Host和SecretName字段。 | 請(qǐng)同時(shí)配置Host與Secret字段,并且確保Host與證書信息對(duì)應(yīng)。 |
Ingress Controller SLB 健康檢查失敗檢查 | 檢查SLB過去三天是否存在健康檢查失敗的情況,可能由于組件負(fù)載過高或配置錯(cuò)誤引起。 | 過去三天內(nèi)存在健康檢查失敗,為避免業(yè)務(wù)受損,請(qǐng)檢查Ingress Controller Service有無異常事件,組件負(fù)載是否過高。關(guān)于組件異常問題排查,請(qǐng)參見Nginx Ingress異常問題排查。 |