全部產品
Search
文件中心

Container Service for Kubernetes:Knative常見問題及解決方案

更新時間:Aug 09, 2024

本文介紹在ACK叢集中使用Knative時可能遇到的常見問題及對應的解決方案。

索引

阿里雲Knative和社區開源Knative有什麼差異

阿里雲Knative在相容開源Knative的基礎上進行了一系列產品能力的增強,包括營運、易用性、彈性、網關、事件驅動、監控警示等維度。具體資訊,請參見阿里雲Knative和開源Knative對比

安裝Knative時,應該選擇哪種網關

阿里雲Knative支援ALB、MSE、ASM和Kourier四種網關。ALB專註於應用程式層負載平衡情境;雲原生網關MSE專註於微服務情境;ASM提供服務網路(Istio)的能力。如果僅需要基礎的網關能力,可以選擇Kourier。更多資訊,請參見為Knative選擇網關

通過RAM使用者或角色使用Knative時,需要有什麼許可權

需要有訪問叢集所有命名空間的許可權。您可以按照以下流程完成授權。

  1. 登入Container Service管理主控台,在左側導覽列選擇授權管理

  2. 單擊RAM 使用者頁簽,在RAM使用者列表,單擊目標RAM使用者對應的系統管理權限

  3. 添加許可權地區,選擇待授權的叢集,然後選擇命名空間為所有的命名空間,按照頁面提示完成授權。

Knative中的Pod需要多長時間會縮容至0

Pod開始縮容至0的時間主要取決於3個參數:

  • stable-window:穩定視窗期。Pod真正縮容前會對此期間內的指標進行觀察和評估,而不會立即執行操作。

  • scale-to-zero-grace-period:縮容至0的逾時時間。在此期間內,即使沒有新的請求,系統也不會立即停止或刪除最後一個Pod,以防突發流量請求。

  • scale-to-zero-pod-retention-period:縮容至0前最後一個Pod的保留時間,以便快速響應突發流量請求,無需從零啟動一個新的Pod。

Pod縮容至0需要滿足以下三個條件:

  1. 首先,在stable-window內沒有收到任何請求。

  2. 其次,超過scale-to-zero-pod-retention-period設定的保留時間。

  3. 最後,SKS(Serverless Kubernetes Service)切換到proxy模式的時間超過scale-to-zero-grace-period設定的時間,Pod開始縮容。

Pod縮容至0的保留時間不會超過stable-window + Max["scale-to-zero-grace-period", "scale-to-zero-pod-retention-period" ]。如果需要強製為Pod設定一個縮容至0的保留時間,建議使用scale-to-zero-pod-retention-period參數進行配置。

在Knative中,如何使用GPU資源

您可以通過在Knative Service中添加spec.template.metadata.annotation下的k8s.aliyun.com/eci-use-specs欄位指定GPU規格,然後通過spec.containers.resources.limits下的nvidia.com/gpu欄位聲明GPU資源。

詳細資料,請參見在Knative中使用GPU

在Knative中,如何使用共用GPU

您可以參見運行共用GPU調度樣本為節點開啟共用GPU調度能力,然後在Knative Service中通過aliyun.com/gpu-mem欄位配置資源上限(Resource Limits)。詳細資料,請參見在Knative中使用共用GPU

應用沒有流量時Knative預設會將執行個體數縮容至零,如何解決冷啟動延時的問題

在應用沒有請求時,社區Knative預設將應用執行個體數縮容至零個,以降低常駐執行個體的運行成本。等待請求到來時,應用會被重新分配一個執行個體,需要經歷IaaS資源的分配與調度、應用鏡像的拉取、應用啟動等環節。這種做法雖然降低了成本,但會讓應用在啟動時會經歷一個冷啟動過程,有較長的延時。

如果您的業務對冷啟動延時比較敏感,推薦您兩種解決方案。

  • 配置保留執行個體:保留一個低規格、低成本的突發效能執行個體概述,平衡Knative的使用成本和應用冷啟動時延。當第一個請求到來時,保留執行個體將提供服務,並同時觸發預設規格執行個體的擴容。當預設規格執行個體擴容完成後,後續新請求將全部轉寄至預設規格執行個體,保留執行個體等待接收到的請求處理完成後自動下線。詳細資料,請參見配置保留執行個體

  • 使用ECI提供的鏡像緩衝功能,預先將需要使用的鏡像製作成緩衝快照,然後基於該快照來建立ECI執行個體(Pod),避免或者減少鏡像層的下載,從而提升執行個體建立速度。詳細資料,請參見在Knative中使用鏡像加速

ACK Knative組件的Activator組件是否計費

計費。Activator組件為資料面組件,以Pod的形式運行,會佔用您的執行個體資源。

Knative服務的監聽連接埠怎麼配置

應用的監聽連接埠需要和Knative Service中containerPort的連接埠一致,預設為8080。如需自訂監聽連接埠,請參見配置自訂監聽連接埠