Kubernetes

Kubernetes lo podemos definir como un orquestador de contenedores (container). Es decir nos va a permitir gestionar contenedores en una o varias máquinas.

Un container contiene exclusivamente los servicios necesarios para que la aplicación que se empaqueta pueda correr sin ningún problema y se pueda replicar de acuerdo a nuestras necesidades.

Alguna de las ventajas de usar kubernetes son:

Escalabilidad

Tolerancia a fallos

Balanceo de carga

Gestión de Volúmenes

Conceptos

Componentes de Kubernetes

Estructura física

Nodos

Master.

Estructura Lógica

POD → Un Pod es el objeto más pequeño y la unidad básica desplegable en Kubernetes. Un pod tiene la función de encapsular uno o varios container

Volumes

Namespace

Label/LabelSelector

Controladores

Controladores en Kubernetes

ReplicationController

ReplicaSet

Deployments

DaemonSet

StatefulSet

Jobs

CronJobs

ReplicatoinController

Garantiza la ejecución de un número determinado de POD’s.

Similar a un supervisor.

Sobrevive a disrupción.

ReplicaSet

Similar al ReplicationController

Admite labelSet.

No se recomienda.

Se puede usar en HPA.

Deployments

Proporciona actualizaciones declarativas para POD’s y ReplicaSets.

Permite crear/eliminar conjuntos de réplicas

No se debe administrar ReplicaSets de un Deployment, todos los casos de uso deben ser cubiertos manipulando el Deployment

DaemonSet

Garantiza un POD en cada nodo.

Garbage collector.

Eliminar un DaemonSet eliminará los PODs creados.

En un DaemonSet no se definen ReplicaSets ya que automáticamente va a desplegarlo en cada nodo de nuestro cluster.

El DaemonSet se usa mucha para desplegar pods de monitorización en cada nodo de un cluster

StatefulSet

Administra aplicaciones con estado.

Proporciona garantías sobre el orden y la exclusividad de los PODs.

A diferencia de un Deployment, mantiene una identidad adhesiva para cada POD.

Jobs

Asegura que X POD acaben correctamente.

Permite ejecutar modulos en paralelo.

Hasta no tener un % de éxito no se considera acabado el Job.

CronJobs

Ejecuta jobs en el tiempo.

Una vez en el tiempo / repetidamente una vez en el tiempo.

Se escribe en formato cron.

Referencias

https://github.com/iesgn/curso_kubernetes_cep

https://github.com/iesgn/curso_kubernetes_2020

https://ualmtorres.github.io/SeminarioKubernetes/