¡Hola! Te damos la bienvenida. Reunimos para ti los comandos más utilizados de Kubernetes en un solo cheat sheet de kubectl listo para usar. Aquí encontrarás instrucciones paso a paso para administrar tu clúster de Kubernetes con la herramienta de línea de comandos kubectl.
A continuación, un resumen rápido de los comandos más importantes. Más abajo encontrarás el cheat sheet completo.
Contexto y configuración del clúster:
- Listar contextos:
kubectl config get-contexts - Cambiar el contexto activo:
kubectl config use-context <context-name> - Ver detalles del clúster:
kubectl cluster-info - Verificar la versión:
kubectl version
Deployments y gestión de aplicaciones:
- Desplegar desde un manifiesto:
kubectl apply -f <filename.yaml> - Eliminar recursos desde un manifiesto:
kubectl delete -f <filename.yaml> - Escalar un deployment:
kubectl scale deployment <deployment-name> --replicas=<N> - Verificar el estado del rollout de un deployment:
kubectl rollout status deployment/<deployment-name> - Revertir un deployment:
kubectl rollout undo deployment/<deployment-name>
Inspección y debugging:
- Ver todos los recursos en todos los namespaces:
kubectl get all -A - Ver el estado y los detalles de un pod:
kubectl describe pod <pod-name> - Seguir los logs de un pod:
kubectl logs -f <pod-name> - Ejecutar comandos dentro de un contenedor:
kubectl exec -it <pod-name> -- <command> - Abrir una shell en un pod:
kubectl exec -it <pod-name> -- /bin/bash - Redirigir un puerto local a un pod:
kubectl port-forward <pod-name> <local-port>:<container-port>
Tips de productividad y flags:
- Crear un alias:
alias k=kubectl - Configurar el autocompletado:
source <(kubectl completion bash) - Filtrar recursos por namespace: Usa el flag
-n <namespace> - Probar cambios sin aplicarlos:
kubectl apply -f <filename.yaml> --dry-run=client - Ver recursos en formato YAML:
kubectl get pod <pod-name> -o yaml
¿Qué es kubectl?
Kubectl es la herramienta CLI de Kubernetes que te permite interactuar con tus clústeres y crear, gestionar, editar y eliminar recursos con facilidad. Se comunica con el servidor de API de Kubernetes para que puedas monitorear y controlar tus aplicaciones.
¿Cómo funciona kubectl?

Kubectl funciona enviando comandos al servidor de API de Kubernetes, que luego ejecuta las operaciones solicitadas dentro del clúster. Cuando ejecutas un comando de kubectl, como desplegar una aplicación o consultar el estado de los recursos, kubectl se comunica con el servidor de API por HTTP y transmite tus instrucciones. El servidor de API procesa estas solicitudes, actualiza el estado del clúster en etcd (un almacén distribuido de clave-valor) y dirige a otros componentes, como el scheduler o el controller manager, para que realicen las acciones necesarias para alcanzar el estado deseado. Esta interacción te permite gestionar y monitorear tus recursos de Kubernetes de forma eficiente desde la línea de comandos.
Nota: En versiones anteriores de Kubernetes, kubectl utilizaba generadores para crear configuraciones de recursos a partir de entradas específicas. Estos generadores permitían indicar el tipo de recurso a crear, como un Pod, un Deployment o un Job, mediante el flag --generator. Por ejemplo, kubectl run nginx --image=nginx --generator=run-pod/v1 creaba un recurso de tipo Pod. Este enfoque permitía automatizar y programar la creación de recursos con resultados predecibles. Sin embargo, es importante tener en cuenta que el flag --generator quedó obsoleto en Kubernetes v1.12 y se eliminó en la v1.18. A partir de la v1.18, kubectl run se simplificó para crear únicamente Pods, y el uso de generadores fue reemplazado por comandos más explícitos y declarativos como kubectl create y kubectl apply
Ahora sí, comencemos:
Configuración de kubectl: versión, información del clúster y autocompletado
El primer paso después de instalar kubectl es verificar que está correctamente instalado y que puede comunicarse con tu clúster. El siguiente comando muestra la versión del cliente y, si hay un clúster configurado, también la versión del servidor:
kubectl versionPara confirmar que kubectl está conectado al clúster correcto, usa:
kubectl cluster-infoEste comando muestra las direcciones del plano de control de Kubernetes y de los servicios principales. Si el comando devuelve un error, verifica que tu archivo kubeconfig esté configurado correctamente y que el clúster de destino sea accesible.
También puedes inspeccionar la configuración actual y los contextos disponibles con:
kubectl config get-contextskubectl config current-contextSi trabajas con varios clústeres, cambiar entre ellos es muy sencillo:
kubectl config use-context <context-name>Al reemplazar <context-name> por el contexto deseado, se actualiza el clúster activo para todos los comandos de kubectl posteriores.
Para mejorar la productividad, habilita el autocompletado del shell. Esto permite que tu shell complete automáticamente comandos, nombres de recursos, namespaces y otros argumentos al presionar la tecla Tab. Para Bash, ejecuta:
echo 'source <(kubectl completion bash)' >> ~/.bashrcsource ~/.bashrcPara Zsh, usa:
echo 'source <(kubectl completion zsh)' >> ~/.zshrcsource ~/.zshrcUn atajo útil es crear un alias para kubectl y habilitar el autocompletado para él:
alias k=kubectlcomplete -o default -F __start_kubectl kSi usas Zsh, reemplaza la última línea por:
compdef __start_kubectl kCon la verificación de versión, la conectividad con el clúster, la gestión de contextos y el autocompletado configurados, tu entorno está listo para la administración diaria de Kubernetes.
El cheat sheet definitivo de kubectl

Flags opcionales
Kubectl ofrece flags opcionales que mejoran la salida de los comandos y la gestión de recursos. Por ejemplo:
Formatos de salida:
Salida en JSON:
Puedes usar el flag -o=json para formatear la salida del comando como JSON.
kubectl get pods -o=jsonSalida en YAML:
Puedes usar el flag -o=yaml para formatear la salida del comando como YAML.
kubectl get pods -o=yamlSalida ampliada (wide):
La opción -o=wide ofrece una salida de texto plano más detallada (por ejemplo, muestra el nombre del nodo para los pods).
kubectl get pods -o=widePara salidas más personalizadas, kubectl ofrece el flag --custom-columns, que te permite definir qué columnas mostrar.
Por ejemplo, para listar los pods con sus nombres y los nodos donde se ejecutan:
kubectl get pods -o=custom-columns="POD NAME:.metadata.name,NODE:.spec.nodeName"Este comando mostrará:
POD NAME NODEnginx-deployment-1 node-1nginx-deployment-2 node-2Especificar el namespace:
Por defecto, los comandos de kubectl operan dentro del namespace definido por el contexto actual. Para apuntar a un namespace específico, puedes usar el flag -n o --namespace:
kubectl get pods -n <namespace_name>Para ver recursos en todos los namespaces, se usa el flag -A o --all-namespaces:
kubectl get pods -AY para establecer un namespace por defecto en el contexto actual:
kubectl config set-context --current --namespace=ns_nameEntrada desde archivo:
El flag -f se usa para especificar un nombre de archivo, directorio o URL al crear un recurso.
kubectl create -f ./file_nameFiltrado por labels:
Puedes usar el flag -l para filtrar recursos según labels específicos.
kubectl get pods -l name=label_nameOpción de ayuda:
Para mostrar la ayuda de los comandos de kubectl, usa el flag -h.
kubectl -hModo watch:
Puedes monitorear cambios en los recursos de forma continua con el flag --watch (o -w):
kubectl get pods -wOrdenar la salida:
Puedes ordenar la salida según un campo específico con el flag --sort-by:
kubectl get pods --sort-by=.metadata.nameUso de kubectl con alias
Trabajar con kubectl implica escribir comandos largos, lo que consume tiempo y puede provocar errores. Para ganar eficiencia, muchos desarrolladores crean alias para los comandos que usan con más frecuencia.
Configurar un alias básico
alias k=kubectlecho 'alias k=kubectl' >> ~/.bashrcEsto te permite usar k en lugar de kubectl.
Puedes usar el repositorio kubectl-aliases, que ofrece cientos de alias predefinidos para ejecutar comandos más rápido.
Para la gestión del clúster, contextos y configuración
La gestión del clúster abarca configurar, ver y modificar tu clúster.
| Comando | Descripción |
|---|---|
kubectl cluster-info |
Muestra los endpoints e información básica de tu clúster de Kubernetes. |
kubectl config get-contexts |
Lista todos los contextos definidos en tu archivo kubeconfig. |
kubectl config current-context |
Muestra el contexto activo actual. |
kubectl config use-context <context> |
Cambia el contexto activo al que especifiques. |
kubectl config delete-context <context> |
Elimina un contexto de tu archivo kubeconfig. |
kubectl api-versions |
Lista todas las versiones de API disponibles en el clúster. |
kubectl api-resources |
Lista todos los tipos de recursos disponibles en tu clúster, con detalles de grupos de API y namespaces. |
kubectl config view |
Muestra los detalles de configuración de tu archivo kubeconfig (clústeres, contextos, configuración de usuarios). |
kubectl version |
Imprime la información de versión tanto del cliente kubectl como del servidor de Kubernetes. |
Gestión de pods
Atajo: po
Un Pod es la unidad más pequeña de Kubernetes y representa una instancia única de un proceso en ejecución dentro de tu clúster. Puede contener uno o más contenedores que comparten almacenamiento y recursos de red.
| Comando | Descripción |
|---|---|
kubectl get pods |
Lista todos los pods del namespace actual. |
kubectl describe pod <pod-name> |
Muestra información detallada del pod especificado, incluyendo estado, eventos y detalles de los contenedores. |
kubectl exec -it <pod-name> <command> |
Ejecuta el comando indicado dentro del pod especificado de forma interactiva (los flags -it habilitan el acceso a una terminal interactiva). |
kubectl delete pod <pod-name> |
Elimina el pod especificado del clúster. |
kubectl run <pod-name> --image=<image_name> |
Crea y ejecuta un pod con la imagen especificada. |
kubectl get pod -n <namespace_name> |
Lista todos los pods del namespace especificado. |
kubectl exec <pod-name> -c <container-name> <command> |
Ejecuta un comando dentro de un contenedor específico de un pod. |
kubectl top pod |
Muestra el uso de recursos (como CPU y memoria) de los pods. |
kubectl annotate pod <pod-name> <annotation> |
Agrega o actualiza una anotación en el pod especificado. |
kubectl get pods --field-selector=status.phase=Running |
Lista los pods que están actualmente en fase Running filtrando por el estado del pod. |
kubectl get pods --sort-by='.status.containerStatuses[0].restartCount' |
Ordena la lista de pods según el número de reinicios del primer contenedor de cada pod. |
Para ReplicaSets
Atajo: rs
Un ReplicaSet garantiza que se ejecute un número determinado de réplicas de un pod. La diferencia principal es que los ReplicaSets admiten selectores de labels basados en conjuntos.
| Comando | Descripción |
|---|---|
kubectl get rs |
Lista todos los ReplicaSets del namespace actual. |
kubectl get rs <replicaset_name> -o yaml |
Muestra la configuración del ReplicaSet especificado en formato YAML. |
kubectl get rs <replicaset_name> -o json |
Muestra la configuración del ReplicaSet especificado en formato JSON. |
kubectl describe rs <rs_name> |
Muestra información detallada del ReplicaSet especificado. |
kubectl get rs --namespace=<ns_name> |
Lista todos los ReplicaSets del namespace especificado. |
kubectl delete rs <rs_name> --cascade=orphan |
Elimina el ReplicaSet especificado pero deja en ejecución los pods que gestiona (los deja huérfanos). |
kubectl delete rs <rs_name> |
Elimina el ReplicaSet especificado junto con todos los pods que gestiona. |
kubectl scale rs <rs_name> --replicas=<count> |
Ajusta (escala) el número de pods gestionados por el ReplicaSet especificado a la cantidad indicada. |
kubectl edit rs <rs_name> |
Abre la configuración del ReplicaSet en tu editor por defecto para hacer cambios en vivo. |
kubectl replace -f <rs_file.yaml> |
Reemplaza la configuración actual del ReplicaSet por la que se indica en el archivo YAML. |
Para DaemonSets
Atajo: ds
Un DaemonSet garantiza que un pod específico se ejecute en todos (o algunos) nodos del clúster. Es útil para tareas como ejecutar un agente de monitoreo en cada nodo.
| Comando | Descripción |
|---|---|
kubectl get daemonset |
Lista todos los DaemonSets del namespace actual. |
kubectl describe daemonset <ds_name> |
Muestra información detallada de un DaemonSet específico. |
kubectl get daemonset <daemonset_name> -o yaml |
Muestra la configuración del DaemonSet especificado en formato YAML. |
kubectl get daemonset <ds_name> -o json |
Muestra la configuración del DaemonSet especificado en formato JSON. |
kubectl delete daemonset <ds_name> |
Elimina el DaemonSet especificado del clúster. |
kubectl label daemonset <ds_name> <key>=<value> |
Agrega o actualiza un label en el DaemonSet especificado. |
kubectl annotate daemonset <ds_name> <key>=<value> |
Agrega o actualiza una anotación en el DaemonSet especificado. |
kubectl rollout status daemonset <ds_name> |
Verifica el estado del rollout de un DaemonSet. |
kubectl rollout history daemonset <ds_name> |
Muestra el historial de rollouts de un DaemonSet. |
Para StatefulSets
Atajo: sts
Los StatefulSets gestionan el despliegue y el escalado de pods, garantizando que cada uno tenga una identidad única y estable, además de almacenamiento persistente. Esto es importante para aplicaciones con estado.
| Comando | Descripción |
|---|---|
kubectl get statefulset |
Lista todos los StatefulSets del namespace actual. |
kubectl describe statefulset <statefulset_name> |
Muestra información detallada del StatefulSet especificado. |
kubectl get statefulset <sts_name> -o yaml |
Muestra la configuración del StatefulSet especificado en formato YAML. |
kubectl get statefulset <sts_name> -o json |
Muestra la configuración del StatefulSet especificado en formato JSON. |
kubectl edit statefulset <sts_name> |
Abre la configuración del StatefulSet especificado en tu editor de texto por defecto para hacer cambios en vivo. |
kubectl scale statefulset <sts_name> --replicas=<number> |
Ajusta el número de réplicas de pods gestionadas por el StatefulSet especificado a la cantidad indicada. |
kubectl rollout status statefulset <statefulset_name> |
Verifica y muestra el estado del rollout del StatefulSet especificado. |
Para Namespaces
Atajo: ns
Los namespaces permiten dividir los recursos del clúster entre varios usuarios o aplicaciones.
| Comando | Descripción |
|---|---|
kubectl get namespace |
Lista todos los namespaces de tu clúster (los del contexto actual). |
kubectl create namespace <namespace_name> |
Crea un nuevo namespace con el nombre especificado. |
kubectl describe namespace <namespace_name> |
Muestra información detallada del namespace especificado. |
kubectl edit namespace <namespace_name> |
Abre la configuración del namespace especificado en tu editor de texto por defecto para hacer ediciones en vivo. |
kubectl delete namespace <namespace_name> |
Elimina el namespace especificado de tu clúster junto con todos los recursos que contiene. |
Para Services
Atajo: svc
Un Service define un conjunto lógico de pods y una política de acceso a ellos. Permite la comunicación entre las distintas partes de tu aplicación y puede exponerla al tráfico externo.
| Comando | Descripción |
|---|---|
kubectl get services |
Lista todos los services del namespace actual |
kubectl create service <svc-type> <svc-name> --tcp=<port> |
Crea un nuevo service del tipo especificado (por ejemplo, clusterip, nodeport o loadbalancer) con el nombre indicado, mapeando TCP en un puerto determinado |
kubectl edit service <svc-name> |
Abre un editor para modificar la configuración del service especificado |
kubectl describe service <svc-name> |
Muestra información detallada del service especificado |
kubectl delete service <svc-name> |
Elimina el service especificado del clúster |
kubectl get endpoints <svc-name> |
Lista los endpoints (es decir, las direcciones IP de los pods) que respaldan el service especificado |
kubectl expose deployment [deploy_name] |
Crea un service que expone el deployment especificado; los recursos que se pueden exponer incluyen pod (po), service (svc) y replicaset (rs) |
Para Service Accounts
Atajo: sa
Una ServiceAccount proporciona una identidad a los procesos que se ejecutan en un pod, lo que les permite interactuar con la API de Kubernetes de forma segura.
| Comando | Descripción |
|---|---|
kubectl get serviceaccounts |
Lista todas las service accounts del namespace actual |
kubectl describe serviceaccount <sa-name> |
Muestra información detallada de la service account especificada |
kubectl replace -f <sa.yaml> |
Reemplaza (actualiza) una service account con una nueva configuración |
kubectl delete serviceaccount <sa_name> |
Elimina la service account especificada del clúster. |
Para Deployments
Atajo: deploy
Un Deployment ofrece actualizaciones declarativas para pods y ReplicaSets. Puedes definir el estado deseado de tu aplicación, y el controlador del Deployment ajusta el estado real al deseado a un ritmo controlado.
| Comando | Descripción |
|---|---|
kubectl get deployment |
Lista todos los deployments del namespace actual. |
kubectl describe deployment <deployment_name> |
Muestra información detallada del deployment especificado |
kubectl create deployment <deployment-name> --image=<img-name> |
Crea un nuevo deployment llamado <deployment-name> usando la imagen de contenedor especificada |
kubectl edit deployment <deployment_name> |
Abre la configuración del deployment en tu editor de texto por defecto para editarla en vivo |
kubectl scale deployment <deployment-name> --replicas=<replica-count> |
Ajusta el número de réplicas de pods gestionadas por el deployment a la cantidad especificada. |
kubectl set image deployment/<deployment-name> <container-name>=<new-image-name> |
Actualiza la imagen de un contenedor específico dentro del deployment |
kubectl rollout status deployment/<deployment-name> |
Muestra el estado actual del rollout del deployment |
kubectl rollout pause deployment/<deployment-name> |
Pausa el proceso de rollout, impidiendo más actualizaciones hasta que se reanude |
kubectl rollout resume deployment/<deployment-name> |
Reanuda un rollout de deployment pausado |
kubectl rollout undo deployment/<deployment-name> |
Revierte el deployment a su revisión anterior |
kubectl rollout undo deployment/<deployment-name> --to-revision=<revision-number> |
Revierte el deployment a un número de revisión específico |
kubectl delete deployment <deployment-name> |
Elimina el deployment especificado junto con los pods que gestiona |
Para Jobs y CronJobs
Atajo: job, cj
Un Job ejecuta uno o más pods hasta que una tarea se completa correctamente. Un CronJob crea Jobs según una programación, lo que lo hace útil para respaldos, reportes y otras tareas recurrentes.
| Comando | Descripción |
|---|---|
kubectl get jobs |
Lista todos los Jobs del namespace actual. |
kubectl describe job <job-name> |
Muestra información detallada del Job especificado. |
kubectl create job <job-name> --image=<image-name> |
Crea un Job que ejecuta la imagen de contenedor especificada. |
kubectl delete job <job-name> |
Elimina el Job especificado. |
kubectl get cronjobs |
Lista todos los CronJobs del namespace actual. |
kubectl describe cronjob <cronjob-name> |
Muestra información detallada del CronJob especificado. |
kubectl create cronjob <cronjob-name> --image=<image-name> --schedule="<cron-expression>" |
Crea un CronJob con la programación especificada. |
kubectl create job --from=cronjob/<cronjob-name> <job-name> |
Crea un Job único a partir de un CronJob existente. |
kubectl patch cronjob <cronjob-name> -p '{"spec":{"suspend":true}}' |
Suspende las ejecuciones futuras del CronJob. |
kubectl delete cronjob <cronjob-name> |
Elimina el CronJob especificado. |
Para Horizontal Pod Autoscalers
Atajo: hpa
Un Horizontal Pod Autoscaler (HPA) ajusta automáticamente el número de réplicas de pods según métricas como el uso de CPU o memoria.
| Comando | Descripción |
|---|---|
kubectl get hpa |
Lista todos los Horizontal Pod Autoscalers. |
kubectl describe hpa <hpa-name> |
Muestra información detallada del HPA especificado. |
kubectl autoscale deployment <deployment-name> --cpu-percent=<target> --min=<min> --max=<max> |
Crea un HPA para el deployment especificado. |
kubectl edit hpa <hpa-name> |
Abre la configuración del HPA para editarla en vivo. |
kubectl delete hpa <hpa-name> |
Elimina el HPA especificado. |
kubectl get hpa -w |
Observa las métricas y los eventos de escalado del HPA en tiempo real. |
kubectl top pods |
Muestra el uso de recursos de los pods que utiliza el Metrics Server. |
kubectl top nodes |
Muestra el uso de CPU y memoria de los nodos. |
Para RBAC y verificación de permisos
El control de acceso basado en roles (RBAC) determina qué usuarios y service accounts pueden acceder a los recursos de Kubernetes.
| Comando | Descripción |
|---|---|
kubectl get roles |
Lista todos los Roles del namespace actual. |
kubectl get rolebindings |
Lista todos los RoleBindings del namespace actual. |
kubectl get clusterroles |
Lista todos los ClusterRoles. |
kubectl get clusterrolebindings |
Lista todos los ClusterRoleBindings. |
kubectl describe role <role-name> |
Muestra información detallada del Role especificado. |
kubectl describe clusterrole <clusterrole-name> |
Muestra información detallada del ClusterRole especificado. |
kubectl auth can-i <verb> <resource> |
Verifica si el usuario actual puede realizar una acción sobre un recurso. |
kubectl auth can-i <verb> <resource> --as=<user> |
Verifica los permisos de otro usuario. |
kubectl auth can-i --list |
Lista todos los permisos disponibles para el usuario actual. |
Para recursos Ingress
Atajo: ing
Un Ingress gestiona el acceso externo por HTTP y HTTPS a los services de un clúster de Kubernetes. Normalmente requiere un controlador de Ingress.
| Comando | Descripción |
|---|---|
kubectl get ingress |
Lista todos los recursos Ingress del namespace actual. |
kubectl describe ingress <ingress-name> |
Muestra información detallada del Ingress especificado. |
kubectl create ingress <ingress-name> --rule="<host>/<path>=<service>:<port>" |
Crea un Ingress con una regla de enrutamiento. |
kubectl edit ingress <ingress-name> |
Abre la configuración del Ingress para editarla en vivo. |
kubectl delete ingress <ingress-name> |
Elimina el Ingress especificado. |
kubectl get ingress -A |
Lista los recursos Ingress de todos los namespaces. |
kubectl get ingress <ingress-name> -o yaml |
Muestra la configuración del Ingress en formato YAML. |
Para debugging avanzado
Estos comandos ayudan a diagnosticar problemas de aplicaciones, redes y recursos en un clúster de Kubernetes.
| Comando | Descripción |
|---|---|
kubectl logs <pod-name> |
Muestra los logs del pod especificado. |
kubectl logs <pod-name> -c <container-name> |
Muestra los logs de un contenedor específico en un pod con varios contenedores. |
kubectl logs -f <pod-name> |
Muestra en tiempo real los logs del pod especificado. |
kubectl logs <pod-name> --previous |
Muestra los logs de la instancia anterior de un contenedor que falló. |
kubectl exec -it <pod-name> -- /bin/sh |
Abre una shell interactiva dentro de un contenedor en ejecución. |
kubectl port-forward pod/<pod-name> <local-port>:<pod-port> |
Redirige un puerto local a un pod para hacer debugging. |
kubectl debug <pod-name> -it --image=busybox |
Crea un contenedor efímero de debugging asociado al pod especificado. |
kubectl get events --sort-by=.metadata.creationTimestamp |
Lista los eventos del clúster en orden cronológico. |
kubectl describe node <node-name> |
Muestra las condiciones del nodo, los recursos asignados y los eventos recientes. |
kubectl cp <pod-name>:<remote-path> <local-path> |
Copia archivos de un pod a la máquina local. |
Para eventos
Atajo: ev
Los eventos son registros de lo que ocurrió en tu clúster, como creaciones o eliminaciones de pods, o errores.
| Comando | Descripción |
|---|---|
kubectl get events |
Lista todos los eventos del namespace actual |
kubectl get events --field-selector type!=Normal |
Muestra los eventos que no son de tipo Normal |
kubectl get events --field-selector type=Warning |
Filtra y muestra solo los eventos de tipo Warning |
kubectl get events -w |
Observa los eventos nuevos en tiempo real |
kubectl get events --field-selector involvedObject.name=<object_name> |
Muestra los eventos relacionados con un objeto específico, como un pod o un nodo |
Logs
Los logs son la salida de tus aplicaciones en ejecución y de los componentes del sistema.
| Comando | Descripción |
|---|---|
kubectl logs <pod_name> |
Recupera y muestra los logs del contenedor principal del pod especificado |
kubectl logs -f <pod_name> |
Muestra en tiempo real los logs del pod especificado |
kubectl logs --since=6h <pod_name> |
Muestra los logs del pod especificado generados en las últimas 6 horas |
kubectl logs --tail=50 <pod_name> |
Muestra las últimas 50 líneas de logs del pod especificado |
kubectl logs -f <pod_name> -c <container_name> |
Muestra en tiempo real los logs de un contenedor específico dentro de un pod |
kubectl logs <pod_name> > podfile.log |
Guarda los logs de un pod en un archivo llamado podfile.log |
kubectl logs --previous <pod_name> |
Muestra los logs de la instancia anterior de un contenedor en el pod especificado |
Para Secrets y ConfigMaps
Atajo para ConfigMaps: cm
Los Secrets almacenan información sensible como contraseñas o claves, mientras que los ConfigMaps guardan datos de configuración no sensibles. Ambos te permiten desacoplar los artefactos de configuración del contenido de la imagen para mantener tus aplicaciones portables.
| Comando | Descripción |
|---|---|
kubectl get secrets |
Lista todos los secrets del namespace actual |
kubectl get configmaps |
Lista todos los ConfigMaps del namespace actual |
kubectl describe secret <secret-name> |
Muestra información detallada del secret especificado |
kubectl delete secret <secret-name> |
Elimina el secret especificado del clúster |
kubectl describe configmap <configmap-name> |
Muestra información detallada del ConfigMap especificado |
kubectl create configmap <config-map-name> --from-file=<path-to-file> |
Crea un nuevo ConfigMap con el nombre indicado usando el contenido del archivo especificado |
kubectl create secret <secret-type> <secret-name> --from-literal=key=value |
Crea un nuevo secret del tipo especificado usando un par clave-valor |
Para la gestión de nodos
Atajo: no
Un Node es una máquina de trabajo (worker) en Kubernetes.
| Comando | Descripción |
|---|---|
kubectl get nodes |
Lista todos los nodos de tu clúster |
kubectl describe node <node-name> |
Muestra información detallada del nodo especificado |
kubectl drain <node-name> |
Prepara el nodo para mantenimiento desalojando todos los pods y marcándolo como no programable |
kubectl uncordon <node-name> |
Marca un nodo previamente acordonado (no programable) como programable de nuevo, permitiendo que se programen nuevos pods en él |
kubectl label node <node_name> <key>=<value> |
Agrega o actualiza un label en el nodo especificado |
kubectl cordon <node_name> |
Marca el nodo especificado como no programable |
kubectl taint node <node_name> <key>=<value>:<taint-effect> |
Aplica un taint al nodo especificado |
kubectl top node <node_name> |
Muestra métricas de uso de recursos (como CPU y memoria) del nodo especificado |
kubectl annotate node <node_name> <key>=<value> |
Agrega o actualiza una anotación en el nodo especificado |
Para almacenamiento (PV, PVC)
Atajo para Persistent Volume: pv
Atajo para Persistent Volume Claim: pvc
Los PersistentVolumes son recursos de almacenamiento en tu clúster, y los PersistentVolumeClaims son solicitudes de almacenamiento por parte de los usuarios.
| Comando | Descripción |
|---|---|
kubectl get pv |
Lista todos los Persistent Volumes del clúster |
kubectl describe pv <pv-name> |
Muestra información detallada de un Persistent Volume específico |
kubectl get pvc |
Lista todos los Persistent Volume Claims del namespace actual |
kubectl describe pvc <pvc-name> |
Muestra información detallada de un Persistent Volume Claim específico |
Para copiar archivos y directorios
Puedes transferir archivos entre tu sistema local y el contenedor de un pod, lo que resulta útil para el debugging o el respaldo de datos.
| Comando | Descripción |
|---|---|
kubectl cp <local-path> <namespace>/<pod-name>:<container-path> |
Copia un archivo o directorio desde tu máquina local a un contenedor del pod y namespace especificados. |
kubectl cp <source-pod-name>:<source-container-path> <local-path> -n <namespace> |
Copia un archivo o directorio desde un contenedor dentro de un pod (en el namespace indicado) a tu máquina local. |
kubectl cp <local-path> <destination-namespace>/<destination-pod-name>:<destination-container-path> |
Copia un archivo o directorio desde tu máquina local al pod y namespace de destino. |
Para la verbosidad de la salida y el debugging
La verbosidad se refiere al nivel de detalle incluido en los logs generados por componentes como kubectl y kubelet. Puedes ajustar la verbosidad de los comandos de kubectl.
| Comando | Descripción |
|---|---|
kubectl get <resource-type> --v=<verbosity-level> |
Esta es la forma general para establecer el nivel de verbosidad. Le indica a kubectl cuánta información de debugging incluir al ejecutar el comando sobre el tipo de recurso especificado. |
kubectl get <resource-type> --v=0 |
Ejecuta el comando con una salida de debugging mínima (el nivel por defecto). |
kubectl get <resource-type> --v=7 |
Ofrece un nivel de verbosidad mayor, en el que se imprime información adicional de debugging, incluidos los encabezados de las solicitudes HTTPS enviadas por el cliente. |
kubectl get <resource-type> --v=8 |
Aumenta aún más la verbosidad. En el nivel 8 también se muestra el contenido de las solicitudes y respuestas HTTP (datos del cuerpo). |
Preguntas frecuentes
¿Qué es kubectl? kubectl es la herramienta de línea de comandos de Kubernetes. Envía tus comandos al servidor de API de Kubernetes, que ejecuta la solicitud en el clúster, para que puedas crear, gestionar, editar y eliminar recursos, además de monitorear tus aplicaciones.
¿Cómo cambio de clúster con kubectl?
Ejecuta kubectl config get-contexts para listar los contextos de tu archivo kubeconfig y luego kubectl config use-context <context-name> para activar uno. A partir de ahí, todos los comandos de kubectl se ejecutan contra ese clúster.
¿Cómo puedo listar los pods de todos los namespaces?
Agrega el flag -A (o --all-namespaces), por ejemplo kubectl get pods -A. Si quieres apuntar a un solo namespace, usa -n <namespace_name>.
¿Cómo veo los logs de un contenedor que falló?
Ejecuta kubectl logs <pod-name> --previous para ver los logs de la instancia anterior del contenedor. Agrega -c <container-name> si el pod tiene más de un contenedor.
¿Cómo revierto un deployment?
Ejecuta kubectl rollout undo deployment/<deployment-name> para volver a la revisión anterior. Para elegir una revisión específica, agrega --to-revision=<revision-number>.
¿Cómo configuro un alias de kubectl y el autocompletado?
Ejecuta alias k=kubectl para usar k en lugar de kubectl, y agrégalo a tu ~/.bashrc para conservarlo. Para el autocompletado en Bash, agrega source <(kubectl completion bash) a tu ~/.bashrc. El cheat sheet también cubre Zsh.
Reduce hasta un 50% tus costos en la nube con PerfectScale
PerfectScale es una herramienta potente diseñada para integrarse a la perfección con Kubernetes. Al incorporar PerfectScale a tu entorno de Kubernetes, puedes simplificar y optimizar la orquestación de tus contenedores. Esta integración mejora la eficiencia en la gestión de tus clústeres, lo que te permite asignar recursos de forma más efectiva, reducir los costos operativos y mejorar la estabilidad y la resiliencia general de tus aplicaciones. Los insights impulsados por IA de PerfectScale brindan una visibilidad completa del rendimiento de tu sistema, lo que permite hacer ajustes proactivos para responder a demandas dinámicas. Esto significa que puedes garantizar el máximo rendimiento mientras reduces los costos hasta en un 50% gracias a acciones autónomas basadas en datos que optimizan continuamente cada capa de tu stack de Kubernetes. Para comprobar de primera mano los beneficios de PerfectScale, agenda una demo y comienza una prueba gratuita hoy mismo.