===== 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/