今天主要針對Istio Horizontal Pod Autoscaler做一些簡單的介紹
不論身為運維人員或是開發者,都希望Kubernetes Cluster能根據目前的資源使用率,決定是否自動調整資源來回應這些流量,避免服務無法運行而失去使用者。在目前許多第三方雲端服務供應商也都提供 Autosacling 的功能,像是 AWS 或是 Google Cloud Platfrom。而 Kubernetes 本身也提供一個 API - Horizontal Pod Autoscaling,讓我們可以針對不同的 Pod 的使用量,來決定是否新增或減少 Pod 的數量。
kubectl get hpa -n istio-system
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
istio-egressgateway Deployment/istio-egressgateway <unknown>/60% 1 5 1 25s
istio-ingressgateway Deployment/istio-ingressgateway <unknown>/60% 1 5 1 25s
istio-policy Deployment/istio-policy <unknown>/80% 1 5 1 25s
istio-telemetry Deployment/istio-telemetry <unknown>/80% 1 5 1 25s
這邊會出現/60%,是因為必須要在Kubernetes Cluster安裝Metrics Server的服務。這樣Kubernetes Horizontal Pod Autoscaler才會正常運作。
依據上面的敘述,比較重要的包含istio-telemetry,這項服務是Istio Monitor的服務,因此流量的的時候這項服務的MaxPods也可以開比較多
至於Istio-ingressgateway也可以依據流量把MaxPods也開大。
如果要在Istio Service Mesh中使用額外調整HPA必須要注意,一樣要保持單數這樣LoadBalancer的演算法才會正常運作。