生產環境測試

在生產環境中測試您的微服務!

測試個別微服務

  1. 從測試 Pod 向您的其中一項服務發出 HTTP 請求

    $ kubectl exec $(kubectl get pod -l app=curl -o jsonpath='{.items[0].metadata.name}') -- curl -sS http://ratings:9080/ratings/7
    

混亂測試

在生產環境中執行一些混亂測試,並觀察您的應用程式如何反應。在每次混亂操作之後,存取應用程式的網頁,並觀察是否有任何變更。使用 kubectl get pods 檢查 Pod 的狀態。

  1. 終止一個 Pod 中的 details 服務。

    $ kubectl exec $(kubectl get pods -l app=details -o jsonpath='{.items[0].metadata.name}') -- pkill ruby
    
  2. 檢查 Pod 的狀態

    $ kubectl get pods
    NAME                            READY   STATUS    RESTARTS   AGE
    details-v1-6d86fd9949-fr59p     1/1     Running   1          47m
    details-v1-6d86fd9949-mksv7     1/1     Running   0          47m
    details-v1-6d86fd9949-q8rrf     1/1     Running   0          48m
    productpage-v1-c9965499-hwhcn   1/1     Running   0          47m
    productpage-v1-c9965499-nccwq   1/1     Running   0          47m
    productpage-v1-c9965499-tjdjx   1/1     Running   0          48m
    ratings-v1-7bf577cb77-cbdsg     1/1     Running   0          47m
    ratings-v1-7bf577cb77-cz6jm     1/1     Running   0          47m
    ratings-v1-7bf577cb77-pq9kg     1/1     Running   0          48m
    reviews-v1-77c65dc5c6-5wt8g     1/1     Running   0          47m
    reviews-v1-77c65dc5c6-kjvxs     1/1     Running   0          48m
    reviews-v1-77c65dc5c6-r55tl     1/1     Running   0          47m
    curl-88ddbcfdd-l9zq4            1/1     Running   0          47m
    

    請注意,第一個 Pod 已重新啟動一次。

  3. 終止其所有 Pod 中的 details 服務

    $ for pod in $(kubectl get pods -l app=details -o jsonpath='{.items[*].metadata.name}'); do echo terminating "$pod"; kubectl exec "$pod" -- pkill ruby; done
    
  4. 檢查應用程式的網頁

    Bookinfo Web Application, details unavailable
    Bookinfo Web 應用程式,details 無法使用

    請注意,details 區段包含錯誤訊息,而不是書籍詳細資料。

  5. 檢查 Pod 的狀態

    $ kubectl get pods
    NAME                            READY   STATUS    RESTARTS   AGE
    details-v1-6d86fd9949-fr59p     1/1     Running   2          48m
    details-v1-6d86fd9949-mksv7     1/1     Running   1          48m
    details-v1-6d86fd9949-q8rrf     1/1     Running   1          49m
    productpage-v1-c9965499-hwhcn   1/1     Running   0          48m
    productpage-v1-c9965499-nccwq   1/1     Running   0          48m
    productpage-v1-c9965499-tjdjx   1/1     Running   0          48m
    ratings-v1-7bf577cb77-cbdsg     1/1     Running   0          48m
    ratings-v1-7bf577cb77-cz6jm     1/1     Running   0          48m
    ratings-v1-7bf577cb77-pq9kg     1/1     Running   0          49m
    reviews-v1-77c65dc5c6-5wt8g     1/1     Running   0          48m
    reviews-v1-77c65dc5c6-kjvxs     1/1     Running   0          49m
    reviews-v1-77c65dc5c6-r55tl     1/1     Running   0          48m
    curl-88ddbcfdd-l9zq4            1/1     Running   0          48m
    

    第一個 Pod 重新啟動了兩次,另外兩個 details Pod 重新啟動了一次。在 Pod 達到 Running 狀態之前,您可能會遇到 ErrorCrashLoopBackOff 狀態。

  6. 在終端機中使用 Ctrl-C 來停止正在執行的無限迴圈,以模擬流量。

在這兩種情況下,應用程式都沒有當機。details 微服務的當機並沒有導致其他微服務失敗。這種行為表示在這種情況下您沒有發生連鎖失敗。相反地,您遇到了漸進式服務降級:儘管有一個微服務當機,應用程式仍然可以提供有用的功能。它顯示了評論和關於書籍的基本資訊。

您已準備好新增 reviews 應用程式的新版本

這個資訊對您有幫助嗎?
您有任何改進建議嗎?

感謝您的回饋!