手動和自動擴容( scale ) - daniel-qa/Azure-Kubernetes-Service GitHub Wiki

https://docs.microsoft.com/zh-tw/azure/aks/tutorial-kubernetes-scale?tabs=azure-cli#autoscale-pods https://learn.microsoft.com/zh-tw/azure/aks/concepts-scale

手動調整 Pod

(https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#get) 命令,如下所示:

kubectl get pods

若要手動變更 azure-vote-front 部署中的 Pod 數目, 請使用 kubectl scale 命令。

下列範例會將前端 Pod 的數目增加為 5:

kubectl scale --replicas=5 deployment/azure-vote-front

kubectl scale --replicas=2 deployment/laravel

自動調整 Pod

  • 若要使用自動調整程式,必須為您 Pod 中所有容器和 Pod 定義 CPU 要求和限制
  • HPA 每隔 60 秒會有效更新一次

ex: 平均 CPU 使用率超過其所要求使用量的 50%,則自動調整程式會增加 Pod,最多可達 10 個執行個體。 然後,為此部署定義最少 3 個執行個體:

kubectl autoscale deployment azure-vote-front --cpu-percent=50 --min=3 --max=10

或者,您可以建立資訊清單檔,以定義自動調整程式行為和資源限制。 以下是資訊清單檔 (名稱為 azure-vote-hpa.yaml) 的範例。

apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: azure-vote-back-hpa
spec:
  maxReplicas: 10 # define max replica count
  minReplicas: 3  # define min replica count
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: azure-vote-back
  targetCPUUtilizationPercentage: 50 # target CPU utilization

---

apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: azure-vote-front-hpa
spec:
  maxReplicas: 10 # define max replica count
  minReplicas: 3  # define min replica count
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: azure-vote-front
  targetCPUUtilizationPercentage: 50 # target CPU utilization

使用 kubectl apply 來套用 azure-vote-hpa.yaml 資訊清單檔中定義的自動調整程式。

kubectl apply -f azure-vote-hpa.yaml

查看自動調整程式的狀態,請使用 kubectl get hpa 命令,如下所示:

kubectl get hpa
  • 原有已建立的 HPA 要先刪掉(舊的),不然會互相干擾
kubectl delete hpa azure-vote
NAME               REFERENCE                     TARGETS    MINPODS   MAXPODS   REPLICAS   AGE
azure-vote-front   Deployment/azure-vote-front   0% / 50%   3         10        3          2m