練習 - 證明 Kubernetes 中的微服務恢復能力

已完成

Kubernetes 的其中一個優點是支援宣告式組態管理。 它會盡全力保留您在設定檔中定義的服務。

這表示若發生失效情況,Kubernetes 會自動重新啟動失效前正在執行的服務。

讓我們來刪除 storefrontend Pod,然後驗證 Kubernetes 是否重新啟動它,以查看這項復原能力的實際運作情形。

  1. 首先,在 codespace 上的 [TERMINAL] 中,執行 kubectl get pods 並記下 storefrontend Pod 的名稱,包括隨機字串。 以下為範例輸出:

    @user-name /workspaces/eShopLite % kubectl get pods
    
    NAME                             READY   STATUS    RESTARTS   AGE
    productsbackend-7445bdb5c9-pnpk6 1/1     Running   0          31m
    storefrontend-5b6cc765c4-hjpx4   1/1     Running   0          63m
    
  2. 現在,請使用 kubectl delete 命令刪除 storefrontend Pod。 您需要指定 Pod 的完整名稱 (包含隨機字串)。

    kubectl delete pod storefrontend-5b6cc765c4-hjpx4
    

    您將會立即收到訊息,指出 Pod 已刪除。

  3. 由於 Kubernetes 會維護組態檔中所宣告的系統狀態,因此會立即啟動另一個 Pod 執行個體。 您可以執行 kubectl get pods 加以驗證。

    @user-name /workspaces/eShopLite % kubectl get pods
    
    NAME                             READY   STATUS    RESTARTS   AGE
    productsbackend-7445bdb5c9-pnpk6 1/1     Running   0          31m
    storefrontend-5b6cc765c4-vwmv8   1/1     Running   0          7s
    

    請注意,名稱後面的 storefrontend 隨機字串已變更,表示 Pod 是新的執行個體。 此外,AGE 值也遠小於先前的值。

在此練習中,您已了解 Kubernetes 如何自動維護宣告的系統狀態,即使發生失敗也一樣。

檢定您的知識

1.

Kubernetes 在 Pod 失效時重新啟動它們的原因是什麼?