Man mano che i carichi di lavoro di Kubernetes crescono in complessità, garantire un utilizzo ottimale delle risorse mantenendo le prestazioni diventa una sfida significativa. L’eccesso di provisioning porta a costi sprecati, mentre un provisioning insufficiente può degradare le prestazioni dell’applicazione. StormForge offre un approccio basato sull’apprendimento automatico per automatizzare il dimensionamento dei carichi di lavoro, aiutando i team a trovare il giusto equilibrio tra costo e prestazioni.
Questo articolo fornisce una guida completa all’implementazione di StormForge per l’ottimizzazione dei carichi di lavoro di Kubernetes.
Prerequisiti
Prima di iniziare, assicurati di avere un cluster Kubernetes funzionante (utilizzando strumenti come minikube, kind o servizi gestiti come RKS, GKE, EKS o AKS). Avrai anche bisogno di Helm, kubectl e del CLI di StormForge installati, insieme a un account StormForge attivo. Una soluzione di monitoraggio come Prometheus è raccomandata ma facoltativa.
Configura il tuo ambiente
Assicurati dell’accesso al cluster Kubernetes
Devi avere un cluster Kubernetes funzionante (ad es., Minikube, Kind, GKE, EKS o AKS).
Conferma la connettività del cluster:
kubectl get nodes
Installa Helm
Verifica l’installazione di Helm:
helm version
Installa Helm se necessario seguendo le Istruzioni per l’installazione di Helm.
Distribuisci un’applicazione di esempio
Utilizza un’applicazione di esempio semplice, come Nginx:
kubectl apply -f https://k8s.io/examples/application/deployment.yaml
Confermare che l’applicazione sia in esecuzione:
kubectl get pods
Installare la CLI di StormForge
Scaricare e installare la CLI di StormForge:
curl -fsSL https://downloads.stormforge.io/install | bash
Autenticare la CLI con il tuo account StormForge:
stormforge login
Implementare l’Agente di StormForge
Usare la CLI di StormForge per inizializzare il tuo cluster Kubernetes:
stormforge init
Verificare che l’agente di StormForge sia implementato:
kubectl get pods -n stormforge-system
Creare un Esperimento di StormForge
Definire un file YAML per l’esperimento (ad esempio, experiment.yaml):
apiVersion optimize.stormforge.io/v1
kind Experiment
metadata
name nginx-optimization
spec
target
deployments
name nginx-deployment
containers
name nginx
requests
cpu"100m"
memory"128Mi"
limits
cpu"500m"
memory"256Mi"
Applicare la configurazione dell’esperimento:
stormforge apply -f experiment.yaml
Eseguire il Processo di Ottimizzazione
Avviare l’ottimizzazione:
stormforge optimize run nginx-optimization
Monitorare il progresso dell’ottimizzazione utilizzando la CLI o il cruscotto StormForge.
Esaminare e Applicare le Raccomandazioni
Una volta completata l’ottimizzazione, recuperare le raccomandazioni:
stormforge optimize recommendations nginx-optimization
Aggiornare i manifesti di distribuzione Kubernetes con le impostazioni consigliate:
requests:
cpu: "200m"
memory: "160Mi"
limits:
cpu: "400m"
memory: "240Mi"
Applicare la configurazione aggiornata:
kubectl apply -f updated-deployment.yaml
Convalidare le Modifiche
Confermare che la distribuzione sia in esecuzione con le impostazioni aggiornate:
kubectl get pods
Monitorare l’utilizzo delle risorse per verificare i miglioramenti:
kubectl top pods
Integrare con gli Strumenti di Monitoraggio (Opzionale)
Se Prometheus non è installato, puoi installarlo per metriche aggiuntive:
helm install prometheus prometheus-community/prometheus
Usare le metriche di Prometheus per approfondire la comprensione dell’utilizzo delle risorse e delle prestazioni.
Automatizzare per l’Ottimizzazione Continua
Imposta un programma di ottimizzazione ricorrente utilizzando pipeline CI/CD. Successivamente, rivedi regolarmente le raccomandazioni man mano che gli oneri di lavoro delle applicazioni evolvono.
Conclusione
StormForge fornisce una soluzione efficiente e automatizzata per ottimizzare i carichi di lavoro di Kubernetes sfruttando l’apprendimento automatico per bilanciare le prestazioni e l’utilizzo delle risorse. Seguendo la guida passo dopo passo, è possibile integrare facilmente StormForge nel proprio ambiente Kubernetes, implementare esperimenti e applicare raccomandazioni basate sui dati per adattare le dimensioni delle proprie applicazioni.
Questo processo riduce i costi eliminando lo spreco di risorse e garantisce prestazioni applicative consistenti. L’integrazione di StormForge nei flussi di lavoro DevOps consente un’ottimizzazione continua, consentendo ai team di concentrarsi sull’innovazione mantenendo operazioni Kubernetes efficienti e affidabili.
Source:
https://dzone.com/articles/automating-kubernetes-workload-rightsizing-with-stormforge