Hoja de trucos de Kubectl: Domina Kubernetes con estos comandos
En el corazón del kit de herramientas de todo administrador de Kubernetes se encuentra kubectl, la potente interfaz de línea de comandos diseñada para gestionar clústeres Kubernetes de forma eficiente.
Kubectl (pronunciado "kube-control" o "kube-C-T-L") sirve como tu línea directa de comunicación con el sistema Kubernetes que te permite desplegar aplicaciones, inspeccionar recursos, ver registros y ejecutar prácticamente cualquier operación dentro de tu clúster. Tanto si eres un ingeniero DevOps, un administrador de plataformas o un desarrollador que trabaja con aplicaciones en contenedores, dominar kubectl es esencial para lograr un funcionamiento eficaz Gestión de Kubernetes en la computación en nube.
Esta práctica hoja de trucos cubre comandos kubectl más útilescon ejemplos prácticos y consejos que te ayudarán a mejorar tus tareas cotidianas con Kubernetes.
¿Cuáles son las principales categorías de comandos kubectl?

Los comandos Kubectl pueden agruparse en tres categorías principales, cada una de las cuales sirve para diferentes aspectos de la gestión de clústeres:
1. Comandos de información del clúster
Los comandos de información del clúster proporcionan información sobre el estado y la configuración de tu clúster Kubernetes:
- Obtener información sobre los componentes del clúster
- Ver el estado y los recursos del nodo
- Comprobar la salud del apiserver
- Inspeccionar los componentes del plano de control
2. Comandos de gestión de recursos
Los comandos de gestión de recursos te permiten crear, modificar, eliminar e inspeccionar los recursos de Kubernetes:
- Crear y actualizar recursos
- Enumera y describe los recursos
- Eliminar recursos
- Ampliar y reducir recursos
- Edita recursos en tiempo real
3. Comandos de despliegue de aplicaciones
Por último, los comandos de despliegue de aplicaciones facilitan la gestión del despliegue y del ciclo de vida de la aplicación:
- Despliega aplicaciones desde YAML o JSON
- Gestiona los despliegues y las implantaciones
- Configurar el autoescalado
- Actualiza las configuraciones de la aplicación
- Gestionar la red de aplicaciones
Con estas tres categorías en mente, echemos un vistazo más de cerca a algunos comandos kubectl específicos que utilizarás a menudo en tu viaje por Kubernetes.
Profundizando: hoja de trucos de los comandos kubectl

A continuación encontrarás una hoja de trucos para que la tengas a mano que enumera comandos kubectl que probablemente utilices con frecuencia, con ejemplos para agilizar tus flujos de trabajo en Kubernetes.
Vainas
Pods son las unidades desplegables más pequeñas de Kubernetes, formadas por uno o más contenedores que comparten recursos de almacenamiento y red.
Enumera todas las vainas:
kubectl obtener pods
Enumera las vainas con más detalles:
kubectl get pods -o ancho
Obtén información detallada sobre una vaina concreta:
kubectl describe pod <nombre-pod>
Crea un pod a partir de un archivo YAML:
kubectl apply -f pod.yaml
Borrar un pod:
kubectl eliminar pod <nombre-pod>
Ejecuta un comando dentro del contenedor de un pod:
kubectl exec -it <pod-name> -- <comando>
Obtén los registros del pod:
kubectl logs <nombre-pod>
Transmite registros de pods en tiempo real:
kubectl logs -f <pod-name>
Obtener registros de un contenedor específico en un pod multicontenedor:
kubectl logs <pod-name> -c <container-name>
Reenvía a un pod:
kubectl port-forward <pod-name> <local-port>:<pod-port>
Copiar archivos a/desde un pod:
kubectl cp <pod-name>:/ruta/a/archivo /local/ruta
kubectl cp /ruta/local <pod-name>:/ruta/en/pod
Servicios
Servicios crean una red estable para los pods, facilitando la comunicación entre los distintos componentes al actuar como una capa de abstracción.
Enumera todos los servicios:
kubectl obtener servicios
Obtén información detallada sobre un servicio:
kubectl describe servicio <nombre-servicio>
Crea un servicio a partir de un archivo YAML:
kubectl apply -f servicio.yaml
Exponer un despliegue como servicio:
kubectl expose deployment <deployment-name> --port=<port> --target-port=<target-port>
Elimina un servicio:
kubectl eliminar servicio <nombre-servicio>
Ver los puntos finales asociados a un servicio:
kubectl get endpoints <nombre-servicio>
Crea un servicio ClusterIP:
kubectl create service clusterip <service-name> --tcp=<port>:<target-port>
Crea un servicio NodePort:
kubectl create service nodeport <service-name> --tcp=<port>:<target-port>
Crear un LoadBalancer servicio:
kubectl create service loadbalancer <service-name> --tcp=<port>:<target-port>
Despliegues
Despliegues proporcionan actualizaciones declarativas para Pods y ReplicaSets, lo que permite escalar y actualizar aplicaciones fácilmente.
Enumera todos los despliegues:
kubectl obtener despliegues
Obtén información detallada sobre una implantación:
kubectl describe despliegue <nombre-despliegue>
Crea un despliegue a partir de un archivo YAML:
kubectl aplicar -f despliegue.yaml
Crea una implantación directamente desde la línea de comandos:
kubectl create deployment <nombre> --image=<nombre-imagen>
Escala un despliegue:
kubectl scale deployment <deployment-name> --replicas=<number>
Actualiza la imagen de contenedor de un despliegue:
kubectl set image deployment/<deployment-name> <container-name>=<new-image>
Revertir una implantación a una revisión anterior:
kubectl rollout deshacer despliegue/<nombre-despliegue>
Ver el estado del despliegue:
kubectl estado despliegue/<nombre-despliegue>
Ver el historial de despliegue:
kubectl rollout history despliegue/<nombre-despliegue>
Pausa un despliegue:
kubectl rollout pause deployment/<nombre-despliegue>
Reanuda un despliegue:
kubectl rollout reanudar despliegue/<nombre-despliegue>
ConfigMaps y Secretos
ConfigMaps y Secretos se utilizan para almacenar datos de configuración e información sensible, respectivamente.
Nota importante sobre seguridad: Tanto ConfigMaps como Secrets se almacenan en etcd sin cifrar por defecto, lo que significa que los usuarios deben activar el cifrado en reposo si manejan datos sensibles.
Lista ConfigMaps:
kubectl get configmaps
Crea un ConfigMap a partir de valores literales:
kubectl create configmap <configmap-name> --from-literal=clave1=valor1 --from-literal=clave2=valor2
Crea un ConfigMap a partir de un archivo:
kubectl create configmap <configmap-name> --from-file=<path-to-file>
Obtén información detallada sobre un ConfigMap:
kubectl describe configmap <configmap-name>
Borrar un ConfigMap:
kubectl delete configmap <configmap-name>
Lista Secretos:
kubectl get Secretos
Crea un Secreto a partir de valores literales:
kubectl create secret generic <secret-name> --from-literal=clave1=valor1 --from-literal=clave2=valor2
Crea un Secreto a partir de un archivo:
kubectl create secret generic <secret-name> --from-file=<path-to-file>
Obtén información detallada sobre un Secreto:
kubectl describe secreto <nombre-secreto>
Borrar un secreto:
kubectl borrar secreto <nombre-secreto>
Consejos profesionales para el uso de kubectl

La herramienta de línea de comandos kubectl es imprescindible para trabajar con clusters Kubernetes y gestionar sus recursos. Dominarla puede hacerte la vida mucho más fácil, ayudándote a desplegar, escalar y solucionar problemas de forma más eficiente. Con kubectl edit, puedes puedes modificar rápidamente recursos como pods y despliegues directamente desde la línea de comandos.
Utilizar eficazmente los espacios de nombres
Espacios de nombres son una función básica de Kubernetes que te permite dividir tu clúster en subclústeres virtuales. Esto es muy útil en configuraciones multiinquilino o cuando manejas aplicaciones más complejas.
Enumera los recursos de un espacio de nombres concreto:
kubectl get <resource-type> -n <namespace>
Crea un recurso en un espacio de nombres específico:
kubectl apply -f <file.yaml> -n <namespace>
Establece el espacio de nombres por defecto para todos los comandos kubectl:
kubectl config set-context --current --namespace=<namespace>
Ver recursos en todos los espacios de nombres:
kubectl get <resource-type> --all-namespaces
Crea un nuevo espacio de nombres:
kubectl crear espacio de nombres <nombre-del-espacio-de-nombres>
Es una buena idea agrupar los recursos relacionados en sus propios espacios de nombres para establecer límites claros entre aplicaciones o equipos. Intenta utilizar nombres que hagan obvia su finalidad, como dev-frontend, prod-backendo monitorización.
Selectores de etiquetas para filtrar recursos
Etiquetas son pares clave-valor que se añaden a los objetos de Kubernetes. Son una forma estupenda de organizar, seleccionar y gestionar grupos de recursos más fácilmente.
Enumera los recursos con una etiqueta específica:
kubectl get <tipo de recurso> -l clave=valor
Enumera los recursos con múltiples condiciones de etiqueta:
kubectl get <resource-type> -l 'clave1=valor1,clave2=valor2'
Enumera los recursos que tienen una clave de etiqueta específica (independientemente del valor):
kubectl get <resource-type> -l 'clave'
Enumera los recursos que no tienen una etiqueta específica:
kubectl get <resource-type> -l '!key'
Añade una etiqueta a un recurso existente:
kubectl label <resource-type> <resource-name> key=value
Eliminar una etiqueta de un recurso:
kubectl label <resource-type> <resource-name> key-
Tener una estrategia de etiquetado coherente es clave para gestionar tus recursos con eficacia. Prueba a utilizar etiquetas como aplicación, entorno, nivel, versióny propietario para crear un sistema claro y organizado para tus recursos.
Implementar actualizaciones continuas
Kubernetes facilita la actualización de aplicaciones sin tiempo de inactividad mediante actualizaciones continuas. Esta estrategia sustituye gradualmente las instancias de la versión antigua por la nueva.
Actualiza un despliegue con una nueva imagen (activa la actualización continua):
kubectl set imagen despliegue/<nombre-despliegue> <nombre-contenedor>=<nueva-imagen>:<etiqueta>
Comprueba el estado del despliegue:
kubectl rollout status despliegue/<nombre-despliegue>
Configura la estrategia de actualización en un YAML de despliegue:
espec:
estrategia:
tipo: RollingUpdate
rollingUpdate:
maxDisponible: 25%
maxSurge: 25%
Vuelve a la versión anterior si se detectan problemas:
kubectl rollout deshacer despliegue/<nombre-despliegue>
Pausa un despliegue:
Copykubectl rollout pausa despliegue/<nombre-despliegue>
Esto es especialmente útil para los despliegues por etapas, ya que te permite liberar a un subconjunto de pods, verificar la funcionalidad y luego continuar el despliegue tras la validación.
Reanudar un despliegue:
Copykubectl rollout reanudar despliegue/<nombre-despliegue>
Para las aplicaciones críticas, prueba a utilizar la bandera --record al hacer cambios en el despliegue. Añade una nota con el comando que utilizaste, para que puedas rastrear fácilmente el historial de cambios más adelante:
kubectl apply -f despliegue.yaml --record
Gestiona cuidadosamente las cuotas y límites de recursos
Gestión de recursos desempeña un papel importante en la gestión de Kubernetes. Establecer las solicitudes y los límites de recursos adecuados es clave para mantener estable tu clúster y asegurarte de que los recursos se comparten de forma justa.
Ver cuotas de recursos en un espacio de nombres:
kubectl get resourcequota -n <espacio de nombres>
Crea una cuota de recursos para un espacio de nombres:
kubectl create quota <quota-name> --hard=cpu=1,memory=1G,pods=10 -n <namespace>
Comprueba el uso de recursos de los pods:
kubectl top pods
Comprueba el uso de recursos de los nodos:
kubectl top nodos
Al definir las especificaciones de los contenedores, establece siempre las solicitudes y los límites de recursos:
recursos:
peticiones:
memoria: "64Mi"
cpu: "250m"
límites:
memoria: "128Mi"
cpu: "500m"
Ten en cuenta que las peticiones de recursos ayudan al programador a decidir dónde colocar tu pod, mientras que los límites establecen el uso máximo antes de que los contenedores puedan ser terminados. Una buena regla general es establecer las solicitudes en función del uso estacionario previsto y los límites en función de lo que es aceptable durante los picos de uso.
Depuración maestra con kubectl
La depuración es importante para que tus aplicaciones Kubernetes funcionen sin problemas. Por suerte, kubectl tiene un montón de comandos que te ayudarán a solucionar problemas con facilidad.
Obtén los registros del contenedor:
kubectl logs <pod-name> -c <container-name>
Depuración interactiva con una vaina temporal:
kubectl run debug --rm -it --image=busybox -- sh
Crea un contenedor de depuración unido a un pod existente:
kubectl debug <pod-name> -it --image=busybox --share-processes --copy-to=<debug-pod-name>
Ver eventos en un espacio de nombres:
kubectl get events -n <espacio de nombres>
Comprueba las condiciones de la vaina y los detalles de su estado:
Copykubectl describe pod <nombre-pod>
Esto proporciona una salida más estructurada de las condiciones del pod, mostrando el historial completo de la transición y el estado actual en un formato fácil de leer.
Verifica la conectividad entre pods utilizando un contenedor de depuración de red:
kubectl run prueba-conectividad --rm -it --image=nicolaka/netshoot -- bash
Para problemas persistentes, considera usar la función --anterior para comprobar los registros de los contenedores que han fallado anteriormente:
kubectl logs <pod-name> --previous
Buenas prácticas de seguridad con kubectl

Mantener seguro tu clúster Kubernetes es increíblemente importante, y kubectl tiene mucho que ver en ello. Aquí tienes algunas buenas prácticas que te ayudarán a controlar tu seguridad:
Gestionar los controles de acceso con RBAC
Control de acceso basado en roles (RBAC) es el estándar para la autorización en Kubernetes. Te permite definir permisos detallados para usuarios y cuentas de servicio.
Ver roles en un espacio de nombres:
kubectl get roles -n <namespace>
Ver los roles del clúster:
kubectl get clusterroles
Ver vinculaciones de roles:
kubectl get rolebindings -n <espacio de nombres>
Ver las vinculaciones de roles de clúster:
kubectl get clusterrolebindings
Crea un rol con permisos específicos:
kubectl create role developer --verb=get,list,watch --resource=pods,deployments -n <namespace>
Vincula un rol a un usuario:
kubectl create rolebinding dev-user-binding --role=desarrollador --user=dev-usuario -n <namespace>
Utiliza siempre que sea posible RoleBindings en lugar de ClusterRoleBindings para limitar los permisos a un espacio de nombres concreto. Esto sigue el principio del menor privilegio al limitar el acceso sólo a los espacios de nombres que lo requieren, reduciendo el impacto potencial del compromiso de credenciales.
Sigue el principio del menor privilegio dando a los usuarios y a las cuentas de servicio sólo los permisos que necesitan para realizar su trabajo. Acostúmbrate a revisar periódicamente las vinculaciones de funciones para asegurarte de que siguen teniendo sentido a medida que cambian las funciones y responsabilidades.
Manipulación segura de Secretos
Secretos de Kubernetes deben manejarse con cuidado, ya que contienen información sensible como claves API, contraseñas y certificados.
Crea un secreto de forma segura a partir de un archivo:
kubectl create secret generic db-credentials --del-archivo=./nombre-deusuario.txt --del-archivo=./contraseña.txt
Crea un secreto TLS:
kubectl create secret tls tls-secret --cert=ruta/a/cert --key=ruta/a/key
Montar Secretos como variables de entorno:
env:
- nombre: DB_PASSWORD
valorDesde:
secretKeyRef:
nombre: db-credentials
clave: contraseña
Montar Secretos como archivos:
volúmenes:
- nombre: volumen-secreto
secreto:
secretName: certificados-ssl
Piensa en utilizar herramientas externas de gestión de secretos como HashiCorp Vault, AWS Secrets Manager o Sealed Secrets para aumentar la seguridad. Estas herramientas ofrecen funciones útiles como rotación de secretos, registros de auditoría y cifrado.
Utilizar kubectl con contexto seguro
Asegúrate siempre de que operas en el contexto correcto para evitar modificar accidentalmente el clúster equivocado.
Ver todos los contextos disponibles:
kubectl config get-contexts
Cambia a un contexto específico:
kubectl config usar-contexto <nombre-contexto>
Ver el contexto actual:
kubectl config contexto-actual
Establece el espacio de nombres del contexto actual:
kubectl config set-context --current --namespace=<namespace>
En entornos de producción importantes, es una buena idea utilizar señales visuales, como los avisos del shell, para mostrar el clúster y el espacio de nombres actuales. Esto facilita evitar acciones accidentales en los recursos equivocados.
Utilizar políticas de red
Políticas de red actúan como cortafuegos dentro de tu clúster Kubernetes, controlando la comunicación entre pods.
Enumera las políticas de red:
kubectl obtener políticas de red
Crea una política de red que deniegue por defecto todo el tráfico de entrada:
kubectl aplicar -f - <<EOF
apiVersion: networking.k8s.io/v1
tipo: NetworkPolicy
metadatos:
nombre: default-deny-ingress
espec:
podSelector: {}
tipos de política:
- Entrada
EOF
Crea una política de red que permita un tráfico específico:
kubectl aplicar -f - <<EOF
apiVersion: networking.k8s.io/v1
tipo: Política de red
metadatos:
nombre: allow-frontend-to-backend
espec:
podSelector:
emparejarEtiquetas:
app: backend
entrada:
- de:
- podSelector:
emparejarEtiquetas:
app: frontend
puertos:
- puerto 8080
EOF
Empieza con una política de red "denegar todo" como línea de base, y luego permite sólo el tráfico que realmente necesites. De este modo, seguirás el principio del menor privilegio y mantendrás tu superficie de ataque lo más reducida posible.
Domina la gestión de Kubernetes con estos comandos kubectl y las mejores prácticas
Kubectl es una herramienta imprescindible en el mundo de los comandos de Kubernetes, ya que actúa como tu interfaz de referencia para gestionar y trabajar con clusters de Kubernetes. Aprendiendo estos comandos de ejecución y siguiendo las mejores prácticas de esta hoja de trucos, estarás preparado para afrontar los retos de las aplicaciones en contenedores con la máxima confianza.
Ten en cuenta que Kubernetes siempre está evolucionando, y kubectl también. Mantente al día de las nuevas funciones y actualizaciones para seguir mejorando tus habilidades de gestión de clústeres.
Si estás listo para sumergirte en temas más avanzados como la ampliación de los rangos de IP del servicio Kubernetes, consulta nuestra guía detallada en cómo ampliar rangos de IP de servicio sin problemas.
A medida que tu configuración de Kubernetes se amplía y se hace más compleja, disponer de las herramientas y los conocimientos adecuados resulta aún más importante. Ahí es donde DoiT entra. Nuestro equipo global de arquitectos de la nube está especializado en ayudar a las empresas a crear infraestructuras en la nube rentables, escalables y resistentes. Estamos aquí para ayudar a afrontar los difíciles retos de configuración e integración de Kubernetes, a la vez que resolvemos problemas e impulsamos la eficiencia operativa.
Chatea con nosotros para saber cómo podemos ayudarte a optimizar tu estrategia de orquestación de contenedores para mejorar el rendimiento y ahorrar costes.