全部產品
Search
文件中心

Container Service for Kubernetes:ALB Ingress異常問題排查

更新時間:Jun 19, 2024

ALB Ingress Controller是一種用於Kubernetes叢集的Ingress Controller,用於將外部流量匯入到叢集內部的服務。當使用ALB Ingress訪問服務時,ALB Ingress Controller會監聽Service和Endpoint資源的變化,即時將後端節點的狀態同步到對應的後端伺服器組中,並將變更同步到ALB控制台。本文介紹在使用ALB Ingress過程中遇到的各種例外狀況事件的診斷和解決方案。

資源同步原理

下方圖片展示了ALB Ingress資源同步的執行過程,具體可以描述為:

  • 通過AlbConfig建立ALB執行個體與監聽listener1和listener2。

  • 通過Ingress建立了兩條轉寄規則rule1和rule2並關聯到監聽listener2上,其中轉寄規則rule1配置了兩個服務,分別為vgroup1和vgroup2,轉寄規則rule2隻將流量轉寄到vgroup2。

  • 通過監聽Service和Endpoint資源的變化,即時將後端節點的狀態同步到對應的後端伺服器組中。

image

在資源同步過程中,可能會遇到一些限制導致同步失敗。以下介紹如何查看、分析和解決例外狀況事件。

步驟一:查看例外狀況事件

  1. 將ALB Ingress Controller組件升級至最新版本。

    事件通知會不斷更新,因此診斷前需要將ALB組件升級至最新版本。具體操作,請參見升級ALB Ingress Controller組件

  2. 執行以下命令,查看Ingress的例外狀況事件。

    kubectl -n <your-namespace> describe ingress <your-ingress-name>

    在輸出結果中尋找以Events開頭的模組,該模組包含與Ingress相關的事件資訊。

    • Scheduled for sync:表明事件開始。

    • Successfully reconciled:表明事件成功結束。

步驟二:分析和解決例外狀況事件

常見例外狀況事件的報錯原因及解決方案見下表。

報錯資訊

報錯原因

解決方案

listener is not exist, port: 80, protocol: HTTP

對於2.11.0及以上版本的ALB Ingress Controller組件,Ingress上的監聽只會進行關聯,不會自動建立。若您未在AlbConfig中建立對應的監聽,卻在Ingress中使用了監聽,就會產生報錯資訊。

若您使用的是2.11.0及以上版本的ALB Ingress Controller組件,請在AlbConfig中建立Ingress資源所需的監聽。具體操作,請參見通過AlbConfig配置ALB監聽

listener not found for (80/HTTP), with ingresses 1

對於2.11.0及以上版本的ALB Ingress Controller組件,如果在AlbConfig中直接移除了Ingress仍在關聯的監聽,將會產生報錯,並顯示缺失的監聽和關聯的Ingress個數。

如需移除監聽,請將監聽關聯的Ingress全部移除。

重要

如果移除了預期外的監聽,則需重新添加已移除的監聽。

none certificate found for host

開啟了TLS且有網域名稱使用了自動探索認證功能,但是在認證中心沒有發現該網域名稱可用的認證。

The param of Rules.1.RuleConditions.2.PathConfig.Values.1 is illegal

建立或修改轉寄規則時包含非法路徑參數。

  • 如果您在ALB Ingress中使用了Rewrite註解,需要將pathType欄位的參數值修改為Prefix

  • 如果您未在ALB Ingress使用Rewrite註解,那麼有可能path欄位中包含了特殊字元。

    說明

    非Regex類型的路徑必須以/開頭,支援大小寫字母、數字和貨幣符號($)、加號(+)、正斜線(/)、and(&)、波浪線(~)、at(@)、底線(_)、短劃線(-)、英文半形句號(.)、英文半形冒號(:),還支援星號(*)和英文半形問號(?)作為萬用字元使用。

The param of ServerGroupName is illegal

該報錯說明ALB後端伺服器組命名格式不正確。

請按照正確的格式命名伺服器組名稱。

當前伺服器組名稱的產生格式是命名空間+Service名稱+連接埠。其中,伺服器組名稱的字元長度為[2,128],必須以大小寫字母或中文開頭,可包含數字、英文半形句號(.)、底線(_)和短劃線(-)。

The specified resource sgp-vz2fb219vv792flx3u is in use

該報錯說明該託管到ACK的ALB後端伺服器組被另外一個ALB執行個體引用。

登入應用型負載平衡ALB控制台,在左側導覽列選擇應用型負載平衡 ALB > 伺服器組,在伺服器組頁面找到對應的後端伺服器組,根據需求解除關聯的ALB執行個體。

Message: 無效參數,請檢查參數輸入

常見於AlbConfig指定認證時,認證ID配置錯誤。

請檢查認證ID是否使用了資源ID或數字ID,應當使用CertIdentifier指定的認證ID。