Kubectl: cómo descargarlo y configurarlo

14min

Si utilizas contenedores para el despliegue de aplicaciones y quieres orquestar tus instancias de una manera profesional y apta para entornos reales, entonces te interesa utilizar Kubernetes. Y si estás administrando este orquestador de Kubernetes, te vendrá bien esta guía sobre Kubectl, el CLI oficial de Kubernetes.

Índice

¿Qué es Kubectl y para qué sirve?

Kubectl es la herramienta de línea de comandos oficial que tienes a tu disposición para administrar el orquestador de contenedores Kubernetes. Consiste en un conjunto de comandos útiles para realizar todo tipo de acciones de administración sobre clusters, que podrás utilizar para desplegar, gestionar o monitorizar las instancias.

Para funcionar, Kubectl realiza una comunicación directa con el API Server de Kubernetes, que nos ofrece todo el juego de funciones disponible para realizar las tareas de administración y configuración de los clústeres y los contenedores que ejecutan los pods.

Ventajas de usar Kubectl para gestionar clústeres

Kubectl es una herramienta indispensable si estás trabajando con Kubernetes algunos de los motivos son los siguientes.

Control total desde la línea de comandos

Con Kubectl tienes acceso directo a todas las funcionalidades de administración de Kubernetes, para trabajar con los clústeres y los pods. Todo lo haces a través de línea de comandos sin interfaz gráfica, que es el escenario más frecuente cuando tienes que administrar servidores.

Compatibilidad nativa con Kubernetes

Por ser la herramienta oficial de Kubernetes tienes el mejor soporte para trabajar con el orquestador de contenedores, así como el mayor control sobre los recursos que administras.

Automatización de tareas repetitivas

Como es una herramienta de línea de comandos tienes la posibilidad de crear todo tipo de scripts de automatización para administrar despliegues, pruebas o realizar la administración de los recursos en general.

Flexibilidad y rapidez en operaciones

Nuevamente, al ser la herramienta oficial, te aporta la mayor flexibilidad en la administración de Kubernetes. Además con los comandos que te ofrece la CLI puedes perfectamente realizar tareas tanto simples como complejas con una gran rapidez.

Amplia documentación y comunidad de soporte

Kubectl te ofrece una estupenda documentación para poder aprender, o usar de referencia en tu día a día durante la administración.

Además, cuenta con una gran comunidad que publica tutoriales y otros recursos en Internet como vídeos y cursos. Todo ello hará que te resulte bastante sencillo aprender Kubectl o encontrar soluciones a problemas frecuentes del día a día.

Requisitos previos antes de instalar Kubectl

Vamos a ver ahora qué necesitas para instalar Kubectl en tu sistema operativo.

Sistemas operativos compatibles

Kubectl es una interfaz de línea de comandos multiplataforma, por lo que funciona en los sistemas operativos más populares incluyendo Windows Linux y macOS.

Puedes instalarlo tanto en tu ordenador de escritorio como en servidores remotos. Al ser un simple cliente del API de Kubernetes en realidad no importa donde lo tengas instalado, simplemente tienes que asegurarte de configurarlo debidamente con las credenciales de los servidores que vayas a administrar.

Versiones de Kubernetes soportadas

A la hora de instalar Kubectl en tu sistema es importante que verifiques cuál es la versión de Kubernetes que tengas en los servidores que vas a administrar.

Como regla general, las versiones deben ser las mismas, pero también podría funcionar bien aunque no coincidan exactamente. La recomendación es que al menos estén suficientemente próximas, lo que generalmente se entiende por ser una versión arriba o abajo como máximo.

Dependencias necesarias para la instalación

La herramienta no tiene ninguna dependencia en especial para que pueda trabajar en la mayor parte de los sistemas operativos. Eso sí, necesitarás conexión a Internet para acceder a los servidores remotos, así como las correspondientes credenciales de administración.

Cómo descargar Kubectl en tu sistema

Ahora que ya conoces los requisitos vamos a ver cómo poder obtener esta herramienta en  los sistemas operativos más populares.

Descargar Kubectl en Linux

Para obtener Kubectl en Linux utilizaremos comandos del terminal que nos permitirán descargar la herramienta e instalarla desde las fuentes oficiales.

Te recomendamos entrar en la documentación de Kubectl para verificar los comandos actualizados con la versión más reciente. En el momento de escribir este post, el comando exacto era el siguiente.

curl -LO 'https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl'

Descargar Kubectl en macOS

Si estás trabajando en un sistema operativo macOS la manera más sencilla de conseguir Kubectl es utilizar el gestor de paquetes homebrew.

brew install kubectl

Descargar Kubectl en Windows

Ahora bien, si estás en Windows tienes diversos modos de trabajo para obtener este comando en tu sistema. Uno muy sencillo es utilizar el gestor de paquetes de Windows Chocolatey. Si lo tenemos instalado en nuestro Windows podrás conseguir Kubectl con este simple comando.

choco install kubernetes-cli

También puedes instalar directamente el binario de Kubectl utilizando un comando con curl, para lo que te recomendamos acceder a la página oficial de documentación de Kubernetes donde encontrarás el comando en la versión más reciente.

En este momento es este:

curl -LO https://dl.k8s.io/release/v1.34.0/bin/windows/amd64/kubectl.exe

Cómo instalar y verificar Kubectl

Una vez descargado Kubectl ya lo tendrás disponible para empezar a trabajar, aunque eventualmente puedes necesitar algunos pasos adicionales que vamos a comentar a continuación.

Instalación de Kubectl en Linux

En Linux puede que necesites darle permisos al archivo de descarga de Kubectl y además moverlo a la carpeta donde están los comandos de tu usuario. Si lo has descargado con Curl será generalmente así:

chmod +x kubectl
sudo mv kubectl /usr/local/bin/

Instalación de Kubectl en macOS

Si usaste Homebrew, no debería haber más necesidades con lo que respecta a la instalación, ya que el comando se instalará automáticamente en las rutas adecuadas para poder ejecutarlo desde el terminal.

Instalación de Kubectl en Windows

Igual que ocurría si utilizas homebrew en Mac, cuando instalaste Kubectl a través del gestor de paquetes Chocolatey de Windows el sistema ya publica el archivo en el lugar adecuado para que puedas utilizarlo desde tu terminal, por lo que no tendrás que hacer nada más.

Ahora bien, si no tienes Chocolatey o lo instalaste por medio de curl, entonces sí que tendrás que colocar el archivo binario del comando en tu PATH.

Verificar la versión instalada de Kubectl

Una vez ya tienes Kubectl instalado en tu sistema puedes verificar la instalación lanzando el siguiente comando:

kubectl version --client

Este comando funcionará en cualquier sistema operativo y te mostrará la versión de la herramienta lo que confirmará que está correctamente instalada.

Configuración inicial de Kubectl

Ahora que ya tienes instalado el comando y has comprobado que al lanzarlo en tu terminal responde correctamente, vamos a proceder a los siguientes pasos, ya que todavía tenemos que hacer algunas tareas adicionales para conseguir configurarlo de manera correcta, antes de comenzar a administrar tus clusters de Kubernetes.

Conectar Kubectl a un clúster de Kubernetes

El primer paso para poder conseguir conectar Kubectl a un cluster de Kubernetes es conseguir las credenciales de acceso al servidor. Estas credenciales serán absolutamente necesarias para que el API server de Kubernetes sea capaz de obtener el control de tus recursos.

Para conseguir realizar esta configuración se utiliza un archivo llamado «kubeconfig», del que hablaremos a continuación. Para conseguir este archivo muchas veces existen herramientas de administración en tus proveedores cloud que te facilitan mucho las cosas. Consulta en tu propio proveedor. Por ejemplo en Arsys tenemos un servicio de Kubernetes administrados en el cual puedes conseguir directamente las credenciales de acceso ya correctamente definidas.

Por supuesto, también es necesario que tengas la dirección de tu servidor y conectividad hacia él, ya sea por Internet o utilizando alguna red privada si fuera el caso.

Configurar el archivo kubeconfig

El archivo kubeconfig qué habrás descargado desde el panel cloud de tu proveedor lo tienes que ubicar en la ruta siguiente: ~/.kube/config.

En este archivo encontrarás información sobre:

  • Clústeres disponibles para administración.
  • Usuarios y credenciales de acceso a los recursos.
  • Contextos de conexión que podrían ser necesarios en cada caso.

Podrías perfectamente añadir o modificar las configuraciones en el archivo de manera manual pero también existen comandos de Kubectl para para poder hacer cambios.

Puedes definir un clúster en la configuración con este comando;

kubectl config set-cluster <nombre> --server=<url_api>

Puedes definir las credenciales de acceso para el usuario con el comando:

kubectl config set-credentials <usuario> --token=<token_o_certificado>

Además puedes crear un contexto, que combina un clúster y unas credenciales de usuario.

kubectl config set-context <nombre_contexto> --cluster=<nombre> --user=<usuario>

El contexto es lo que usas en tu día a día para indicar qué cluster quieres conectar con qué credenciales de acceso.

Cambiar de contexto entre clústeres

Es posible que tengas varios contextos creados, sobre todo ocurrirá en el caso de que tengas que trabajar con varios clústers de Kubernetes. En este caso tendrás que alternar entre ellos, para dejar perfectamente claro cuáles son los recursos estás administrando en cada momento.

Para ello tendrás que lanzar el comando use-context, de esta forma:

kubectl config use-context <nombre_contexto>

Si en algún momento necesitas saber cuáles son los clúster que tienes disponibles puedes realizar un listado con el siguiente comando:

kubectl config get-contexts

Autenticación y gestión de credenciales

Existen diversos mecanismos de autenticación que puedes utilizar para trabajar con servidores. En este sentido Kubectl es bastante flexible consiguiendo adaptarse a una diversa gama de situaciones y facilitando que mantengamos las credenciales seguras.

Entre otros puedes usar certificados TLS, tokens de servicio, o credenciales gestionadas por proveedores cloud. También existen plugins que podrían aumentar las posibilidades de trabajo con credenciales.

Comandos básicos de Kubectl para empezar

Aparte de los comandos que hemos visto en el punto dedicado a la configuración, vamos a ver ahora otra serie de comandos que necesitarás usar para la administración de tus recursos.

Obtener información del clúster

El primer comando que vamos a conocer en este bloque de gestión de recursos nos permite información sobre el clúster de servidores en el que estemos administrando, lo que nos ofrecerá datos relevantes sobre el estado general del clúster.

Para comprobar el estado general del clúster lanzas este comando.

kubectl cluster-info

También puedes pedir la lista de nodos que forman parte del cluster de Kubernetes, siendo que estos nodos podrían ser tanto máquinas virtuales o máquinas físicas.

kubectl get nodes

Así mismo, los nodos se clasifican como nodos de trabajo (workers) o nodos de control (control plane), según el rol que desempeñan y mediante el comando anterior podrás observar también esta clasificación.

Listar pods y servicios

Ahora vamos a ver algunos comandos para gestionar pods, comenzando por los que nos permiten conocer la lista de pods y servicios en un namespace del clúster.

Este comando muestra los pods que tenemos en el namespace default:

kubectl get pods

Pero podríamos querer visualizar los de otro namespace. En ese caso usamos la opción -n seguido del nombre del namespace que queremos ver.

kubectl get pods -n production

Ahora bien, si lo que queremos es ver los servicios que exponen los pods, dentro del namespace, lanzaremos este comando:

kubectl get services

Igual que antes, podrías usar la opción -n en «get services» para seleccionar otro namespace.

Desplegar aplicaciones con Kubectl

Con Kubernetes puedes crear un despliegue desde un archivo YAML, la opción generalmente más recomendable, ya que nos permite trabajar de una manera más declarativa y versionando la configuración de los despliegues a través de Git.

Si trabajamos de este modo, existe un comando para conseguir que se aplique la configuración definida en el YAML: «apply».

kubectl apply -f mi_aplicacion.yaml

Aunque también podríamos trabajar de una manera más imperativa, creando los recursos desde línea de comandos, usando otros comandos de kubectl.

kubectl create deployment nginx --image=nginx

Esta opción puede ser interesante para probar algo rápidamente, que no necesitemos reproducir de nuevo más adelante. Pero en la práctica no es tan frecuente porque realmente solo crea el recurso que le indicas y te faltaría crear el service, así cómo exponerlo y otra serie de cosas que puedes definir de una vez en el YAML.

Escalar y actualizar recursos

Ahora vamos a ver otros comandos para escalar y actualizar recursos usando el CLI de Kubernetes.

Para hacer el escalamiento en un despliegue, de modo que se aumente o disminuya el número de réplicas, podemos usar el comando «scale».

kubectl scale deployment nginx --replicas=5

De este modo estamos indicando que el Deployment llamado nginx debe tener 5 réplicas de su pod. Esto puede servir tanto si tenía menos replicas, para que aumente hasta 5, como si tenía más, en cuyo caso hará una disminución.

Ahora vamos a ver cómo puedes actualizar la imagen de un pod, con el comando «set image»:

kubectl set image deployment/nginx nginx=nginx:1.25

En este caso estamos indicando a Kubernetes que tome el deployment nginx para que, dentro de sus pods, tome el contenedor llamado nginx para cambiarle la imagen a Nginx en su versión 1.25.

Buenas prácticas para usar Kubectl

Ya para acabar esta guía de Kubectl vamos a ver una serie de prácticas recomendadas que te permitirán trabajar de un modo más consistente y seguro.

Uso de alias y autocompletado

Si quieres ahorrar tiempo al escribir los comandos puedes crear un alias del comando en la configuración de tu terminal. Por ejemplo:

alias k=kubectl

Si quieres habilitar el autocompletado de los comandos de Kubectl puedes configurarlo también en tus archivos de ~/.bashrc o ~/.zshrc, escribiendo esta línea.

source <(kubectl completion bash)

O bien:

source <(kubectl completion zsh)

Con esto puedes conseguir una mayor agilidad a la hora de escribir tus comandos.

Mantener Kubectl siempre actualizado

Es importante mantener Kubectl actualizado, con la versión más reciente. Esto lo consigues instalando la nueva versión del mismo modo que instalaste el software inicialmente, tal como describimos en su momento.

No obstante, y esto también lo mencionamos, es importante que la versión de Kubectl sea compatible con tu clúster, ya que deben mantenerse de modo similar para evitar problemas de compatibilidad.

Gestión segura de credenciales

Para evitar problemas con las credenciales, nunca compartas archivos kubeconfig sin protección. Usa gestores de secretos si es posible para ti, ya que así estarás aumentando la seguridad de las credenciales.

También puedes integrar Kubernetes con un proveedor de identidad corporativo para que cada usuario inicie sesión con sus credenciales, sin necesidad de almacenar tokens permanentes.

Monitoreo y debugging con Kubectl

Mantén una monitorización continua de los recursos en ejecución, algo que que también puedes conseguir mediante Kubectl.

Puedes acceder a información detallada sobre un pod mediante su nombre:

kubectl describe pod <nombre_pod>

También puedes acceder a los log de los contenedores de un pod:

kubectl logs <nombre_pod>

Si además quieres inspeccionar los archivos de un pod en particular puedes abrir una sesión en el pod y verificar sus logs internos o configuraciones.

kubectl exec -it <nombre_pod> -- /bin/sh
Fernán García de Zúñiga

Productos relacionados: