En el mundo de Kubernetes, el dominio del comando kubectl ha sido siempre una habilidad esencial tanto para administradores de clústeres como para equipos de desarrollo; y se podría decir que lograrlo requiere bastante tiempo y esfuerzo. ¿No sería genial contar con una herramienta que sea capaz de utilizar la IA para ayudarnos a superar esa barrera de entrada?

En este post hablaremos sobre kubectl-ai, un asistente inteligente desarrollado por el equipo de Google Cloud Platform que permite interactuar con Kubernetes utilizando lenguaje natural. Esta herramienta podría simplificar significativamente las operaciones complejas, convirtiendo preguntas o instrucciones en lenguaje natural en comandos precisos de kubectl, además de proporcionar ayuda contextual.

¿Qué es kubectl-ai?

kubectl-ai es una herramienta de línea de comandos que actúa como una interfaz inteligente entre los usuarios y Kubernetes. Interpreta consultas en lenguaje natural, traduce las solicitudes a comandos kubectl precisos, los ejecuta y proporciona resultados claros y enriquecidos con explicaciones. La herramienta funciona como un plugin de kubectl y también como una aplicación independiente, ofreciendo flexibilidad máxima para diferentes entornos de trabajo.

A pesar de ser una herramienta publicada por el equipo de Google Cloud Platform, no se encuentra limitada a Gemini, la IA de Google, como proveedor. Cuenta con soporte para múltiples proveedores, incluyendo Google Gemini (por defecto), Vertex AI, OpenAI, Azure OpenAI, Grok de xAI, y modelos locales a través de Ollama o llama.cpp. Esta versatilidad permite a las organizaciones elegir el modelo de IA que mejor se adapte a sus necesidades, requisitos de seguridad y presupuesto.

Instalación y configuración

La instalación de kubectl-ai es sencilla. Para sistemas Linux y macOS, se puede instalar con un simple comando:

curl -sSL https://raw.githubusercontent.com/GoogleCloudPlatform/kubectl-ai/main/install.sh

Alternativamente, se puede instalar usando Krew, el gestor de plugins de kubectl:

kubectl krew install ai

Para la configuración básica usando el modelo Gemini por defecto se necesita establecer una variable de entorno con la clave API:

export GEMINI_API_KEY=your_api_key_here

Si no se cuenta con una API_KEY de Gemini, es posible generarla desde Google AI Studio.

Punto de vista de la administración de Kubernetes

A continuación vemos ejemplos de tareas típicas realizadas por un perfil administrador de Kubernetes con kubectl, y luego las mismas tareas con kubectl-ai.

Diagnóstico de nodos problemático

Para obtener información sobre el estado de un nodo en Kubernetes, el admin puede ejecutar una serie de comandos como:

kubectl get nodes --show-labels
kubectl describe node worker-3
kubectl top nodes
kubectl get pods --all-namespaces --field-selector spec.nodeName=worker-3
kubectl get events --field-selector involvedObject.kind=Node

Diagnóstico simplificado

Con kubectl-ai, estas mismas operaciones se pueden realizar utilizando lenguaje natural. En este caso, en una sesión interactiva.

kubectl ai --model gemini-2.0-flash
 Hey there, what can I help you with today?
>>> show me the health status of all nodes and highlight any issues
  I need to examine the nodes in your Kubernetes cluster to assess their health
  status and identify any potential issues. I will use  kubectl get nodes  to
  retrieve information about the nodes and then analyze the output for any
  problems.
  Running: kubectl get nodes
  The nodes worker-1, worker-2, and worker-3 are in the cluster. worker-1 and worker-2 are
  ready. worker-3 is Ready, but SchedulingDisabled. This means that no new pods can
  be scheduled on worker-3. I will get more details about the nodes to see if there
  are any issues.
  Running: kubectl describe node worker-1
  Running: kubectl describe node worker-2
  Running: kubectl describe node worker-3
  Here's a summary of the health status of your nodes:
  • worker-1: Ready. The node's resource allocation is overcommitted. CPU is at 48%
  requests and 552% limits, and memory is at 46% requests and 726% limits.
  • worker-2: Ready. The node's resource allocation is overcommitted. CPU is at 42%
  requests and 1462% limits, and memory is at 60% requests and 1996% limits.
  There's also a warning about an invalid disk capacity.
  • worker-3: Ready, but SchedulingDisabled. This node has a taint that prevents new
  pods from being scheduled on it. Additionally, there are warnings about
  certificates expiring in 90 days and a suggestion to restart k3s on this node.

Como podemos observar, kubectl-ai no solo ejecuta los comandos apropiados, sino que también proporciona análisis contextual y explicaciones sobre los problemas encontrados. Esto es especialmente valioso durante incidentes críticos donde cada segundo cuenta.

Punto de vista de desarrollo

Desarrollo tradicional con kubectl

Los equipos de desarrollo que despliegan aplicaciones en Kubernetes enfrentan desafíos diferentes pero igualmente complejos.

Despliegue de aplicaciones

kubectl create deployment nginx-app --image=nginx:1.20
kubectl expose deployment nginx-app --port=80 --type=LoadBalancer
kubectl scale deployment nginx-app --replicas=3

Debugging de aplicaciones

kubectl logs -f deployment/nginx-app
kubectl exec -it nginx-app-pod-name -- /bin/bash
kubectl describe pod nginx-app-pod-name


Gestión de configuraciones

kubectl create configmap app-config --from-file=config.properties
kubectl create secret generic app-secrets --from-literal=db-password=secret123

Experiencia mejorada

Para perfiles de desarrollo, kubectl-ai transforma el desarrollo en Kubernetes en una experiencia más natural.

Despliegue simplificado

kubectl ai "create a deployment with nginx and a service that exposes port 80"
kubectl ai "scale my nginx deployment to 5 replicas"

kubectl-ai genera automáticamente los manifiestos YAML completos y pregunta si se desean aplicar directamente al clúster.

Debugging conversacional

kubectl ai "show me the logs for the nginx app in the hello namespace"
kubectl ai "explain why my pod is stuck in Pending state"

La herramienta no solo muestra los logs, sino que también puede analizar errores comunes y sugerir soluciones.

Gestión de configuraciones inteligente

kubectl ai "create a ConfigMap for my Flask app with database configuration"
kubectl ai "check if my app has the correct permissions to access the database secret"

Comparación

Velocidad y eficiencia

kubectl requiere que los usuarios:

kubectl-ai permite a los usuarios:

Curva de aprendizaje

Vamos a ver la investigación de un pod con problemas como caso de ejemplo.

kubectl requiere al menos 4 comandos distintos con sus opciones:

kubectl get pods -A --field-selector=status.phase=Failed
kubectl describe pod failing-pod-name -n namespace
kubectl logs failing-pod-name -n namespace --previous
kubectl get events --field-selector involvedObject.name=failing-pod-name -n namespace

kubectl-ai en cambio, permite realizar una sola consulta para obtener, además de la información del estado, una explicación de las posibles causas:

kubectl ai "find all failed pods and explain what went wrong"

Esta diferencia es especialmente notable en el caso de perfiles de desarrollo y administración que no utilizan Kubernetes a diario.

Casos de uso. ¿Dónde lo podemos usar?

Un perfil de administración puede beneficiarse especialmente en estos casos.

kubectl ai "check if any users have excessive permissions to delete deployments"
- **Monitoreo de recursos**
kubectl ai "show me which pods are consuming the most CPU and memory"
kubectl ai "find all pods that restarted in the last hour and explain why"

Y los equipos de desarrollo pueden aprovecharlo en estos casos:

kubectl ai "create a complete YAML for a Flask app with 2 replicas and resource limits"
- **Validación de configuraciones**
kubectl ai "check if my deployment follows Kubernetes best practices"
- **Troubleshooting de aplicaciones**
kubectl ai "why is my application returning 503 errors?"

Consideraciones de seguridad y limitaciones

kubectl-ai opera en modo solo lectura por defecto y solicita permiso antes de ejecutar cualquier comando que pueda modificar recursos en el cluster. Esta característica es muy importante al trabajar en entornos productivos donde se deberán minimizar los cambios disruptivos.

Es importante tener en cuenta que, como toda herramienta basada en IA, kubectl-ai puede ocasionalmente generar comandos incorrectos o malinterpretar instrucciones, por lo que es crucial que el usuario cuente con unos mínimos conocimientos sobre Kubernetes antes de operar esta herramienta.

Para organizaciones con estrictos requisitos de seguridad, es posible utilizar modelos de IA locales con Ollama, permitiendo el uso de IA sin acceder a servicios externos.

Errores comunes

Durante las pruebas iniciales, utilizando el modelo “gemini-2.0-flash” nos hemos encontrado ocasionalmente mensajes de error como este:

kubectl ai --model gemini-2.0-flash "show me pods with issues"
Error: reading streaming LLM response: iterateResponseStream: invalid stream chunk: {
  "error": {
    "code": 503,
    "message": "The model is overloaded. Please try again later.",
    "status": "UNAVAILABLE"
  }
}

Por esto, recomendaría valorar el uso de LLMs locales como Ollama que no se encuentran en infraestructura compartida.

Conclusiones

kubectl-ai representa un cambio de paradigma en cómo interactuamos con Kubernetes. La herramienta no reemplaza la necesidad de entender los conceptos básicos de Kubernetes y cómo funciona, sino que reduce la fricción y simplifica las operaciones complejas, acelerando significativamente el trabajo del día a día.

Para perfiles de administración experimentados, kubectl-ai podría considerarse un acelerador de productividad, permitiendo expresar intenciones complejas mediante lenguaje natural. Para equipos de desarrollo y administradores junior, sirve como un asistente inteligente que no solo ejecuta comandos, sino que también proporciona información adicional y posibles explicaciones en casos de problemas.

Mientras que kubectl tradicional seguirá siendo fundamental para operaciones precisas y scripts automatizados, kubectl-ai emerge como el compañero perfecto para la exploración, el diagnóstico y la ejecución rápida de tareas complejas. La combinación de ambas herramientas promete hacer que Kubernetes sea más accesible y manejable para equipos de todos los niveles de experiencia.

La revolución de la IA en DevOps apenas está comenzando, y kubectl-ai es un ejemplo perfecto de cómo la inteligencia artificial puede transformar herramientas complejas en interfaces conversacionales intuitivas sin sacrificar poder o precisión.

Cuéntanos qué te parece.

Los comentarios serán moderados. Serán visibles si aportan un argumento constructivo. Si no estás de acuerdo con algún punto, por favor, muestra tus opiniones de manera educada.

Suscríbete