Configuración y Lanzamiento de Despliegue en Kubernetes
Ahora que su aplicación se ejecuta correctamente dentro de contenedores, el siguiente desafío es orquestar y gestionar esos contenedores a escala. Aquí es donde Kubernetes resulta útil.
Para comenzar, debe definir el estado deseado de su aplicación utilizando archivos YAML. Un archivo describirá un Deployment, que gestiona las actualizaciones y el escalado, mientras que otro definirá un Service, que expone su aplicación a la red y la hace accesible para los usuarios.
YAML (YAML Ain't Markup Language) es un formato legible por humanos para archivos de configuración. Se utiliza frecuentemente para describir infraestructura, automatizar procesos y almacenar configuraciones de aplicaciones.
Un Deployment garantiza que siempre se estén ejecutando la cantidad deseada de instancias de la aplicación (Pods) y facilita la implementación de actualizaciones o la reversión a versiones anteriores. Un Service expone estos contenedores a la red y distribuye el tráfico entrante entre ellos.
Ejecutando Minikube
Minikube es una herramienta ligera que permite ejecutar un clúster de Kubernetes localmente en su computadora. Crea un entorno virtual donde puede probar y explorar Kubernetes sin necesidad de servicios en la nube.
Después de instalar Minikube y agregarlo a la variable PATH de su sistema, abra PowerShell (o la terminal de su preferencia) y ejecute:
Este comando verifica si Minikube está disponible y muestra la versión instalada.
Una vez confirmado que Minikube está instalado, inicie su clúster local de Kubernetes con:
Este comando crea e inicia un clúster local de Kubernetes en su máquina. Descarga los componentes necesarios e inicia el plano de control y los nodos de trabajo.
Despliegue: Implementación de la Aplicación
Comience creando el archivo deployment.yaml. Un Deployment en Kubernetes garantiza que siempre se esté ejecutando una cantidad específica de Pods (instancias de la aplicación) y permite actualizaciones o retrocesos sin tiempo de inactividad.
deployment.yaml
En este manifiesto, el parámetro replicas especifica cuántas instancias de Pod deben ejecutarse al mismo tiempo — en este caso, dos. Para saber qué Pods gestionar, el Deployment utiliza una combinación de selector y etiquetas: el selector actúa como filtro para encontrar Pods con una etiqueta específica, y la plantilla de Pod define esa etiqueta. Cuando las etiquetas coinciden, el Deployment considera esos Pods como propios y se encarga de mantener su cantidad, actualizarlos y reiniciarlos si es necesario.
Todos los Pods se ejecutan en el puerto 3000. Todos pueden usar el mismo puerto porque cada Pod opera en su propio espacio de red aislado, por lo que no hay conflicto entre ellos.
Servicio: Acceso de red a la aplicación
Una vez que el Deployment está configurado, se necesita un Service para proporcionar acceso de red y balanceo de carga entre los Pods. Cree el archivo service.yaml:
service.yaml
Este manifiesto define un Service llamado my-app-service que dirige el tráfico a los Pods con la etiqueta app: my-app. Escucha en el puerto 80 externamente y reenvía las solicitudes al puerto 3000 dentro de los Pods.
El tipo LoadBalancer es importante porque expone la aplicación externamente y distribuye el tráfico entre los Pods.
Despliegue de la aplicación en Kubernetes
Una vez que los archivos YAML estén listos, se pueden aplicar al clúster:
kubectl apply -f deployment.yaml
kubectl apply -f service.yaml
El comando kubectl apply -f crea o actualiza recursos en el clúster según el contenido del archivo YAML.
Verificación del estado
Después de aplicar los archivos de configuración, es fundamental confirmar que todo se haya desplegado según lo esperado. Dado que los Pods y Servicios tardan un momento en iniciarse, comience listando los Pods en ejecución:
Si el archivo deployment.yaml especifica replicas: 2, dos Pods deberían aparecer en la salida.
Para confirmar que el Servicio está en ejecución y accesible:
Esto mostrará la dirección IP del Servicio y los puertos a través de los cuales se puede acceder a la aplicación.
Obtener la URL del Servicio
Para acceder a su aplicación, ejecute el siguiente comando en PowerShell o en su terminal:
Este comando solicita a Minikube que devuelva la URL donde su aplicación está expuesta. Minikube verifica el Servicio que creó (my-app-service) y proporciona un enlace que puede abrir en su navegador.
Escalado de la Aplicación
Kubernetes facilita el ajuste de la cantidad de Pods en ejecución sin detener la aplicación.
Por ejemplo, para escalar de 2 a 4 réplicas:
Ejecutar kubectl get pods nuevamente ahora mostrará cuatro Pods activos.
Kubernetes proporciona herramientas potentes para gestionar aplicaciones contenerizadas a cualquier escala.
Un Deployment garantiza que el número correcto de Pods esté en ejecución y puede actualizarse o revertirse fácilmente.
Un Service expone la aplicación a la red y equilibra el tráfico entrante.
Los archivos de configuración YAML hacen que la configuración sea clara y legible, mientras que los comandos kubectl permiten aplicar y gestionar estas configuraciones en tiempo real.
1. ¿Cuál es el propósito principal de un Deployment en Kubernetes?
2. ¿Por qué varios Pods pueden ejecutarse en el mismo número de puerto (por ejemplo, 3000) sin conflictos?
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
What should I do if my pods are not starting as expected?
How can I update my application without downtime using Kubernetes?
Can you explain the difference between a Deployment and a Service in Kubernetes?
Genial!
Completion tasa mejorada a 3.7
Configuración y Lanzamiento de Despliegue en Kubernetes
Desliza para mostrar el menú
Ahora que su aplicación se ejecuta correctamente dentro de contenedores, el siguiente desafío es orquestar y gestionar esos contenedores a escala. Aquí es donde Kubernetes resulta útil.
Para comenzar, debe definir el estado deseado de su aplicación utilizando archivos YAML. Un archivo describirá un Deployment, que gestiona las actualizaciones y el escalado, mientras que otro definirá un Service, que expone su aplicación a la red y la hace accesible para los usuarios.
YAML (YAML Ain't Markup Language) es un formato legible por humanos para archivos de configuración. Se utiliza frecuentemente para describir infraestructura, automatizar procesos y almacenar configuraciones de aplicaciones.
Un Deployment garantiza que siempre se estén ejecutando la cantidad deseada de instancias de la aplicación (Pods) y facilita la implementación de actualizaciones o la reversión a versiones anteriores. Un Service expone estos contenedores a la red y distribuye el tráfico entrante entre ellos.
Ejecutando Minikube
Minikube es una herramienta ligera que permite ejecutar un clúster de Kubernetes localmente en su computadora. Crea un entorno virtual donde puede probar y explorar Kubernetes sin necesidad de servicios en la nube.
Después de instalar Minikube y agregarlo a la variable PATH de su sistema, abra PowerShell (o la terminal de su preferencia) y ejecute:
Este comando verifica si Minikube está disponible y muestra la versión instalada.
Una vez confirmado que Minikube está instalado, inicie su clúster local de Kubernetes con:
Este comando crea e inicia un clúster local de Kubernetes en su máquina. Descarga los componentes necesarios e inicia el plano de control y los nodos de trabajo.
Despliegue: Implementación de la Aplicación
Comience creando el archivo deployment.yaml. Un Deployment en Kubernetes garantiza que siempre se esté ejecutando una cantidad específica de Pods (instancias de la aplicación) y permite actualizaciones o retrocesos sin tiempo de inactividad.
deployment.yaml
En este manifiesto, el parámetro replicas especifica cuántas instancias de Pod deben ejecutarse al mismo tiempo — en este caso, dos. Para saber qué Pods gestionar, el Deployment utiliza una combinación de selector y etiquetas: el selector actúa como filtro para encontrar Pods con una etiqueta específica, y la plantilla de Pod define esa etiqueta. Cuando las etiquetas coinciden, el Deployment considera esos Pods como propios y se encarga de mantener su cantidad, actualizarlos y reiniciarlos si es necesario.
Todos los Pods se ejecutan en el puerto 3000. Todos pueden usar el mismo puerto porque cada Pod opera en su propio espacio de red aislado, por lo que no hay conflicto entre ellos.
Servicio: Acceso de red a la aplicación
Una vez que el Deployment está configurado, se necesita un Service para proporcionar acceso de red y balanceo de carga entre los Pods. Cree el archivo service.yaml:
service.yaml
Este manifiesto define un Service llamado my-app-service que dirige el tráfico a los Pods con la etiqueta app: my-app. Escucha en el puerto 80 externamente y reenvía las solicitudes al puerto 3000 dentro de los Pods.
El tipo LoadBalancer es importante porque expone la aplicación externamente y distribuye el tráfico entre los Pods.
Despliegue de la aplicación en Kubernetes
Una vez que los archivos YAML estén listos, se pueden aplicar al clúster:
kubectl apply -f deployment.yaml
kubectl apply -f service.yaml
El comando kubectl apply -f crea o actualiza recursos en el clúster según el contenido del archivo YAML.
Verificación del estado
Después de aplicar los archivos de configuración, es fundamental confirmar que todo se haya desplegado según lo esperado. Dado que los Pods y Servicios tardan un momento en iniciarse, comience listando los Pods en ejecución:
Si el archivo deployment.yaml especifica replicas: 2, dos Pods deberían aparecer en la salida.
Para confirmar que el Servicio está en ejecución y accesible:
Esto mostrará la dirección IP del Servicio y los puertos a través de los cuales se puede acceder a la aplicación.
Obtener la URL del Servicio
Para acceder a su aplicación, ejecute el siguiente comando en PowerShell o en su terminal:
Este comando solicita a Minikube que devuelva la URL donde su aplicación está expuesta. Minikube verifica el Servicio que creó (my-app-service) y proporciona un enlace que puede abrir en su navegador.
Escalado de la Aplicación
Kubernetes facilita el ajuste de la cantidad de Pods en ejecución sin detener la aplicación.
Por ejemplo, para escalar de 2 a 4 réplicas:
Ejecutar kubectl get pods nuevamente ahora mostrará cuatro Pods activos.
Kubernetes proporciona herramientas potentes para gestionar aplicaciones contenerizadas a cualquier escala.
Un Deployment garantiza que el número correcto de Pods esté en ejecución y puede actualizarse o revertirse fácilmente.
Un Service expone la aplicación a la red y equilibra el tráfico entrante.
Los archivos de configuración YAML hacen que la configuración sea clara y legible, mientras que los comandos kubectl permiten aplicar y gestionar estas configuraciones en tiempo real.
1. ¿Cuál es el propósito principal de un Deployment en Kubernetes?
2. ¿Por qué varios Pods pueden ejecutarse en el mismo número de puerto (por ejemplo, 3000) sin conflictos?
¡Gracias por tus comentarios!