Esercizio - Dimostrare la resilienza dei microservizi in Kubernetes

Completato

Uno dei vantaggi di Kubernetes è il supporto per la gestione della configurazione dichiarativa. I servizi definiti nei file di configurazione vengono mantenuti a tutti i costi.

Se quindi si verifica un errore, Kubernetes riavvierà automaticamente i servizi che erano in esecuzione prima dell'errore.

Per vedere in azione questa resilienza, si eliminerà il pod storefrontend e si verificherà che Kubernetes lo abbia riavviato.

  1. Per prima cosa, nel TERMINALE del codespace eseguire kubectl get pods e prendere nota del nome, inclusa la stringa casuale, del pod storefrontend. Ecco un output di esempio:

    @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. Eliminare ora il pod storefrontend usando il comando kubectl delete. È necessario specificare il nome completo del pod, inclusa la stringa casuale.

    kubectl delete pod storefrontend-5b6cc765c4-hjpx4
    

    Verrà immediatamente visualizzato un messaggio che informa che il pod è stato eliminato.

  3. Dal momento che Kubernetes mantiene lo stato del sistema dichiarato nei file di configurazione, verrà immediatamente avviata un'altra istanza del pod. È possibile verificarlo eseguendo 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
    

    Si noti che la stringa casuale che segue il nome storefrontend è modificata, a indicare che il pod è una nuova istanza. Anche il valore AGE è molto più basso.

In questo esercizio si è visto in che modo Kubernetes mantiene automaticamente lo stato del sistema dichiarato, anche in caso di errore.