概念 - 部署應用程式
在您將應用程式部署至 Kubernetes 之前,讓我們先檢閱 Kubernetes 部署,並在我們的案例中討論其限制。
什麼是 Kubernetes 部署?
Kubernetes 部署是 Pod 的演進。 部署會將 Pod 包裝成智慧型物件,以便其可進行「擴增」。您可以輕鬆複製並調整應用程式規模以支援更多負載,而不需要設定複雜的網路規則。
部署可讓您在無需停機的情況下,只要變更映像標籤即可更新應用程式。 更新部署會逐一關閉線上應用程式,並以最新版本取代它們,而不是刪除所有應用程式並建立新的,這表示部署可以更新其內的 Pod,而不會對可用性產生任何明顯影響。
雖然透過 Pod 使用部署有許多優點,但它們無法適當地處理我們的案例。
此案例需要會在各種時間接收大量事件的事件驅動應用程式。 如果沒有 KEDA 調整程式物件或 HPA,您即需要手動調整複本數目,才能處理事件數目,並在負載恢復正常時減少部署。
部署資訊清單樣本
以下是部署資訊清單的程式碼片段樣本:
apiVersion: apps/v1
kind: Deployment
metadata:
name: contoso-microservice
spec:
replicas: 10 # Tells K8S the number of pods needed to process the Redis list items
selector: # Define the wrapping strategy
matchLabels: # Match all pods with the defined labels
app: contoso-microservice # Labels follow the `name: value` template
template: # Template of the pod inside the deployment
metadata:
labels:
app: contoso-microservice
spec:
containers:
- image: mcr.microsoft.com/mslearn/samples/redis-client:latest
name: contoso-microservice
在資訊清單樣本中, replicas
會設定為 10,這是我們針對可用於處理事件尖峰數目的必要複本可設定的最高數目。 不過,這會導致應用程式在非尖峰期間取用太多資源,這可能會耗盡叢集內的其他部署。
其中一個解決方案是使用獨立 HPA 來監視 Pod 的 CPU 使用量,這是比手動雙向調整更佳的選項。 不過,HPA 不會聚焦於已接收至 Redis 清單的事件數目。
最佳解決方案是使用 KEDA 與 Redis 調整程式來查詢清單,並確定是否需要更多或更少的 Pod 來處理事件。