[英]gradually warm java application in k8s with istio
我有基於 JVM 的應用程序,這些應用程序可提供出色的性能,但在達到最高速度之前需要一些時間來“預熱”。
istio api (DestinationRule) 不支持端點級別權重,而 envoy 支持。
我想要一個簡單的策略:在pod准備就緒的開始,該pod的權重(qps)保持較低水平並隨着時間的推移增加
例如:讓我希望預熱時間為 120 秒。 2 個 pod 有 50%-50% 的流量,當一個新的 pod 啟動時,它將處理低流量並隨着時間的推移而增加,並在 120 秒內達到 33%。
讓我們舉個例子,我有一個部署,其中有 2 個 pod 正在運行,當一個新的 pod 進來時,我要為我的應用程序部署一個新版本,流量被平均分配 33% 到 3 個 pod,新的 pod 無法處理流量因為應用程序需要一些時間來預熱和啟動線程來處理重負載同樣的問題在 HPA(水平 Pod 擴展)期間出現。
我需要一個解決方案來預熱 pod 並根據持續時間逐漸處理新 pod 的流量
如果你使用的是 Kube.netes Ingress controller,那么你可以使用 Peak EWMA 負載均衡機制。
您需要為入口資源添加注釋:
nginx.ingress.kube.netes.io/load-balance: ewma
請參閱文檔:
https://kube.netes.github.io/ingress-nginx/user-guide/nginx-configuration/configmap/#load-balance
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.