Superpoteri per Kubernetes con ChatGPT
Se hai provato a chattare con ChatGPT e hai provato delle sensazioni contrastanti dopo le sue fantastiche risposte, allora devi sapere k8sgpt sfrutta ChatGPT per supportarti nel tuo utilizzo di Kubernetes (e anche OpenShift).
Tramite un’analisi delle risorse in esecuzione, consente all’utente di analizzare i problemi del cluster e di fornire suggerimenti più esplicativi -rispetto ai messaggi di errore- per risolvere il problema. Spesso di fronte a un problema ci si trova con pochi indizi, e una soluzione da trovare velocemente: per poter ottenere delle indicazioni più dettagliate su come risolvere il problema, k8sgpt è perfetto.
Installazione di k8sgpt
La configurazione è molto semplice: basta scaricare il pacchetto di k8sgpt in base al sistema operativo che verrà usato per eseguire k8sgpt -Linux, Windows o Mac - dalla pagina di rilascio di k8sgpt:
wget https://github.com/k8sgpt-ai/k8sgpt/releases/download/v0.1.1/k8sgpt_Linux_x86_64.tar.gz
tar -xvf k8sgpt_Linux_x86_64.tar.gz
./k8sgpt
In secondo luogo, sarà necessario ottenere una chiave API dal sito web di OpenAI per poter utilizzare questo strumento: tramite il comando sottostante, è possibile ottenere il link per generarla:
k8sgpt generate
Opening: https://beta.openai.com/account/api-keys to generate a key for openaish
Please copy the generated key and run `k8sgpt auth` to add it to your config file
Dopo aver generato e copiato la chiave, possiamo aggiungere questo token al file di configurazione usando il comando seguente:
k8sgpt auth add
>>>
Enter openai Key: MYTOKEN
added to the AI backend provider list
Come utilizzare k8sgpt
Attualmente sono disponibili alcuni analyzer integrati per k8sgpt (come quelli per Pod, PVC, Events, e così via) che permettono di fornire delle descrizioni dettagliate degli oggetti in esecuzione, anche se in futuro sono previste delle ulteriori estensioni.
In altre parole, k8sgpt è in grado di trovare problemi in oggetti Kubernetes come Pod, PVC, Replicaset e Services.
Per tentare un test veloce, è possibile una semplice analisi sarà simile a quella che segue:
# Creazione di un Pod con un'immagine
kubectl run nginx --image=nginx:latest --restart=Never
# Analisi degli eventi prodotti dalle risorse del namespace corrente -di default, risponde in inglese
k8sgpt analyze --explain --filter=Pod
>>>
No problems detected
In effetti, è possibile ottenere la risposta anche in altre lingue. Ad esempio, se si desidera ottenere una risposta in italiano, si può specificare l’opzione in questo modo -attenzione, le traduzioni non sono perfette!:
# Immagine errata
kubectl run nginx --image=nginx:1.2.3 --restart=Never
k8sgpt analyze --explain --language 'Italian'
Every 2,0s: k8sgpt analyze --explain edgeblazer-desktop: Tue Mar 28 18:10:56 2023
{ 0% | | (0/1, 0 it/hr) [0s:0s] 100% |██████████████████████████████████████████████| (1/1, 3182 it/s)
0 default/nginx(nginx): Back-off pulling image "nginx:1.2.3"
I Pod non sono in grado di scaricare e lanciare l'immagine prevista, pertanto è stato attivato un back-off per attendere
prima di riprovare. La soluzione è assicurarsi che il tag dell'immagine sia specificato correttamente e che non ci siano
problemi di rete che impediscano il download. Verificare inoltre che l'immagine esista e sia accessibile al cluster.
Sviluppi futuri
Il team dietro a k8sgpt ha previsto di aggiungere nuove funzionalità, come ulteriori comandi eseguibili tramite la riga di comando, il supporto ad analyzer personalizzati, e il supporto a modelli di ML.
Quale può essere il vantaggio di uno strumento come questo?
Si tratta sicuramente di uno strumento utile che aiuta nella risoluzione dei problemi iniziali, migliorando così l’esperienza operativa di chi lavora su cluster basati su Kubernetes, soprattutto se ci si trova di fronte a errori imprevisti, o sconosciuti!
Aggiornamento: K8sGPT è stato accettato dalla CNCF il 19 Dicembre 2023 all’interno dei progetti sostenuti dalla fondazione.
Risorse utili
- Documentazione ufficiale
- Docker - per cominciare bene con Docker e Kubernetes
- Kubernetes - Guida per gestire e orchestrare i container