# K9s: Otro estilo de CLI para k8s K9s es una interfaz de usuario basada en un terminal para interactuar con sus clústeres Kubernetes. El objetivo de este proyecto es facilitar la navegación, la observación y la gestión de sus aplicaciones desplegadas en la naturaleza. K9s observa continuamente a Kubernetes en busca de cambios y ofrece comandos posteriores para interactuar con sus recursos observados. Preview de la web oficial: [![asciicast](https://asciinema.org/a/305944.svg)](https://asciinema.org/a/305944) **Índice** - [K9s: Otro estilo de CLI para k8s](#k9s-otro-estilo-de-cli-para-k8s) - [Instalar k9s con el código](#instalar-k9s-con-el-código) - [Argumentos CLI](#argumentos-cli) - [Key Bindings](#key-bindings) - [Usando k9s](#usando-k9s) - [Visualización de recursos](#visualización-de-recursos) - [Buscar](#buscar) - [Navegando por los recursos de Kubernetes](#navegando-por-los-recursos-de-kubernetes) - [Logs de los recursos de Kubernetes](#logs-de-los-recursos-de-kubernetes) - [Operaciones en recursos Kubernetes](#operaciones-en-recursos-kubernetes) - [Herramientas de monitorización](#herramientas-de-monitorización) - [Aliases](#aliases) - [Popeye scanning](#popeye-scanning) ## Instalar k9s con el código Para estar seguro de como se instala lo mejor es mirar la [documentación oficial](https://k9scli.io/topics/install/) o el [repositorio git](https://github.com/derailed/k9s), teniendo en cuenta que actualizan más el repo. Yo lo he instalado así: ```shell # Primero instalar golang si no lo tienes ya sudo apt install golang ## Se comprueba la versión go version ``` ```shell # descargamos con git y entramos en la carpeta git clone https://github.com/derailed/k9s.git && cd k9s ``` ```shell # Se ejecuta el Makefile make build && ./execs/k9s ``` ```shell # Se mueve el contenido en carpeta oculta mv k9s .k9s ``` ```shell # Se copia el binario a bin local sudo cp .k9s/execs/k9s /usr/local/bin/. ``` ```shell #Se comprueba si podemos entrar al cluster de nuestro contexto k9s ``` No es muy ortodoxo pero es funcional. ## Argumentos CLI K9s CLI viene con una vista de argumentos que puede utilizar para lanzar la herramienta con diferente configuración. ```shell # Lista de todas las opciones de la CLI disponibles k9s help ``` ```shell # Obtener información sobre el tiempo de ejecución de K9s (registros, configuraciones, etc.) k9s info ``` ```shell # Ejecutar K9s en un espacio de nombres determinado. k9s -n mycoolns ``` ```shell # Ejecutar K9s y lanzarlo en la vista de pod a través del comando pod. k9s -c pod ``` ```shell # Inicie K9s en un contexto KubeConfig no predeterminado k9s --context coolCtx ``` ```shell # Inicie K9s en modo de sólo lectura - con todos los comandos de modificación deshabilitados k9s --readonly ``` Por defecto k9s leerá el KUBECONFIG actual, que a su vez se lee por defecto de $HOME/.kube/config. En todo caso se le puede indicar ```shell # Exportar archivo de configuración de kubectl k9s --kubeconfig .kube/config ``` ## Key Bindings Acción | Comando | Comentario ---|---|--- Mostrar los mnemónicos de teclado activos y la ayuda | `?` Mostrar todos los alias y recursos disponibles en el clúster | `ctrl-a` o `:alias` Salir de K9s | `:q`, `ctrl-c` Ver un recurso de Kubernetes utilizando el singular/plural o el nombre corto | `:po`⏎ | acepta el singular, el plural, el nombre corto o el alias, es decir, pod o pods Ver un recurso de Kubernetes en un espacio de nombres dado | `:alias namespace`⏎ Filtrar una vista de recursos dado un filtro | `/filter`⏎ | Regex2 soportado ie `fred\|blee` para filtrar recursos llamados fred o blee Filtro regex inverso | `/ ! filter`⏎ | Guarda todo lo que no coincide. No se ha implementado para los registros. Filtrar la vista de recursos por etiquetas | `/-l label-selector`⏎ Buscar difusamente un recurso dado un filtro | `/-f filter`⏎ Sale del modo de vista/comando/filtro | `` Mapeo de teclas para describir, ver, editar, ver registros,... | `d`,`v`, `e`, `l`,... Para ver y cambiar a otro contexto de Kubernetes | `:ctx`⏎ Para ver y cambiar a otro contexto de Kubernetes | `:ctx context-name`⏎ Para ver y cambiar a otro espacio de nombres de Kubernetes | `:ns`⏎ Para ver todos los recursos guardados | `:screendump o sd`⏎ Para eliminar un recurso (TAB y ENTER para confirmar) | `ctrl-d` Para eliminar un recurso (¡no hay diálogo de confirmación!) | `ctrl-k` Alternar columnas anchas | `ctrl-w` | Equivalente a kubectl ... -o wide Alternar el estado de error | `ctrl-z` | Ver los recursos en estado de error Lanzar la vista de pulsos | `:pulsos o pu`⏎ Lanzar vista XRay | `:xray RECURSO [NAMESPACE]`⏎ | RECURSO puede ser uno de po, svc, dp, rs, sts, ds, NAMESPACE es opcional Lanzar la vista de Popeye | `:popeye o pop`⏎ | Ver https://popeyecli.io ## Usando k9s Ya con `k9s` iniciado tendremos una pantalla de visualización en la que podremos darle [ordenes](#key-bindings). Por ejemplo, y como se indica en la anterior tabla, `?` es para pedir ayuda. ### Visualización de recursos Si estás familiarizado con los [comandos de vim](https://gitea.vergaracarmona.es/man-linux/Guia-VIM), te sentirás como en casa con K9s. La forma de cambiar de introducir las ordenes es con dos puntos. Así, para ver los pods del cluster se debe escribir `:pods` y pulsar enter. Para ver los nodos se escribe `:node` e Intro. Se pueden ver sugerencias en la línea de comandos a medida que escribes, por lo que se puede aprovechar la opción de completar con el tabulador y ahorrar en pulsaciones. Así, para ver todos los espacios de nombres del clúster, sólo tendrá que escribir: ```shell :na -- /bin/bash`. Para salir es igual, con `exit`. ### Herramientas de monitorización K9s dispone de un conjunto de herramientas de monitorización, además del polling periódico del recurso seleccionado (pod, nodo, etc) que se obtiene en la pantalla principal. Una de las visualizaciones más interesantes es el modo `:pulses`. Con esta vista aparecen gráficos live-updating y codificados por colores de los principales aspectos del clúster. ![pulses](https://k9scli.io/assets/screens/pulses.png) Permite navegar para profundizar en cada pulso mostrado utilizando el tabulador o seleccionando el número correspondiente al recurso concreto en la barra superior. Para salir de cualquier vista es pulsando `Esc`. ### Aliases Al igual que con la shell se pueden crear alias en K9s para acelerar los comandos comunes que se ejecuten. Para crear un alias, necesitas crear un archivo en el directorio `.k9s/`. Por defecto, éste se encuentra en la HOME de usuario: `$HOME/.k9s`. Es necesario crear un archivo llamado `alias.yml` en este directorio. El formato de las definiciones de alias es en forma de `alias:grupo/versión/recurso`. Por ejemplo, si quieres hacer un alias `dep` para ver todos los despliegues, tendrías que definirlo en `alias.yml` como ```yaml alias: dep: apps/v1/deployments ``` Ahora en k9s se podrá escribir `:dep ` y ver sus despliegues. En la [documentación oficial](https://k9scli.io/topics/aliases/) hay más detalles sobre la estructura y el uso del archivo de alias. ### Popeye scanning K9s incluye la herramienta de desinfección de Kubernetes Popeye. Permite comparar la configuración de un clúster con las mejores prácticas. Se abre con el comando `:popeye`. Esto abrirá una página de resumen de escaneo que dará una puntuación general y los componentes que Popeye ha analizado. Puede desglosar cualquier componente, como los conjuntos de demonios, para ver las razones de los resultados. Para mitigar alguno de los problemas de configuración detectados por el análisis de Popeye se puede buscar el mensaje de error concreto.

Si aun tienes dudas puedes ver los [Vídeo-tutoriales](https://k9scli.io/topics/video/) de [Fernand Galiana](https://github.com/derailed).
--- Por ahora está es la última guía. Con el tiempo iré añadiendo más, pero si tienes alguna petición ponte en contacto conmigo [aquí](https://vergaracarmona.es) 😊 Todas las guías: - [01 Instalación kubctl](01-kubectl.md) - [02 Clústers](02-clusters.md) - [03 manifiestos](03-manifiestos.md) - [04 Cheatsheet kubernetes](04-cheatsheet.md) - [05 Helm: Control de despliegues en Kubernetes](05-helm.md) - [06 K9s: Otro estilo de CLI para k8s](06-k9s.md) -