日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

通過ALB Ingress實現基于QPS數據的應用彈性伸縮

ALB Ingress支持根據ALB后端統計的QPS數據進行應用的自動擴容和縮容,保障應用的穩定性以及達到更好的成本控制。本文介紹如何通過ALB Ingress實現基于QPS數據的應用彈性伸縮。

前提條件

操作流程

  1. 創建應用和Service

  2. 創建ALB Ingress

  3. 創建HPA

  4. 驗證應用是否隨著QPS數據自動擴縮容

步驟一:創建應用和Service

  1. 使用以下內容,創建tea.yaml

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-deployment-basic
      labels:
        app: tea
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: tea
      template:
        metadata:
          labels:
            app: tea
        spec:
          containers:
          - name: tea
            image: nginx:1.7.9
            ports:
            - containerPort: 80
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: tea-svc
      namespace: default
    spec:
      ports:
        - port: 80
          protocol: TCP
          targetPort: 80
      selector:
        app: tea
      type: NodePort
  2. 執行以下命令,創建測試應用tea和Service。

    kubectl apply -f tea.yaml

步驟二:創建ALB Ingress

  1. 創建ALBConfig。

    1. 使用以下內容,創建alb-test.yaml

      apiVersion: alibabacloud.com/v1
      kind: AlbConfig
      metadata:
        name: alb-demo
      spec:
        config:
          name: alb-test
          addressType: Internet
          zoneMappings:
          - vSwitchId: vsw-uf6ccg2a9g71hx8go****
          - vSwitchId: vsw-uf6nun9tql5t8nh15****
          accessLogConfig:
            logProject: "****"
            logStore: "alb_****"
        listeners:
          - port: 80
            protocol: HTTP
      • zoneMappings:設置ALB Ingress交換機ID,您需要至少指定兩個不同可用區交換機ID,且與集群處于同一VPC。

      • logProject:設置Project名稱。

      • logStore:設置Logstore名稱。logStore命名需要以alb_開頭,若指定logStore不存在,系統將會自動創建。

    2. 執行以下命令,創建ALBConfig。

      kubectl apply -f alb-test.yaml
  2. 創建IngressClass。

    1. 使用以下內容,創建alb.yaml

      apiVersion: networking.k8s.io/v1
      kind: IngressClass
      metadata:
        name: alb
      spec:
        controller: ingress.k8s.alibabacloud/alb
        parameters:
          apiGroup: alibabacloud.com
          kind: AlbConfig
          name: alb-demo
    2. 執行以下命令,創建IngressClass。

      kubectl apply -f alb.yaml
  3. 創建ALB Ingress。

    1. 使用以下內容,創建tea-ingress.yaml

      apiVersion: networking.k8s.io/v1
      kind: Ingress
      metadata:
        name: tea-ingress
      spec:
        ingressClassName: alb
        rules:
         - host: demo.ingress.top
           http:
            paths:
            - path: /tea
              pathType: Prefix
              backend:
                service:
                  name: tea-svc
                  port:
                    number: 80
    2. 執行以下命令,創建ALB Ingress。

      kubectl apply -f tea-ingress.yaml
  4. 執行以下命令,獲取ALB Ingress的ADDRESS

    kubectl get ingress

    預期輸出:

    NAME                    CLASS   HOSTS                     ADDRESS                                              PORTS   AGE
    tea-ingress             alb     demo.ingress.top          alb-110zvs5nhsvfv*****.cn-chengdu.alb.aliyuncs.com   80      7m5s

步驟三:創建HPA

  1. 使用以下內容,創建hpa.yaml

    apiVersion: autoscaling/v2beta2
    kind: HorizontalPodAutoscaler
    metadata:
      name: ingress-hpa
    spec:
      scaleTargetRef:
        apiVersion: apps/v1
        kind: Deployment
        name: nginx-deployment-basic
      minReplicas: 2
      maxReplicas: 10
      metrics:
        - type: External
          external:
            metric:
              name: sls_alb_ingress_qps
              # sls_alb_ingress_qps是本文實現伸縮使用的指標,表示基于QPS數據實現彈性伸縮。
              selector:
                matchLabels:
                  sls.project: "****"    # 替換sls.project值為真實值。
                  sls.logstore: "alb_****"     # 替換sls.logstore值為真實值。
                  sls.ingress.route: "default-tea-svc-80"
                  # sls.ingress.route參數的格式為<namespace>-<svc>-<port>,例如default-nginx-80。
            target:
              type: AverageValue
              # type為AverageValue表示QPS要除以Pod的數目進行判斷。
              averageValue: 2
  2. 執行以下命令,創建HPA。

    kubectl apply -f hpa.yaml
  3. 執行以下命令,查看HPA部署情況。

    kubectl get hpa

    預期輸出:

    NAME          REFERENCE                           TARGETS     MINPODS   MAXPODS   REPLICAS   AGE
    ingress-hpa   Deployment/nginx-deployment-basic   0/2 (avg)   2         10        2          4h34m
  4. 執行以下命令,查看HPA配置信息。

    kubectl describe hpa ingress-hpa

    預期輸出:

    Name:                                            ingress-hpa
    Namespace:                                       default
    Labels:                                          <none>
    Annotations:                                     <none>
    CreationTimestamp:                               Tue, 31 Jan 2023 11:35:01 +0800
    Reference:                                       Deployment/nginx-deployment-basic
    Metrics:                                         ( current / target )
    "sls_alb_ingress_qps" (target average value):    0 / 2
    Min replicas:                                    2
    Max replicas:                                    10
    Deployment pods:                                 2 current / 2 desired

步驟四:驗證應用是否隨著QPS數據自動擴縮容

  1. 驗證應用是否隨著QPS數據擴容。

    1. 執行以下命令,對應用進行壓測。

      ab -c 5 -n 5000 -H Host:demo.ingress.top http://alb-110zvs5nhsvfv*****.cn-chengdu.alb.aliyuncs.com/tea
    2. 執行以下命令,查看應用伸縮情況。

      kubectl get hpa

      預期輸出:

      NAME          REFERENCE                           TARGETS           MINPODS   MAXPODS   REPLICAS   AGE
      ingress-hpa   Deployment/nginx-deployment-basic   12500m/2 (avg)   2         10        10         15m

      返回結果中REPLICAS為10,表明隨著QPS數據增大,應用的Pod擴容到10個。

  2. 驗證應用是否隨著QPS數據縮容。

    QPS數據在壓測停止后會下降為0,低于測試閾值,HPA會縮容。

    待壓測停止后,執行以下命令,查看應用伸縮情況。

    kubectl get hpa

    預期輸出:

    NAME          REFERENCE                           TARGETS           MINPODS   MAXPODS   REPLICAS   AGE
    ingress-hpa   Deployment/nginx-deployment-basic   0/2 (avg)         2         10         2         60m

    返回結果中REPLICAS為2,表明隨著QPS數據減少,應用的Pod縮容到2個。