本文介紹在ACK叢集中使用Knative時可能遇到的常見問題及對應的解決方案。
索引
阿里雲Knative和社區開源Knative有什麼差異
阿里雲Knative在相容開源Knative的基礎上進行了一系列產品能力的增強,包括營運、易用性、彈性、網關、事件驅動、監控警示等維度。具體資訊,請參見阿里雲Knative和開源Knative對比。
安裝Knative時,應該選擇哪種網關
阿里雲Knative支援ALB、MSE、ASM和Kourier四種網關。ALB專註於應用程式層負載平衡情境;雲原生網關MSE專註於微服務情境;ASM提供服務網路(Istio)的能力。如果僅需要基礎的網關能力,可以選擇Kourier。更多資訊,請參見為Knative選擇網關。
通過RAM使用者或角色使用Knative時,需要有什麼許可權
需要有訪問叢集所有命名空間的許可權。您可以按照以下流程完成授權。
登入Container Service管理主控台,在左側導覽列選擇授權管理。
單擊RAM 使用者頁簽,在RAM使用者列表,單擊目標RAM使用者對應的系統管理權限。
在添加許可權地區,選擇待授權的叢集,然後選擇命名空間為所有的命名空間,按照頁面提示完成授權。
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需要滿足以下三個條件:
首先,在
stable-window
內沒有收到任何請求。其次,超過
scale-to-zero-pod-retention-period
設定的保留時間。最後,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。如需自訂監聽連接埠,請參見配置自訂監聽連接埠。