Cuatro configuraciones sencillas de terminal de Kubernetes para mejorar su productividad



He gestionado el funcionamiento de grandes clústeres de Kubernetes durante más de tres años y quiero compartir mi enfoque minimalista para configurar el terminal kubectl, que ha demostrado ser muy eficaz en el trabajo diario. Una terminal de línea de comandos bien configurada puede aumentar enormemente su productividad. Es como pan y mantequilla, una combinación mágica.



Pero a diferencia de las modificaciones populares y las adiciones funcionales, creo en la configuración simple, que no requiere instalar nuevos binarios, envoltorios o modificaciones. Especialmente en el caso de kubectl, una herramienta nativa razonablemente bien diseñada con muy pocas desventajas.



Aquí hay cuatro complementos simples para la terminal kubectl. Con esta configuración, administro 20 grandes clústeres de Kubernetes de 400 máquinas todos los días.



Usando kubetail para rastrear registros de múltiples pods



Lo primero que nota al usar kubectl es la dificultad de realizar un seguimiento de los registros en varios pods. Este es uno de los escenarios más solicitados que aún no se ha implementado en kubectl.



Si necesita realizar un seguimiento del registro de un solo pod en kubectl, se verá así:



kubectl logs -f <POD_NAME> -n <NAMESPACE>


Para rastrear múltiples pods en kubetail, simplemente escriba:



kubetail <POD_NAME_REGEX> -n <NAMESPACE>


Comenzará a rastrear todos los pods que coincidan con la expresión regular. Dado que se registran varios pods al mismo tiempo, kubetail los marca en diferentes colores para ayudarlo a navegar.





kubetail es un contenedor simple sobre kubectl. Es fácil de instalar, puedes encontrar instrucciones aquí .



2. Cambiar dinámicamente el espacio de nombres predeterminado



Con el tiempo, se cansará de configurar el indicador del espacio de nombres para cada operación de kubectl una y otra vez. Necesitamos descubrir cómo cambiar dinámicamente los espacios de nombres predeterminados.



Para hacer esto, escribí una función de alias simple ksn(el nombre implica un espacio de nombres establecido ).



# Add the following to .zshrc/.bashrc...etc
# Allows setting default namespace while working with kubectl #

alias k='kubectl'
alias ksn='_f(){k get namespace $1 > /dev/null; if [ $? -eq 1 ]; then return $?; fi;  k config set-context $(k config current-context) --namespace=$1; echo "Namespace: $1"};_f'

#Usage:
#➜  ~ ksn dev1                                                       (dev-context/dev1)
#     Context "dev-context" modified.
#     Namespace: dev1

#➜  ~ ksn ff                                                         (dev-context/dev1)
#     Error from server (NotFound): namespaces "ff" not found






Por lo general, trabajamos con una variedad de espacios de nombres según la tarea actual. Y dado que el 80% de los problemas están asociados con los espacios de nombres de Kafka, esta función ha sido durante mucho tiempo mi herramienta predeterminada. Le ahorrará mucho tiempo, especialmente cuando trabaje en tareas complejas que requieran ingresar muchas instrucciones en kubectl.



3. Visualización de kube-context y namespace en el indicador de shell



Al usar los comandos de kubectl, siempre debe prestar atención al archivo actual kube-contexty namespace. No es tan fácil cuando administra simultáneamente clústeres en 20 contextos diferentes y 50 espacios de nombres. Existe el riesgo de utilizar un comando incorrecto en el entorno, especialmente cuando se trabaja en varias tareas al mismo tiempo en diferentes clústeres y contextos.



Para resolver este problema, es extremadamente útil mostrar constantemente el espacio de nombres activo y el contexto en la siguiente ventana.



En el siguiente ejemplo, mi contexto es dev2–1y el espacio de nombres es test. Me basta con mirar esta información cuando ejecuto diferentes comandos en el clúster.





Puede encontrar instrucciones de instalación y configuración aquí .



4. Los alias de kubectl más importantes



Los alias son la forma más rápida de personalizar y acelerar su trabajo en la terminal. Estos son mis alias más utilizados que casi se han convertido en parte de mi naturaleza:



alias k='kubectl '
alias kcc='kubectl config current-context'
alias kdp='kubectl delete po'
alias kgc='kubectl config get-contexts'
alias kge='kubectl get events --sort-by='\''{.lastTimestamp}'\'
alias kgp='kubectl get po'
alias kl='kubectl logs '
alias kpf='kubectl port-forward'
alias ksc='kubectl config use-context'


Menos es mejor: no sobrecargues tu terminal



Hemos cubierto cuatro mejoras de terminal importantes para los usuarios de kubectl:



  1. Uso de kubetail para rastrear registros de múltiples pods.
  2. Cambiar dinámicamente los espacios de nombres predeterminados para reducir significativamente la longitud de las instrucciones de kubectl.
  3. Visualización de contexto y espacios de nombres junto a su terminal para evitar errores accidentales.
  4. Lista de alias importantes de kubectl.


En contraste con este conjunto minimalista, las actualizaciones de terminales populares (como los K9 ) a menudo están sobrecargadas, llenas de funciones y envoltorios de dulces, pero son lentas, distraen y, lo que es más importante, innecesarias. Cuantas más funciones (lentejuelas y lazos) agregue, más tiempo se necesita para leer toda esa información adicional en la pantalla.



La elegante configuración del terminal lo ayuda a mantenerse concentrado como ninguna otra cosa.



La configuración simple basada en la línea de comandos le permitirá desarrollar rápida y eficientemente utilizando herramientas y binarios nativos. Esto es muy importante, especialmente cuando se trabaja con una gran infraestructura, iniciando y cerrando sesión en diferentes perfiles en máquinas virtuales.



La configuración de su terminal debe enriquecerlo como desarrollador, no hacerle sentir que no tiene manos.



All Articles