Esercizio - Dimostrare la resilienza dei microservizi in Kubernetes
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.
Per prima cosa, nel TERMINALE del codespace eseguire
kubectl get pods
e prendere nota del nome, inclusa la stringa casuale, del podstorefrontend
. 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
Eliminare ora il pod
storefrontend
usando il comandokubectl 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.
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.