Introducción a Kubernetes

¿Qué es Kubernetes?

  • Es un orquestrador de contenedores
  • Opensource toolkit desarrollado por Google (2014)
  • También deminado K8S
  • El diseño de K8S está basado en 4 principios:
    • Escalabilidad
    • Disponibilidad
    • Seguridad
    • Portabilidad

Contenedores para aplicaciones (Docker)

  • Docker es una plataforma con el que se puede ejecutar una aplicación de forma aislada en un sistema operativo
  • El empaquetamiento de imágenes docker y la ejecución de las mismas en contenedores permiten crear ambientes de desarrollo y producción consistentes

Microservicios

  • Fácil mantenimiento a largo plazo
  • Facilidad al momento de agregar, actualizar o quitar alguna tecnología de software
  • Facilidad de escalamiento horizontal de la aplicación

¿Para que sirve Kubernetes?

  • Para orquestrar contendedores
  • Facilita la operatibilidad de empaquetar, integrar, testear, y desplegar aplicaciones en servidores
  • Provision de estrategias y mecanismos confiables y seguros de despliegue de software
  • Facilita el mantenimiento y desarrollo de plataformas tolerantes a fallo, escalables y de alta disponibilidad

Características de K8S

  • Es instalable en cualquier tipo de infrastructura:
  • Cloud (Google Cloud GKE, AWS EKS, Azure EKS, etc)
  • Infrastructura local o privada
  • Híbrido de infrastructuras públicas y privadas
  • Funcionalidad especifica o avanzada puede ser desarrollada atravéz de Operators (operadores)
  • Provisión de diferentes capacidades y funcionalidades
    • Montaje de diferentes sistemas de almacenamiento
    • Manejo y distribución de datos sensitivos (secrets)
    • Verificación automática de la salud de las apps en contendedores
    • Balanceo de carga
    • Actualizaciones continuas (zero-downtime)
    • Manejo de autenticación y autorización

Alternativas a Kubernetes

  • Mesosphere
  • Docker Swarm
  • Docker Compose (desarollo local)
  • Docker Cloud
  • Minikube (desarollo local)

Architectura de Kubernetes

Kubernetes está básicamente compuesto por:

  • Master: El nodo o servidor primario del cluster
  • Worker node: Que vendría a ser un worker o slave del cluster

Principios de operación

  • Todos los contenedores son encapsulados y orquestrados en Pods
  • Los recursos necesarios para levantar un contenedor son dinámicamente asignados y reservados en los diferentes nodos disponibles por Kubernetes
  • Todos los mensajes de las aplicaciones son centralizadas en un solo lugar
  • Todas las métricas de los recursos del cluster son centralizadas en un solo lugar

Componentes internos

  • API Server
  • Scheduler
  • Datastore (ETCD)
  • Controler manager

Componentes externos

  • Docker
  • Kubelet
  • kube-proxy
  • kubectl

Componentes adicionales

  • Monitoring
  • Logging
  • Service discovery

Autenticación y autorización en Kubernetes

Proceso de Autenticación

  • Regular users
  • Service accounts

Diferentes métodos de autenticación

  • Certificados de cliente x509
  • Bearer tokens
  • Usuario y contraseña

Proceso de Autorización

  • AlwaysDeny
  • AlwaysAllow
  • RBAC (Role based access control)
  • Node
  • Webhook

Referencias

Sitios web

Libros

  • Mastering Kubernetes (Second edition) - Gigi Sayfan