K9s
K9s es una interfaz de usuario de terminal (TUI) para Kubernetes. Es más rápido que hacer clic en un panel web y más descubrible que el kubectl sin procesar.
Cuándo usarlo
- Gestión de clústeres Kubernetes basada en terminal: Interfaz curses interactiva y rápida para navegar por pods, servicios y deployments.
- Streaming de registros en tiempo real y monitorización de recursos: Seguimiento de registros de múltiples pods, ordenación por CPU/memoria y reenvío de puertos.
- Plugins y alias personalizados de K9s: Extensión de la CLI con comandos shell personalizados (por ejemplo, ejecutar stern, estado de cert-manager).
- Inspección y depuración de solo lectura: Depuración segura de clústeres de producción con modos de solo lectura.
Inicio rápido
# Iniciar k9s con el kubeconfig activo
k9s
# Atajos de navegación en k9s:
# :pods - Ver todos los pods en todos los namespaces
# :deploy - Ver deployments
# :svc - Ver servicios
# /<término> - Filtrar elementos en la vista activa
# l - Transmitir registros del pod seleccionado
# s - Abrir shell (exec) dentro del contenedor seleccionado
Conceptos principales
Configuración de plugins personalizados (plugins.yaml)
Añadir comandos de teclado personalizados para depuración rápida:
# ~/.config/k9s/plugins.yaml
plugin:
# Presiona 'Shift-D' en un deployment para ver el historial detallado de lanzamiento
rollout-history:
shortCut: Shift-D
confirm: false
description: "Historial de lanzamiento"
scopes:
- deployments
command: kubectl
background: false
args:
- rollout
- history
- deployment/$NAME
- -n
- $NAMESPACE
# Presiona 'Shift-F' en un pod para iniciar un contenedor de depuración interactivo
debug-pod:
shortCut: Shift-F
confirm: true
description: "Depurar Pod"
scopes:
- pods
command: kubectl
background: false
args:
- debug
- -it
- $NAME
- --image=nicolaka/netshoot
- -n
- $NAMESPACE
Atajos de navegación y teclado esenciales
Acelerar la gestión del clúster:
:pod: Saltar a la vista de Pods en todos los namespaces.:svc,:deploy,:ing: Saltar a Servicios, Deployments e Ingresses./: Buscar y filtrar recursos por nombre o estado.l: Seguir registros del pod o contenedor seleccionado.s: Abrir un shell interactivo (sh/bash) dentro del contenedor seleccionado.Shift-F: Reenviar puerto local al puerto del servicio del pod seleccionado.y: Ver el manifiesto YAML completo del recurso seleccionado.
Iniciar K9s con opciones personalizadas
Iniciar K9s en modos seguros:
# Iniciar en modo solo lectura para evitar eliminación accidental de pods en producción
k9s --readonly --namespace production
# Especificar contexto personalizado y tasa de actualización
k9s --context prod-eks-cluster --refresh 2
Patrones comunes
Atajos y plugins personalizados de K9s
Problema: Ejecutar frecuentemente comandos kubectl personalizados en diferentes namespaces.
Solución: Definir plugins personalizados en ~/.config/k9s/plugin.yaml.
# ~/.config/k9s/plugin.yaml
plugin:
raw-logs:
shortCut: Shift-L
description: "Seguir registros sin truncamiento"
scopes:
- pods
command: kubectl
background: false
args:
- logs
- -f
- $NAME
- -n
- $NAMESPACE
- --context
- $CONTEXT
Mejores prácticas (2026)
- Haz usa
k9s --readonlyal conectarte a entornos de producción para evitar eliminaciones accidentales. - Haz configura plugins personalizados en
~/.config/k9s/plugins.yamlpara comandoskubectlrepetitivos. - Haz usa el atajo de reenvío de puertos (
Shift-F) en lugar de escribir comandoskubectl port-forwardlargos. - Haz filtra vistas usando namespaces
<all>o namespaces específicos para reducir las cargas de consulta al servidor API. - No dejes docenas de reenvíos de puertos activos abiertos; gestiona y termínalos en la vista
:portforwards. - No ejecutes K9s contra clústeres empresariales grandes sin establecer intervalos
--refreshapropiados. - No elimines reclamaciones de volúmenes persistentes (PVC) a través de K9s sin verificar las copias de seguridad.
Solución de problemas
| Error | Causa | Solución |
|---|---|---|
¡Boom! K9s no puede conectar al clúster | Contexto de kubeconfig activo inválido o endpoint del clúster inalcanzable. | Verifica la conexión: kubectl cluster-info y cambia de contexto con kubectl config use-context. |
Fallo al transmitir registros de pod en k9s | El contenedor del pod falló o el usuario carece de permiso RBAC pods/log. | Verifica el estado del contenedor y los permisos del rol del clúster. |
Visualización de terminal corrupta o con artefactos | Terminfo de terminal incompatible o ventana de terminal pequeña. | Ejecuta export TERM=xterm-256color y maximiza la ventana de terminal. |