Despliegue y Escalamiento de Pods en Kubernetes
Clase 7 de 20 • Curso de Contenedores y Aplicaciones en la Nube con Google Cloud Platform
Resumen
¿Qué es un deployment en Kubernetes?
Kubernetes se ha convertido en una herramienta fundamental para la orquestación de microservicios, gracias a su capacidad para manejar el despliegue de aplicaciones a gran escala. Uno de los componentes más importantes es el deployment, que permite gestionar el número deseado de réplicas de un pod, facilitando el crecimiento o escalamiento horizontal sin crear puntos únicos de falla. Esto se representa en diagramas donde múltiples microservicios pueden coexistir con distinto número de réplicas según su necesidad.
¿Cómo funciona el escalamiento en Kubernetes?
El escalamiento en Kubernetes se maneja en cuatro dimensiones:
- Vertical: Incrementar los recursos de un pod o nodo.
- Horizontal: Crear varias copias de un pod o nodo.
En el caso de Google Kubernetes Engine (GKE), el escalamiento de nodos puede ser gestionado automáticamente, permitiendo a los usuarios concentrarse en el escalamiento de los pods y sus cargas de trabajo.
¿Qué son los recursos límites en Kubernetes?
Aunque este concepto no se trata con profundidad en este contexto, es importante mencionar que Kubernetes permite establecer límites de recursos que un container puede utilizar, asegurando así un funcionamiento más eficiente. Por ejemplo:
- Definir los recursos mínimos necesarios para inicializar una aplicación.
- Configurar el rendimiento requerido para el funcionamiento óptimo día a día.
Esto garantiza que los containers no consuman recursos más allá de lo necesario, evitando saturación en los nodos.
¿Por qué los pods son considerados mortales?
En Kubernetes, los pods están diseñados para ser efímeros, lo que significa que pueden "morir" en cualquier momento debido a un fallo, un evento de mantenimiento o decisiones automatizadas de Kubernetes para maximizar el uso de la infraestructura. Esta naturaleza volátil es mitigada a través de abstracts como el deployment, que garantizan resiliencia y control sobre el estado deseado de las aplicaciones.
¿Cómo se exponen las aplicaciones mediante servicios?
Para exponer aplicaciones, Kubernetes utiliza servicios que proporcionan endpoints estables. Estos servicios permiten el acceso a los pods de maneras eficientes incluso si estos cambian o fallan. A través de los servicios, se pueden realizar funciones como:
- Balanceo de cargas en múltiples pods.
- Comunicación entre pods a través de IPs externas o internas y DNS.
- Uso de etiquetas para identificar y dirigir peticiones a los servicios correctos.
¿Qué papel juegan los namespaces en Kubernetes?
Los namespaces son esenciales para el aislamiento lógico de recursos dentro de un clúster, permitiendo una organización y gestión eficiente de recursos. Son útiles para separar ambientes como desarrollo, calidad y producción en un mismo clúster, lo cual reduce costos operativos y simplifica procesos de DevOps.
¿Cómo se gestionan los recursos y accesos en un namespace?
Algunos puntos clave relacionados con el manejo de namespaces son:
- Definición de recursos mínimos garantizados para cada namespace.
- Control de acceso mediante roles, estableciendo diferentes niveles de permisos para desarrollo, calidad y producción.
Además, los namespaces permiten organizar recursos por equipo o línea de negocio, proporcionando flexibilidad y control en la distribución de los componentes dentro del clúster.
¿Cuál es el compromiso de Google Cloud con Kubernetes?
Google ha sido un actor primordial en el desarrollo de Kubernetes, contribuyendo al proyecto desde sus inicios. Desde el lanzamiento de Kubernetes en 2014, Google ha liderado en la contribución al código, commits y pull requests. Este nivel de participación asegura una plataforma actualizada y confiable, un aspecto crucial para elegir Kubernetes como solución de orquestación.
¿Qué relevancia tiene la experiencia de Google en la orquestación?
Google posee quince años de experiencia en orquestación, comenzando con su solución interna Borg en 2003, y evolucionando hasta lanzar Kubernetes como un proyecto open source en 2014. Esta trayectoria demuestra el compromiso y la expertise de Google en el campo, proporcionando una plataforma robusta y adaptable para gestionar cargas de trabajo en contextos híbridos y multinube.