Introducción
El comando set en Kubernetes es una herramienta versátil que te permite modificar la configuración de los recursos existentes de Kubernetes. Este comando permite realizar ajustes como actualizar las imágenes de contenedores y configurar las solicitudes y límites de recursos, todo sin editar directamente los archivos YAML. Simplifica la gestión de recursos y mejora la eficiencia operativa.
Al final de este laboratorio, entenderás cómo:
- Iniciar un clúster de Kubernetes.
- Actualizar la imagen de contenedor de un despliegue (deployment).
- Configurar las solicitudes y límites de recursos para un despliegue (deployment).
- Modificar las etiquetas (labels) y anotaciones (annotations) en un despliegue (deployment) utilizando los comandos relevantes.
Este laboratorio está diseñado para principiantes y asume que estás trabajando en un sistema Linux Ubuntu con las herramientas de Kubernetes instaladas. No se requiere experiencia previa con Kubernetes.
Iniciar un clúster de Kubernetes
Antes de interactuar con los recursos de Kubernetes, asegúrate de que un clúster de Kubernetes esté en ejecución. Para este laboratorio, utilizaremos Minikube para configurar un clúster de Kubernetes de un solo nodo.
Abre una terminal y inicia Minikube:
minikube startEsto inicializa un clúster de Kubernetes local. Minikube asigna automáticamente los recursos adecuados, pero puedes personalizarlos utilizando opciones (flags) como
--cpusy--memorysi es necesario.Verifica que Minikube esté en ejecución:
kubectl cluster-infoAsegúrate de que la salida confirme que el clúster está operativo.
Crear un Despliegue
Una vez que el clúster esté en ejecución, crea un simple despliegue (deployment) de Kubernetes llamado hello-world utilizando la imagen nginx.
Ejecuta el siguiente comando para crear el despliegue:
kubectl create deployment hello-world --image=nginxEste comando crea un despliegue llamado
hello-worldcon una réplica del contenedornginx.Verifica que el despliegue se haya creado correctamente:
kubectl get deploymentsRevisa la salida para asegurarte de que
hello-worldaparezca en la lista de despliegues.
Explorar el comando kubectl set
El comando kubectl set proporciona múltiples subcomandos para configurar y modificar los recursos de una aplicación. Ayuda a gestionar aspectos específicos como variables de entorno, imágenes de contenedores y configuraciones de recursos.
Ejecuta el siguiente comando para ver los subcomandos disponibles de
kubectl set:kubectl set -hVerás la siguiente salida:
Configure application resources. These commands help you make changes to existing application resources. Available Commands: env Update environment variables on a pod template image Update the image of a pod template resources Update resource requests/limits on objects with pod templates selector Set the selector on a resource serviceaccount Update the service account of a resource subject Update the user, group, or service account in a role binding or cluster role binding Usage: kubectl set SUBCOMMAND [options] Use "kubectl --help" for more information about a given command. Use "kubectl options" for a list of global command-line options (applies to all commands).Revisa los subcomandos disponibles y sus descripciones para entender cómo se puede utilizar
kubectl set.Utiliza
kubectl set --helppara explorar detalles adicionales sobre cada subcomando según sea necesario.
Actualizar la imagen del contenedor
A continuación, actualiza la imagen de contenedor en el despliegue (deployment) hello-world a una versión específica.
Utiliza el comando
kubectl setpara actualizar la imagen de contenedor anginx:1.19.10:kubectl set image deployment/hello-world nginx=nginx:1.19.10Este comando actualiza el contenedor
nginxen el desplieguehello-world.Verifica la actualización de la imagen consultando la imagen de contenedor:
kubectl get deployment hello-world -o jsonpath='{.spec.template.spec.containers[0].image}'Asegúrate de que la salida muestre
nginx:1.19.10.
Configurar solicitudes y límites de recursos
La gestión de recursos es esencial para los despliegues (deployments) de Kubernetes. Establece solicitudes y límites de recursos para el despliegue hello-world.
Configura las solicitudes y límites de CPU y memoria:
kubectl set resources deployment/hello-world --limits=cpu=1,memory=512Mi --requests=cpu=500m,memory=256MiEste comando establece las solicitudes de recursos en
500mde CPU y256Mide memoria, y los límites en1CPU y512Mide memoria.Verifica la configuración de recursos describiendo el despliegue:
kubectl describe deployment hello-worldRevisa las secciones
LimitsyRequestsen la salida para confirmar la configuración.
Modificar etiquetas en el despliegue
Las etiquetas (labels) ayudan a categorizar y organizar los recursos de Kubernetes. Utiliza el comando kubectl label para agregar o modificar etiquetas en el despliegue.
Agrega una etiqueta
environment=developmental desplieguehello-world:kubectl label deployment hello-world environment=developmentEste comando agrega una nueva etiqueta al despliegue.
Verifica que la etiqueta se haya aplicado:
kubectl get deployment hello-world --show-labelsRevisa la columna
LABELSpara encontrar la etiquetaenvironment=development.
Actualizar anotaciones en el despliegue
Las anotaciones (annotations) proporcionan metadatos a los recursos de Kubernetes. Utiliza el comando kubectl annotate para agregar o actualizar anotaciones en el despliegue.
Agrega una anotación
owner=team-alphaal desplieguehello-world:kubectl annotate deployment hello-world owner=team-alphaEste comando agrega una anotación al despliegue.
Verifica que la anotación se haya aplicado:
kubectl describe deployment hello-worldRevisa la sección
Annotationspara encontrarowner=team-alpha.
Resumen
En este laboratorio, aprendiste cómo utilizar el comando set de Kubernetes para gestionar los despliegues (deployments) de manera efectiva. Realizaste lo siguiente:
- Iniciaste un clúster de Kubernetes.
- Creaste un despliegue.
- Actualizaste la imagen de contenedor.
- Configuraste solicitudes y límites de recursos.
- Modificaste etiquetas (labels) y anotaciones (annotations) utilizando los comandos adecuados.
Estas habilidades son esenciales para gestionar aplicaciones de Kubernetes de manera eficiente.


