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

在Knative中使用MSE網關實現自動彈性

在大規模云原生分布式應用的流量治理過程中,Knative結合MSE Ingress可實現基于請求的自動彈性、縮容到0、多服務版本同時灰度發布、服務治理能力以及安全防護保障等能力。

前提條件

實現原理

在實際業務場景中,單個Pod處理請求的吞吐率有限,如果多個請求同時轉發到同一個Pod,會導致服務端過載異常,因此,需要精準地控制單個Pod的請求并發處理數。尤其在AIGC場景下,由于單個請求會占用較多的GPU資源,有必要對每個Pod的并發處理請求數進行嚴格的限制。Knative結合MSE網關,可以實現基于請求的精準自動彈性,能夠滿足大規模云原生分布式應用的流量治理訴求。

如下圖所示,彈性插件MPA會從MSE網關獲取并發數,并計算所需要的Pod數進行擴縮容,實現了基于實際請求負載的自動彈性。同時,MSE網關可以根據路由規則和條件,實現基于請求的精準轉發,以滿足不同服務和版本的路由需求。

image.png

步驟一:部署MSE網關

  1. 登錄容器服務管理控制臺,在左側導航欄選擇集群

  2. 集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇應用 > Knative

  3. 組件管理頁簽,單擊一鍵部署Knative

  4. 在部署Knative頁面,選擇MSE服務網關,然后單擊一鍵部署

步驟二:通過MSE網關訪問部署的服務

  1. 登錄容器服務管理控制臺,在左側導航欄選擇集群

  2. 集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇應用 > Knative

  3. Knative頁面的服務管理頁簽下,選擇命名空間default,然后單擊使用模板創建,將以下YAML示例粘貼至模板,最后單擊創建

    創建一個名為helloworld-go的服務。

    重要

    請將下方代碼中的{REGION-ID}替換為您集群所在地域,以確保可以正確地訪問和使用鏡像。

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: helloworld-go
    spec:
      template:
        metadata:
          annotations:
            autoscaling.knative.dev/class: mpa.autoscaling.knative.dev # 表明使用MSE指標進行擴縮容,支持縮容到0。
            autoscaling.knative.dev/max-scale: '20' # 擴容Pod數上限是20。
        spec:
          containerConcurrency: 5 # 1個Pod能處理的最大并發數是5。
          containers:
          - image: registry-vpc.{REGION-ID}.aliyuncs.com/knative-sample/helloworld-go:73fbdd56 # {REGION-ID}為對應集群所在的地域,如cn-hangzhou。
            env:
            - name: TARGET
              value: "Knative"

    若目標服務的狀態列顯示成功,表明服務已部署成功。

  4. 服務管理頁面的默認域名訪問網關列,分別獲取helloworld-go服務的域名和網關地址。

  5. 執行以下命令,訪問helloworld-go服務。

    curl -H "host: helloworld-go.default.example.com" http://8.141.XX.XX # 網關IP和域名請以您的實際數據為準。

    預期輸出:

    Hello Knative!

步驟三:基于并發數實現自動彈性

  1. 安裝Hey壓測工具。

    關于Hey壓測工具的詳細信息,請參見Hey

  2. 執行以下命令,對服務執行壓測。

    # 發送100000個請求,并發數為50,請求超時時間為180秒。
    hey -n 100000 -c 50 -t 180 -host "helloworld-go.default.example.com" "http://8.141.XX.XX"

    預期輸出:

    Summary:
      Total:        86.0126 secs
      Slowest:      0.1672 secs
      Fastest:      0.0276 secs
      Average:      0.0337 secs
      Requests/sec: 1162.6199
      
      Total data:   1500000 bytes
      Size/request: 15 bytes
    
    Response time histogram:
      0.028 [1]     |
      0.042 [95291] |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
      0.056 [4573]  |■■
      0.069 [64]    |
      0.083 [19]    |
      0.097 [2]     |
      0.111 [0]     |
      0.125 [0]     |
      0.139 [18]    |
      0.153 [23]    |
      0.167 [9]     |
    
    
    Latency distribution:
      10% in 0.0294 secs
      25% in 0.0305 secs
      50% in 0.0327 secs
      75% in 0.0367 secs
      90% in 0.0386 secs
      95% in 0.0405 secs
      99% in 0.0433 secs
    
    Details (average, fastest, slowest):
      DNS+dialup:   0.0000 secs, 0.0276 secs, 0.1672 secs
      DNS-lookup:   0.0000 secs, 0.0000 secs, 0.0000 secs
      req write:    0.0000 secs, 0.0000 secs, 0.0009 secs
      resp wait:    0.0336 secs, 0.0276 secs, 0.1671 secs
      resp read:    0.0000 secs, 0.0000 secs, 0.0009 secs
    
    Status code distribution:
      [200] 100000 responses

    輸出結果表明,持續發送了100000個請求,請求成功率為100%。

  3. 執行如下命令,可實時觀察Pod的擴縮容情況。

    說明

    這個命令會持續運行,直到您手動停止它。如果您只想觀察一段時間,可以按Ctrl + C組合鍵來終止命令的運行。

    kubectl get pods --watch

    image.png

查看服務監控數據

Knative提供開箱即用的可觀測能力,在Knative頁面,單擊監控大盤頁簽,即可查看helloworld-go服務的監控數據情況。如何開啟Knative監控大盤,請參見通過阿里云Prometheus監控查看Knative大盤