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 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
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.
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 è notevolmente minore.
In questo esercizio si è visto in che modo Kubernetes mantiene automaticamente lo stato del sistema dichiarato, anche in caso di errore.