Sebastian Gomez
El comando kubectl
Primero que nada, kubectl es nuestra confiable herramienta de línea de comandos para controlar los clústeres de Kubernetes. Se comunica con el kube-apiserver en el plano de control de nuestro clúster.
En el siguiente diagrama de Mermaid mostramos cómo funciona el proceso de comunicación entre kubectl, el plano de control de Kubernetes (que incluye kube-apiserver y etcd) y el administrador.
sequenceDiagram
participant Admin as Administrador
participant kubectl
participant API as kube-apiserver
participant etcd
Admin->>kubectl: ejecuta un comando kubectl
kubectl->>API: transforma el comando en una llamada API
API->>etcd: consulta o realiza cambios
etcd-->>API: devuelve la información
API-->>kubectl: responde la llamada API
kubectl-->>Admin: muestra el resultadoVamos paso a paso por ese flujo:
- El administrador ejecuta un comando
kubectl. kubectltransforma el comando en una llamada API y se comunica conkube-apiserveren el plano de control.kube-apiserverconsultaetcdpara obtener información o realizar cambios.kube-apiserverdevuelve la respuesta de la API al administrador a través dekubectl.
Este diagrama simplifica el flujo de trabajo al utilizar kubectl para interactuar con un clúster de Kubernetes.
Configurando kubectl
Antes de poder usar kubectl, debemos configurarlo. La configuración se almacena en un archivo dentro de nuestra carpeta oculta llamada .kube, en nuestro directorio de inicio. Este archivo contiene la lista de clústeres y las credenciales que usaremos para conectarnos a cada uno de ellos.
¿De dónde obtenemos las credenciales? Si estamos usando Google Kubernetes Engine (GKE), el servicio las proporciona a través de la herramienta gcloud. Usaremos el comando gcloud container clusters get-credentials para obtener las credenciales y conectarnos a nuestro clúster de GKE:
gcloud container clusters get-credentials <CLUSTER_NAME> --region <REGION>Si tu clúster es zonal en lugar de regional, sustituye --region <REGION> por --zone <ZONE>. Este comando escribe automáticamente la entrada correspondiente en tu archivo .kube/config.
Nota: gcloud container clusters get-credentials acepta el nombre del clúster junto con --region (clúster regional), --zone (clúster zonal) o --location, y el proyecto activo se controla con la bandera global --project. Ajusta el nombre del clúster, la región o zona y el proyecto a tu entorno de GKE.
La sintaxis de kubectl
Ahora hablemos de cómo usar el comando kubectl. La sintaxis se compone de varias partes: el comando, el tipo, el nombre y los flags opcionales:
kubectl COMANDO TIPO NOMBRE [FLAGS]- COMANDO: especifica la acción que queremos realizar, como
get,describe,logsoexec. - TIPO: define el objeto de Kubernetes sobre el que actúa el comando, como
pods,deployments,nodesu otros objetos. - NOMBRE: especifica el objeto definido en el tipo.
- FLAGS: algunas instrucciones admiten flags adicionales opcionales que podemos incluir al final del comando.
Por ejemplo, para ver la lista de pods en nuestro clúster, podemos ejecutar:
kubectl get podsTambién podemos filtrar la lista especificando el nombre de un pod:
kubectl get pod mi-app-de-pruebaConsejo útil: utilizar el flag -o yaml para obtener la salida en formato YAML es realmente valioso. Esto nos permite capturar el estado actual de un objeto de Kubernetes en un archivo YAML, por ejemplo, para recrearlo en un clúster diferente:
>
``bash kubectl get pod mi app de prueba -o yaml ``
Ejercicios propuestos
- Conéctate a un clúster de GKE con
gcloud container clusters get-credentialsy verifica que la entrada quedó escrita en tu archivo.kube/config. - Lista todos los pods de tu clúster y luego filtra por el nombre de uno solo usando
kubectl get pod <NOMBRE>. - Exporta la definición de un objeto a YAML con
-o yamly guarda la salida en un archivo para recrearlo más tarde. - Practica el uso de
--contextpara cambiar entre dos clústeres distintos sin tocar el resto de tu configuración.
Resumen en 3 puntos
kubectles la herramienta de línea de comandos que se comunica conkube-apiserveren el plano de control, que a su vez lee y escribe enetcd.- La configuración vive en
~/.kube/config, y para GKE las credenciales se obtienen congcloud container clusters get-credentials <CLUSTER> --region <REGION>. - La sintaxis
kubectl COMANDO TIPO NOMBRE [FLAGS]cubre casi todo: crear, ver, eliminar y exportar objetos con-o yaml; usa--kubeconfigo--contextpara apuntar al clúster correcto.
Eso es todo, espero que este post te sea de utilidad y lo puedas aplicar a algún proyecto que tengas en mente. Ahora es tu turno de poner en práctica tus habilidades de administración de clústeres de Kubernetes.
Déjame un comentario si te sirvió, si quieres añadir alguna opinión o si tienes alguna duda. Y recuerda que si te gustó, también puedes compartirlo usando los links a las redes sociales aquí abajo. Buena suerte.
Sebastian Gomez
Creador de contenido principalmente acerca de tecnología.