Desplegando una aplicación en Kubernetes

1 minuto de lectura

Un escenario común cuando desplegamos una aplicación web puede ser el siguiente:

<img src="https://www.josedomingo.org/pledin/assets/wp-content/uploads/2018/05/deploy1.png" alt="" width="685" height="387" class="aligncenter size-full wp-image-1997" />

En este escenario tenemos los siguientes elementos:

  • Un conjunto de máquinas (normalmente virtuales) que sirven la aplicación web (frontend).
  • Un balanceador de carga externo que reparte el tráfico entre las diferentes máquinas.
  • Un número de servidores de bases de datos (backend).
  • Un balanceador de carga interno que reparte el acceso a las bases de datos.

El escenario anterior se podría montar en Kubernetes de la siguiente forma:

Los distintos recursos de Kubernetes nos proporcionan distintas características muy deseadas:

  • Pods: La unidad mínima de computación en Kubernetes, permite ejecutar contenedores. Representa un conjunto de contenedores y almacenamiento compartido que comparte una única IP.
  • ReplicaSet: Recurso de un cluster Kubernetes que asegura que siempre se ejecute un número de replicas de un pod determinado. Nos proporciona las siguientes características:
    • Que no haya caída del servicio
    • Tolerancia a errores
    • Escabilidad dinámica
  • Deployment: Recurso del cluster Kubernetes que nos permite manejar los ReplicaSets. Nos proporciona las siguientes características:
    • Actualizaciones continúas
    • Despliegues automáticos
  • Service: Nos permite el acceso a los pod.
  • Ingress: Nos permite implementar un proxy inverso para el acceso a los distintos servicios establecidos. Estos dos elementos nos proporcionan la siguiente funcionalidad:
    • Balanceo de carga
  • Otros recursos de un cluster Kubernetes nos pueden proporcional características adicionales:
    • Migraciones sencillas
    • Monitorización
    • Control de acceso basada en Roles
    • Integración y despliegue continuo

En las siguientes entradas vamos a ir estudiando cada uno de estos recursos.

Índice de entradas sobre Kubenetes

Este artículo corresponde a una serie de entradas donde he hablado sobre Kubernetes:

Comentar