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

基于網關QPS實現后端ACK應用的彈性伸縮

MSE網關作為流量入口,對業務流量大小具有最明顯的感知,結合K8s的能力與MSE網關統計的QPS指標,業務應用能夠基于業務Pod上的QPS進行彈性伸縮,使后端業務能夠按需擴展。本文介紹ACK業務如何應用網關訪問日志進行彈性伸縮。

前提條件

操作步驟

  1. 在容器服務ACK中部署如下資源。

    1. 登錄容器服務管理控制臺,在左側導航欄選擇市場 > 應用市場

    2. 在搜索框輸入ack-alibaba-cloud-metrics-adapter,單擊應用卡片,在詳情頁右上角單擊一鍵部署。在創建面板進行相關配置,然后單擊確定。

      ack-alibaba-cloud-metrics-adapter.png

    3. 在左側導航欄選擇集群

    4. 集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇工作負載 > 無狀態

    5. 無狀態頁面,單擊使用YAML創建資源。選擇模板為自定義并使用如下YAML,然后單擊創建。

      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: httpbin-deploy
        labels:
          app: httpbin-deploy
      spec:
        replicas: 1
        selector:
          matchLabels:
            app: httpbin
        template:
          metadata:
            labels:
              app: httpbin
          spec:
            containers:
            - image: kennethreitz/httpbin
              imagePullPolicy: IfNotPresent
              name: httpbin
              ports:
              - name: http
                containerPort: 80
      ---
      apiVersion: v1
      kind: Service
      metadata:
        name: httpbin-svc
        namespace: default
        labels:
          app: httpbin-svc
      spec:
        ports:
          - port: 8080
            name: http
            protocol: TCP
            targetPort: 80
        selector:
          app: httpbin
        type: ClusterIP
  2. 在MSE網關中添加服務來源并創建服務。

    1. 登錄MSE網關管理控制臺,并在頂部菜單欄選擇地域。

    2. 在左側導航欄,選擇云原生網關 > 網關列表,單擊目標網關名稱。

    3. 在左側導航欄,選擇路由管理,然后選擇來源頁簽。

    4. 單擊創建來源,選擇來源類型容器服務,并選擇已部署應用的ACK集群,然后單擊確定。

    5. 在左側導航欄,選擇路由管理,然后選擇服務頁簽。

    6. 單擊創建服務,將創建的服務來源添加到服務列表中,然后單擊確定。

  3. 為已創建服務添加路由。具體操作,請參見創建路由。

  4. 開啟日志投遞服務。

    1. 在左側導航欄,單擊參數配置。

    2. 可觀測性參數區域,單擊日志投遞右側的圖標2.png圖標,在對話框中開啟日志投遞和兼容 Nginx Ingress選項。

      日志投遞開啟.png

  5. 在ACK集群中創建HorizontalPodAutoscaler,并進行相關設置。

    包括需要進行彈性伸縮的后端業務應用、彈性伸縮時最小副本數、彈性伸縮時最大副本數、彈性伸縮依據的指標等。示例如下,其中sls.project值為網關控制臺參數配置頁面顯示的日志投遞的project名稱,sls.ingress.route格式為<服務命名空間>-<服務名稱>-<服務端口號>。在該示例中,設置當服務Pod平均QPS大于10時進行擴容。

    apiVersion: autoscaling/v2
    kind: HorizontalPodAutoscaler
    metadata:
      name: higress-hpa
    spec:
      scaleTargetRef:
        apiVersion: apps/v1beta2
        kind: Deployment
        name: httpbin-deploy
      minReplicas: 1
      maxReplicas: 10
      metrics:
        - type: External
          external:
            metric:
              name: sls_ingress_qps
              selector:
                matchLabels:
                  sls.project: "aliyun-product-data-xxxxxxxxxxxxx-cn-hangzhou"
                  sls.logstore: "nginx-ingress"
                  sls.ingress.route: "default-httpbin-svc-8080"
            target:
              type: AverageValue
              averageValue: 10
  6. 控制QPS通過網關路由對業務應用進行壓測,觀察HPA的事件進行驗證。

    使用如下命令進行驗證。

    kubectl describe hpa higress-hpa

    輸出如下。

    Normal  SuccessfulRescale  9m     horizontal-pod-autoscaler  New size: 3; reason: external metric sls_ingress_qps(&LabelSelector{MatchLabels:map[string]string{sls.ingress.route: default-httpbin-svc-8080,sls.logstore: nginx-ingress,sls.project: aliyun-product-data-xxxxxxxxxxxxxxxx-cn-hangzhou,},MatchExpressions:[]LabelSelectorRequirement{},}) above target
    Normal  SuccessfulRescale  8m45s  horizontal-pod-autoscaler  New size: 4; reason: external metric sls_ingress_qps(&LabelSelector{MatchLabels:map[string]string{sls.ingress.route: default-httpbin-svc-8080,sls.logstore: nginx-ingress,sls.project: aliyun-product-data-xxxxxxxxxxxxxxxx-cn-hangzhou,},MatchExpressions:[]LabelSelectorRequirement{},}) above target
    Normal  SuccessfulRescale  5m12s  horizontal-pod-autoscaler  New size: 4; reason:
    Normal  SuccessfulRescale  3m41s  horizontal-pod-autoscaler  New size: 3; reason: All metrics below target
    Normal  SuccessfulRescale  2m55s  horizontal-pod-autoscaler  New size: 1; reason: All metrics below target