Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Kubectl Cheat Sheet: domina Kubernetes con estos comandos [PDF gratis incluido]

By DoiTApr 14, 202511 min read

Esta página también está disponible en English, Deutsch, Français, Italiano, 日本語 y Português.

persona programando en laptop

En el centro del kit de herramientas de cualquier administrador de Kubernetes está kubectl: la potente interfaz de línea de comandos diseñada para gestionar clústeres de Kubernetes de forma eficiente.

Kubectl (se pronuncia "kube-control" o "kube-C-T-L") es tu canal directo de comunicación con el servidor API de Kubernetes y te permite desplegar aplicaciones, inspeccionar recursos, ver logs y ejecutar prácticamente cualquier operación dentro de tu clúster. Ya sea que trabajes como ingeniero DevOps, administrador de plataforma o desarrollador con aplicaciones en contenedores, dominar kubectl es clave para una gestión eficaz de Kubernetes en cloud computing.

Este práctico cheat sheet reúne los comandos de kubectl más útiles, con ejemplos prácticos y consejos para llevar tus tareas diarias en Kubernetes al siguiente nivel.

¿Cuáles son las categorías principales de comandos de kubectl?

Logo de Kubectl Logo de Kubectl

Los comandos de kubectl pueden agruparse en tres categorías principales, cada una enfocada en un aspecto distinto de la gestión del clúster:

1. Comandos de información del clúster

Los comandos de información del clúster te dan visibilidad sobre el estado y la configuración de tu clúster de Kubernetes:

  • Obtener información sobre los componentes del clúster
  • Ver el estado y los recursos de los nodos
  • Verificar el estado del apiserver
  • Inspeccionar los componentes del control plane

2. Comandos de gestión de recursos

Los comandos de gestión de recursos te permiten crear, modificar, eliminar e inspeccionar recursos de Kubernetes:

  • Crear y actualizar recursos
  • Listar y describir recursos
  • Eliminar recursos
  • Escalar recursos hacia arriba y hacia abajo
  • Editar recursos en tiempo real

3. Comandos de despliegue de aplicaciones

Por último, los comandos de despliegue facilitan el deploy y la gestión del ciclo de vida de la aplicación:

  • Desplegar aplicaciones desde YAML o JSON
  • Gestionar deployments y rollouts
  • Configurar el autoescalado
  • Actualizar configuraciones de aplicaciones
  • Manejar la red de aplicaciones

Con estas tres categorías en mente, veamos de cerca algunos comandos específicos de kubectl que vas a usar con frecuencia en tu camino con Kubernetes.

A fondo: cheat sheet de comandos de kubectl

persona programando en laptop persona programando en laptop

A continuación encontrarás un cheat sheet para tener a la mano con los comandos de kubectl que probablemente uses a diario, con ejemplos para agilizar tus flujos de trabajo en Kubernetes.

Pods

Los Pods son las unidades desplegables más pequeñas en Kubernetes y están formados por uno o más contenedores que comparten recursos de almacenamiento y red.

Listar todos los pods:

kubectl get pods

Listar pods con más detalle:

kubectl get pods -o wide

Obtener información detallada de un pod específico:

kubectl describe pod

Crear un pod desde un archivo YAML:

kubectl apply -f pod.yaml

Eliminar un pod:

kubectl delete pod

Ejecutar un comando dentro del contenedor de un pod:

kubectl exec -it --

Obtener los logs de un pod:

kubectl logs

Ver los logs de un pod en tiempo real:

kubectl logs -f

Obtener los logs de un contenedor específico en un pod multi-contenedor:

kubectl logs -c

Hacer port-forward a un pod:

kubectl port-forward :

Copiar archivos hacia o desde un pod:

kubectl cp :/path/to/file /local/path

kubectl cp /local/path :/path/in/pod

Services

Los Services proporcionan una red estable para los pods y, al actuar como capa de abstracción, facilitan la comunicación entre los distintos componentes.

Listar todos los services:

kubectl get services

Obtener información detallada de un service:

kubectl describe service

Crear un service desde un archivo YAML:

kubectl apply -f service.yaml

Exponer un deployment como service:

kubectl expose deployment --port= --target-port=

Eliminar un service:

kubectl delete service

Ver los endpoints asociados a un service:

kubectl get endpoints

Crear un service ClusterIP:

kubectl create service clusterip --tcp=:

Crear un service NodePort:

kubectl create service nodeport --tcp=:

Crear un service LoadBalancer:

kubectl create service loadbalancer --tcp=:

Deployments

Los Deployments ofrecen actualizaciones declarativas para Pods y ReplicaSets, lo que permite escalar y actualizar aplicaciones con facilidad.

Listar todos los deployments:

kubectl get deployments

Obtener información detallada de un deployment:

kubectl describe deployment

Crear un deployment desde un archivo YAML:

kubectl apply -f deployment.yaml

Crear un deployment directamente desde la línea de comandos:

kubectl create deployment --image=

Escalar un deployment:

kubectl scale deployment --replicas=

Actualizar la imagen de contenedor de un deployment:

kubectl set image deployment/ =

Hacer rollback de un deployment a una revisión anterior:

kubectl rollout undo deployment/

Ver el estado del rollout de un deployment:

kubectl rollout status deployment/

Ver el historial de rollouts de un deployment:

kubectl rollout history deployment/

Pausar el rollout de un deployment:

kubectl rollout pause deployment/

Reanudar el rollout de un deployment:

kubectl rollout resume deployment/

ConfigMaps y Secrets

Los ConfigMaps y los Secrets se usan para almacenar datos de configuración e información sensible, respectivamente.

Nota importante de seguridad: tanto los ConfigMaps como los Secrets se almacenan en etcd sin cifrar por defecto, así que conviene habilitar el cifrado en reposo si se manejan datos sensibles.

Listar ConfigMaps:

kubectl get configmaps

Crear un ConfigMap a partir de valores literales:

kubectl create configmap --from-literal=key1=value1 --from-literal=key2=value2

Crear un ConfigMap a partir de un archivo:

kubectl create configmap --from-file=

Obtener información detallada de un ConfigMap:

kubectl describe configmap

Eliminar un ConfigMap:

kubectl delete configmap

Listar Secrets:

kubectl get Secrets

Crear un Secret a partir de valores literales:

kubectl create secret generic --from-literal=key1=value1 --from-literal=key2=value2

Crear un Secret a partir de un archivo:

kubectl create secret generic --from-file=

Obtener información detallada de un Secret:

kubectl describe secret

Eliminar un Secret:

kubectl delete secret

Tips de experto para usar kubectl

persona mirando el celular mientras programapersona mirando el celular mientras programa

La herramienta de línea de comandos kubectl es indispensable para trabajar con clústeres de Kubernetes y gestionar sus recursos. Dominarla te facilita mucho la vida: te ayuda a desplegar, escalar y resolver problemas de manera más eficiente. Con kubectl edit puedes modificar al vuelo recursos como pods y deployments directamente desde la línea de comandos.

Saca el máximo provecho de los namespaces

Los Namespaces son una funcionalidad clave de Kubernetes que te permite dividir tu clúster en sub-clústeres virtuales. Resultan muy útiles en entornos multi-tenant o cuando manejas aplicaciones más complejas.

Listar recursos en un namespace específico:

kubectl get -n

Crear un recurso en un namespace específico:

kubectl apply -f <file.yaml> -n

Definir el namespace por defecto para todos los comandos de kubectl:

kubectl config set-context --current --namespace=

Ver recursos en todos los namespaces:

kubectl get --all-namespaces

Crear un nuevo namespace:

kubectl create namespace

Conviene agrupar recursos relacionados en sus propios namespaces para marcar límites claros entre aplicaciones o equipos. Usa nombres que dejen clara su finalidad, como dev-frontend, prod-backend o monitoring.

Selectores de etiquetas para filtrar recursos

Las Labels son pares clave-valor que se asignan a los objetos de Kubernetes. Son una excelente forma de organizar, seleccionar y gestionar grupos de recursos con mayor facilidad.

Listar recursos con una label específica:

kubectl get -l key=value

Listar recursos con múltiples condiciones de label:

kubectl get -l ‘key1=value1,key2=value2’

Listar recursos que tengan una clave de label específica (sin importar el valor):

kubectl get -l ‘key’

Listar recursos que no tengan una label específica:

kubectl get -l ‘!key’

Agregar una label a un recurso existente:

kubectl label key=value

Eliminar una label de un recurso:

kubectl label key-

Una estrategia de etiquetado consistente es clave para gestionar tus recursos de forma eficaz. Prueba con labels como app, environment, tier, version y owner para armar un sistema claro y ordenado.

Implementa rolling updates

Kubernetes facilita actualizar aplicaciones sin tiempo de inactividad mediante rolling updates. Esta estrategia reemplaza de forma gradual las instancias de la versión anterior por la nueva.

Actualizar un deployment con una nueva imagen (dispara un rolling update):

kubectl set image deployment/ =:

Verificar el estado del rollout:

kubectl rollout status deployment/

Configurar la estrategia de actualización en el YAML del deployment:

spec:

strategy:

type: RollingUpdate

rollingUpdate:

 maxUnavailable: 25%

 maxSurge: 25%

Volver a la versión anterior si se detectan problemas:

kubectl rollout undo deployment/

Pausar el rollout de un deployment:

Copykubectl rollout pause deployment/

Esto resulta especialmente útil para despliegues por etapas: te permite liberar la nueva versión a un subconjunto de pods, validar su funcionamiento y luego continuar con el rollout.

Reanudar el rollout de un deployment:

Copykubectl rollout resume deployment/

Para aplicaciones críticas, prueba la flag --record al hacer cambios en el deployment. Agrega una nota con el comando que usaste, así puedes rastrear el historial de cambios más adelante:

kubectl apply -f deployment.yaml --record

Maneja con cuidado las cuotas y los límites de recursos

La gestión de recursos cumple un rol clave en la administración de Kubernetes. Definir las requests y limits adecuados es fundamental para mantener el clúster estable y asegurar un uso justo de los recursos.

Ver las cuotas de recursos en un namespace:

kubectl get resourcequota -n

Crear una cuota de recursos para un namespace:

kubectl create quota --hard=cpu=1,memory=1G,pods=10 -n

Verificar el uso de recursos de los pods:

kubectl top pods

Verificar el uso de recursos de los nodos:

kubectl top nodes

Al definir las especificaciones de los contenedores, define siempre resource requests y limits:

resources:

requests:

memory: "64Mi"

cpu: "250m"

limits:

memory: "128Mi"

cpu: "500m"

Recuerda que las requests ayudan al scheduler a decidir dónde colocar tu pod, mientras que los limits marcan el uso máximo antes de que los contenedores puedan ser terminados. Una buena regla general: define las requests según el uso esperado en estado estable y los limits según lo aceptable en picos de uso.

Domina el debugging con kubectl

El debugging es clave para mantener tus aplicaciones de Kubernetes funcionando sin problemas. Por suerte, kubectl trae muchos comandos para resolver problemas con facilidad.

Obtener los logs de un contenedor:

kubectl logs -c

Debugging interactivo con un pod temporal:

kubectl run debug --rm -it --image=busybox -- sh

Crear un contenedor de debug adjunto a un pod existente:

kubectl debug -it --image=busybox --share-processes --copy-to=

Ver los eventos de un namespace:

kubectl get events -n

Verificar las condiciones y los detalles de estado de un pod:

Copykubectl describe pod

Esto entrega un resultado más estructurado de las condiciones del pod, mostrando todo el historial de transiciones y el estado actual en un formato fácil de leer.

Verificar la conectividad entre pods con un contenedor de debug de red:

kubectl run test-connectivity --rm -it --image=nicolaka/netshoot -- bash

Para problemas persistentes, considera usar la flag -- previous para revisar los logs de contenedores que se cayeron previamente:

kubectl logs --previous

Buenas prácticas de seguridad con kubectl

dos personas programando en laptopdos personas programando en laptop

Mantener tu clúster de Kubernetes seguro es fundamental, y kubectl cumple un rol clave en eso. Aquí van algunas buenas prácticas para que tengas la seguridad bajo control:

Gestiona los controles de acceso con RBAC

El Role-Based Access Control (RBAC) es el estándar para la autorización en Kubernetes. Te permite definir permisos detallados para usuarios y service accounts.

Ver los roles de un namespace:

kubectl get roles -n

Ver los cluster roles:

kubectl get clusterroles

Ver los role bindings:

kubectl get rolebindings -n

Ver los cluster role bindings:

kubectl get clusterrolebindings

Crear un role con permisos específicos:

kubectl create role developer --verb=get,list,watch --resource=pods,deployments -n

Vincular un role a un usuario:

kubectl create rolebinding dev-user-binding --role=developer --user=dev-user -n

Siempre que sea posible, usa RoleBindings en lugar de ClusterRoleBindings para limitar los permisos a un namespace específico. Así sigues el principio de mínimo privilegio al acotar el acceso solo a los namespaces que lo necesitan, lo que reduce el impacto si las credenciales se ven comprometidas.

Apégate al principio de mínimo privilegio: dales a los usuarios y service accounts solo los permisos que necesitan para hacer su trabajo. Hazte el hábito de revisar con regularidad los role bindings para asegurarte de que sigan teniendo sentido a medida que cambian los roles y las responsabilidades.

Manejo seguro de Secrets

Los Kubernetes Secrets deben manejarse con cuidado, ya que contienen información sensible como API keys, contraseñas y certificados.

Crear un secret de forma segura desde un archivo:

kubectl create secret generic db-credentials --from-file=./username.txt --from-file=./password.txt

Crear un secret TLS:

kubectl create secret tls tls-secret --cert=path/to/cert --key=path/to/key

Montar Secrets como variables de entorno:

env:

- name: DB_PASSWORD

valueFrom:

 secretKeyRef:

   name: db-credentials

   key: password

Montar Secrets como archivos:

volumes:

- name: secret-volume

secret:

 secretName: ssl-certificates

Considera usar herramientas externas de gestión de secrets como HashiCorp Vault, AWS Secrets Manager o Sealed Secrets para reforzar la seguridad. Ofrecen funciones útiles como rotación de secrets, registros de auditoría y cifrado.

Usa kubectl con un contexto seguro

Asegúrate siempre de estar trabajando en el contexto correcto para evitar modificar por error el clúster equivocado.

Ver todos los contextos disponibles:

kubectl config get-contexts

Cambiar a un contexto específico:

kubectl config use-context

Ver el contexto actual:

kubectl config current-context

Definir el namespace para el contexto actual:

kubectl config set-context --current --namespace=

En entornos productivos críticos, conviene apoyarse en señales visuales, como prompts de shell, que muestren el clúster y namespace actuales. Así te evitas acciones accidentales sobre los recursos equivocados.

Usa network policies

Las Network Policies funcionan como firewalls dentro de tu clúster de Kubernetes y controlan la comunicación entre pods.

Listar las network policies:

kubectl get networkpolicies

Crear una network policy que niegue todo el tráfico de ingress por defecto:

kubectl apply -f - <<EOF

apiVersion: networking.k8s.io/v1

kind: NetworkPolicy

metadata:

name: default-deny-ingress

spec:

podSelector: {}

policyTypes:

- Ingress

EOF

Crear una network policy que permita tráfico específico:

kubectl apply -f - <<EOF

apiVersion: networking.k8s.io/v1

kind: NetworkPolicy

metadata:

name: allow-frontend-to-backend

spec:

podSelector:

matchLabels:

 app: backend

ingress:

- from:

- podSelector:

   matchLabels:

     app: frontend

ports:

- port: 8080

EOF

Empieza con una network policy de "deny-all" como base y luego permite solo el tráfico que realmente necesitas. Así te apegas al principio de mínimo privilegio y mantienes la superficie de ataque lo más reducida posible.

Domina la gestión de Kubernetes con estos comandos de kubectl y buenas prácticas

Kubectl es una herramienta indispensable en el universo de los comandos de Kubernetes y funciona como tu interfaz principal para gestionar y trabajar con clústeres. Al aprender estos comandos y aplicar las buenas prácticas de este cheat sheet, estarás listo para enfrentar los desafíos de las aplicaciones en contenedores con total confianza.

Ten presente que Kubernetes evoluciona constantemente, y kubectl también. Mantente al día con las nuevas funciones y actualizaciones para seguir mejorando tus habilidades de gestión de clústeres.

Si quieres profundizar en temas más avanzados, como la expansión de los rangos de IP de los services de Kubernetes, revisa nuestra guía detallada sobre cómo expandir rangos de IP de services sin complicaciones.

A medida que tu setup de Kubernetes crece y se vuelve más complejo, contar con las herramientas y el conocimiento adecuados se vuelve aún más importante. Ahí entra DoiT. Nuestro equipo global de cloud architects se especializa en ayudar a las empresas a construir infraestructuras cloud eficientes en costos, escalables y resilientes. Estamos para ayudarte a resolver desafíos complejos de configuración e integración de Kubernetes, además de hacer troubleshooting y mejorar la eficiencia operativa.

Conversa con nosotros y descubre cómo podemos ayudarte a optimizar tu estrategia de orquestación de contenedores para lograr mejor rendimiento y ahorro en costos.