SlideShare una empresa de Scribd logo
1 de 136
Descargar para leer sin conexión
Luis Merino Troncoso
Cloud Solutions Architect
FUNDAMENTALS
Modelo Multi/Hybrid Cloud
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Introducción
Esta presentación pretende ser una introducción al
mundo Multi/Hybrid Cloud.
El objetivo es afianzar una serie de conocimientos que
son básicos para entender los productos de cada uno de
los fabricantes/Proveedores Cloud en en esta área.
Habra una presentacion por Producto de cada Fabricante
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Agenda
✓ Que es Multi/hybrid Cloud
✓ Conceptos Básicos -Containers
✓ Docker y Características- Repositorios de Imágenes
✓ Orquestación Contenedores
✓ KUBERNETES (k8s)
✓ Multicloud Journey con Containers y k8s
✓ VM vs Container vs Serverless
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Que es Multi/hybrid Cloud
✓ Modelos Adopción Cloud
✓ Evolución Adopción cloud
✓ Hybrid / Multi-cloud / Hybrid Multi-cloud
✓ Journey to cloud
✓ Monitorización/Logging Multi Cloud
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Tipos de Servicios en Cloud
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Modelos Adopción Cloud
✓ Private cloud
✓ Public Cloud
✓ Hybrid Cloud
✓ Multicloud
✓ Hybrid IT
✓ Hybrid Multicloud
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Evolución Adopción Cloud
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Private & Public Cloud
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Hybrid Cloud
✓ Combinación de una o más nubes públicas
y privadas con :
− Interoperabilidad
− Portabilidad de aplicaciones
− Portabilidad de datos
− Orquestación
✓ Todo ello con una Gestión común
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Multicloud
✓ Uso de diferentes nubes de múltiples
proveedores para múltiples tareas.
✓ Se logra una mayor flexibilidad, menores
costos, se evita Bloqueo del proveedor
✓ Imprescindible lograr políticas,
cumplimiento y administración consistentes
con los diferentes proveedores involucrados.
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Hybrid MultiCloud
Hybrid Multicloud reúne varias Cloud y
proporciona las herramientas para garantizar
la interoperabilidad entre los diversos servicios
en soluciones híbridas y Multicloud.
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Hybrid IT vs Hybrid Cloud vs Multi-cloud
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Ej: Backup en Hybrid Cloud
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Multicloud Monitoring/logging
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Containers - Clave para MultiCloud
Source:PortworxContainerAdoptionSurvey2018
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Containers - Clave para MultiCloud
✓ En Multicloud uno de los objetivos es la
portabilidad
✓ Los contenedores son la respuesta a la
portabilidad que el mercado desea.
✓ Son también una nueva forma de evitar el
“Vendor Lock-in” al ser transportables
✓ La nube pública al final es “un producto”, y el
bloqueo como consecuencia de la adopción de
un producto siempre es una posibilidad.
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Kubernetes Multi-Hybrid Cloud
✓ Kubernetes es compatible con todas las nubes
✓ forma común de implementar WorkLoads.
✓ La Fundación Linux demostró una Hybrid-MultiCloud
✓ El proyecto Cloud-CI en CNCF mostró una
implementación ONAP con Kubernetes en varias cloud
públicas y privadas (incluida IBM Cloud) y Bare-Metal
ONAP Multi-Hybrid Cloud Real
https://www.onap.org/blog/2018/05/04/how-service-providers-can-use-kubernetes-to-sc
ale-nfv-transformation
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Kubernetes Multi-Hybrid Cloud
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Containers vs Serverless
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Containers vs Serverless
✓ Ambos tienen una arquitectura diseñada para aprovechar lo último en
cloud computing.
✓ Aunque no son lo mismo y tienen un propósito diferente:
✓ algunos puntos comunes:
− Gastos generales mínimos
− Alto rendimiento
− Requiere aprovisionamiento de infraestructura mínima
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Containers vs Serverless
Ventajas serverless
− Simplicidad de implementación solo cargas las funciones, y ya esta
− Se paga por la ejecución, Serverless es más barato que los contenedores.
− No hay que preocuparse por la escalabilidad.
− La actualización o modificación es más fácil de hacer que en containers.
Desventajas serverless
− Es una tecnología de "caja negra", no necesariamente sabe lo que está haciendo
− La complejidad crece exponencialmente a medida que crece la APP
− Siempre depende de un proveedor(Vendor lock-in)- Containers son Vendor -Agnostic
− Puede ser muy difícil de corregir algunos errores y monitorizar su ejecución en grandes
instalaciones
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Journey to Hybrid Multi-Cloud
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
¿Proyecto Docker?
Docker es un proyecto de código abierto que automatiza el despliegue de
aplicaciones dentro de contenedores de software, proporcionando una capa
adicional de abstracción y automatización de Virtualización a nivel de
sistema operativo en Linux.
Docker utiliza características de aislamiento de recursos del kernel Linux,
tales como cgroups y espacios de nombres (namespaces) para permitir que
"contenedores" independientes se ejecuten dentro de una sola instancia de
Linux, evitando la sobrecarga de iniciar y mantener máquinas virtuales.
Wikipedia
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Docker Actual
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
CGroups & Namespaces
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
CGroups & Namespaces
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Virtual Machine vs Container
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Ciclo de vida Docker
Arquitectura cliente-servidor
✓ El cliente - habla con el Docker daemon para gestionar contenedores:
− build
− ejecución
− Distribución
✓ Se comunican usando una API REST:
− Sockets UNIX
− Interfaz de red
✓ Containerd - Gestiona el ciclo de vida de los contenedores
− Start
− Stop
− Pause
− Delete
− Gestionar las imagenes
✓ Docker client (docker):
− Es cómo los usuarios interactúan con Docker
− Envía comandos a dockerd
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Ciclo vida Docker
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
¿Qué son los contenedores?
Un contenedor es una unidad de software estándar que empaqueta
el código y todas sus dependencias para que la aplicación se ejecute
de manera rápida y confiable de un entorno informático a otro.
Imagen Docker Contenedor Docker
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Arquitectura Docker
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Arquitectura Docker
✓ Imágenes
✓ Contenedores
✓ Networking
✓ Storage
✓ Servicios
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Imágenes
✓ Plantilla RO con instrucciones para crear un contenedor Docker
✓ La imagen se basa en otra imagen
✓ Se pueden crear nuestras propias imágenes
✓ Se usan las imágenes publicadas en un registro
✓ Dockerfile para construir imágenes
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Imagenes Docker
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Imágenes y Capas
✓ Cada capa es una instrucción en el Dockerfile de la imagen.
✓ Todas son, excepto la última, de RO.
✓ Las capas se apilan unas encima de otras.
✓ Los contenedores agregan nuevas capas de escritura encima de
las capas subyacentes
✓ los cambios realizados en un contenedor en ejecución se
realizan en la capa Contenedor
✓ las capas de las imágenes se guardan en /var/lib/docker
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Docker Registry - Docker Hub
✓ Guarda las Imágenes de Docker
✓ Registro público como Docker Hub
✓ Permite ejecutar tu propio private registry
✓ Artifactory , Nexus , AWS , Azure , GCP ..
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Contenedores
✓ Instancia ejecutable de una imagen
✓ Se Conectan los contenedores a redes
✓ se adjuntan al almacenamiento
✓ Se crea una nueva imagen basada en su estado actual
✓ Estan aislado de otros contenedores y de la máquina host
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Docker Networking
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Container Networking Model
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
SandBox
✓ Aísla el stack de red , network interfaces,ports,route tables, DNS
✓ Un Sandbox puede tener múltiples EndPoints conectados a
diferentes redes que representan la configuración de red del
contenedor, como dirección IP, dirección MAC, rutas, DNS.
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Endpoint
✓ Virtual Network Interface, su responsabilidad es conectar el
sandbox con una red.
✓ Solo pueden estar conectados a una red a la vez,
✓ Un contenedor puede tener más de un endpoint para atacar a
diferentes redes
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Network
✓ Estandar https://en.wikipedia.org/wiki/IEEE_802.1D
✓ Proporciona conectividad entre un grupo de Endpoints que
pertenecen a la misma red y aislados del resto.
✓ Cada vez que se crea o actualiza una red, el controlador
correspondiente será notificado del evento.
✓ La red de Docker por defecto:
− 172.0.0.0/16 CIDR
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Modelo de Red del Container
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Networking Drivers
La instalación por defecto, crea tres redes automáticamente
$ docker network ls
NETWORK ID NAME DRIVER
7fca4eb8c647 bridge bridge
9f904ee27bf5 none null
cf03ee007fb4 host host
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Networking Drivers - Bridge
✓ Red interna privada “Default” creada por
Docker en el host.
✓ Los containers obtienen una IP interna y
pueden acceder entre sí.
✓ Cuando las App se ejecutan en
contenedores indeptes que necesitan
comunicarse.
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Bridge Networking & Port Mapping
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Publicación/Exposición Puertos
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Networking Drivers - Host
✓ Añade el container al stack de red del host.
✓ No hay aislamiento entre host y contenedor.
✓ Un web srv en puerto 80 está disponible en
el puerto 80 de la máquina host.
✓ Las none y host no se pueden configurar en
Docker , Solo la Bridge.
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Networking Drivers - None
Ese contenedor carece de una interfaz de red.
Adjuntando a dicho contenedor y mirando su
stack, se vería esto: None
$ docker attach nonetcontainer
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Networking Drivers - macvlan
✓ Provee un dirección Hardware MAC para
cada controlador para un stack TCP/IP
completo
✓ Convierte al container en primera clase red
✓ Acarrea un overhead adicional a nivel de
gestión ya que es un elemento más de la
red
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Networking Drivers - Overlay
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Network Plugins
✓ Permite a los fabricantes extender la funcionalidad de sus dispositivos y
tecnologías de red a docker
✓ Funcionalidades como Specific IP Address Management, auto configuración de
red para Overlay , QoS, Load Balancing
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Tipos Almacenamiento
No Persistente ( Efímero)
− Almacenamiento local
− Los datos son efímeros
− Por defecto los containers usan local storage (graph storage)
− Unido al ciclo de vida del contenedor
Persistente
− volúmenes - ( no están ligados al container )
Los volúmenes son casi siempre la elección correcta.
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Volumen No Persistente
Consiste en almacenar datos en la capa de escritura de
un contenedor:
− Los datos no persistirán cuando ese contenedor no esté
− La capa grabable está acoplada al host donde se ejecuta.
− Reduce el rendimiento en comparación con el uso de volúmenes
− Storage locations:
− - Linux: /var/lib/docker/[STORAGE-DRIVER]/
− - Windows: C:ProgramDataDockerwindowsfilter
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Volumen Persistente
✓ Se usan para persistir datos
− Primero se crea el volumen
− Después se crea el container.
✓ Se monta en un directorio del container
✓ Al borrar el contenedor el volumen no se borra
✓ Drivers de terceros:
− Block storage (AWS EBS, OpenStack Cinder..)
− File storage ( NFS,SMB, Azure File, AWS EFS)
− Object storage ( AWS S3 , CEPH , Openstack Swift )
✓ Storage locations:
− Linux: /var/lib/docker/volumes/
− Windows: C:ProgramDataDockervolumes
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Persistente / efímero
Datos en Container
Se pierden cuando se termina
el contenedor
Datos Volumen del Host
Se pierden cuando se termina
el Host
Network Volume/Filesystem
Independientes del host y del
contenedor.
SOBREVIVEN AL HOST/CONTAINER
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Volúmenes - Storage Físico
✓ El directorio del Host se crea fuera del contexto de
Docker
✓ Los volúmenes son compartidos entre los container y no
se borran al eliminar estos
✓ estos datos no se incluyen en la imagen cuando se
actualice
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Introducción a Kubernetes
✓ ¿Que es Orquestación ?
✓ ¿Qué es Kubernetes? (K8s)
✓ Arquitectura de Kubernetes
✓ Componentes de Kubernetes
✓ ¿Por qué utilizar Kubernetes?
✓ Despliegue en Kubernetes (RUpdate, Canary, Blue/green)
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
¿Que es Orquestación?
✓ Consiste en hacer que todas las piezas funcionen juntas( Dir Orquesta)
✓ Gestionar el ciclo de vida de los contenedores, especialmente en
entornos grandes y dinámicos.
✓ Los Dev Teams utilizan la orquestación de contenedores para controlar y
automatizar Tareas de :
− Aprovisionamiento
− Implementación
− Redundancia
− Disponibilidad
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
¿Por qué necesitamos Orquestación?
Los Contenedores necesitan
✓ Discovery e intercomunicación entre ellos
✓ Hacer upgrades con Downtime 0
✓ Reportar uso de recursos y estado de "Salud"
✓ Ser colocados en sitios adecuados ( nodos )
✓ Hacer un escalado In/Out bajo demanda
✓ Resiliencia frente a fallos de HW y SW
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Clustering vs Orquestación
Clustering
✓ Agrupación de hosts (Bare metal o VM) interconectados con una red
✓ Se usa como un único recurso más que un grupo de máquinas dispares
Orquestación
✓ Consiste en hacer que todas las piezas funcionen juntas( Dir Orquesta)
✓ Programar e iniciar contenedores en los hosts adecuados
✓ Escalado , Failover , Rebalanceo de nodos ..
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
¿Qué es Kubernetes? (K8s)
✓ Hoy las aplicaciones tienen que estar disponibles 24/7 y los
desarrolladores esperan implementar nuevas versiones varias veces al
día.
✓ Los containers ayudan a empaquetar el software, permitiendo que las
aplicaciones se actualicen fácil y rápidamente sin Downtime.
✓ Kubernetes ayuda a que estas aplicaciones en contenedores se ejecuten
donde y cuando queramos.
✓ Kubernetes es una plataforma Open Source diseñada con la experiencia
de Google en la orquestación de contenedores.
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Kubernetes - Líder en Orquestación
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Kubernetes - Conceptos
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
¿Qué son los POD’s?
✓ Unidad básica de ejecución de una app en k8s
✓ Un pod representa procesos en el cluster
✓ Encapsula:
− 1 o varios container que comparten recursos
− Recursos almacenamiento
− Ip única
− Opciones de configuración del pod.
✓ Representa una unidad de despliegue para k8s
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Pods- Visión General
✓ Pods de Container Único
✓ Pods de Múltiples container
✓ Networking en los pods
✓ Almacenamiento en los Pods
✓ Controllers - Gestores de Pods
− Deployments
− Stateful Sets
− Daemon Set
✓ Plantillas Pod ( Pod Templates)
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Pods - Networking
✓ Al Pod se le asigna una dirección IP única.
✓ Cada container en un Pod comparte el
namespace, la IP y los puertos.
✓ Los containers dentro de un Pod se comunican
utilizando localhost.
✓ Cuando la comunicación es fuera del Pod, se
deben coordinar cómo usan los recursos de red
compartidos (como los puertos).
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Almacenamiento - Volúmenes
✓ Un Pod puede especificar un conjunto de
volúmenes de almacenamiento compartido.
✓ Los containers en el Pod pueden acceder a los
volúmenes compartidos.
✓ Permiten que los datos persistentes en un Pod
sobrevivan a un reinicio o caída.
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Persistent Volume Claim(PVC)
✓ Es una solicitud de almacenamiento, similar a un pod,
✓ Los PVC consumen recursos de volumen persistente en lugar
de cómo los pod consumen recursos de nodo.
✓ Los pods pueden solicitar niveles específicos de recursos
(memoria y CPU),
✓ Los PVC solo pueden solicitar tamaños específicos y modos de
acceso.
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
K8s Secrets
✓ Es un objeto en K8s que almacena y administra
información confidencial, como contraseñas,
tokens, claves ssh, etc.
✓ Se almacenan en etcd, la bd campo valor de
K8s.
✓ Se puede habilitar la encriptación para
almacenarlos en etcd.
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
K8s Labels
✓ Pares clave/valor que se adjuntan a los objetos,
como Pods.
✓ Especifican atributos de identificación de objetos
significativos y relevantes
✓ Organizan y seleccionar subconjuntos de objetos.
✓ Se adjuntan a los objetos en el momento de la
creación o en cualquier momento.
✓ Cada clave debe ser única para un objeto dado.
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
K8s Labels
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Stateful App
¿Que es una Stateful Application?
✓ Es la que guarda datos sobre cada sesión de cliente hasta la próxima
solicitud.
✓ Estos datos se conocen como el estado de la aplicación.
✓ Estos se almacenan localmente o en un host remoto hasta el momento
en que el usuario cierra la sesión.
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Stateful App
1. Operaciones ordenadas con índice
operaciones críticas de pod, startup, scale-up, scale-down, rolling upgrades, termination.
2. ID / nombre de red estable y único en todos los reinicios
Garantiza que volver a generar un pod no hará que el clúster lo trate como un miembro nuevo.
3. Almacenamiento estable y persistente
Permite conectar el mismo disco persistente a un pod incluso si se reprograma en un nuevo nodo.
4. Servicio headless (sin IP única) para integraciones
Los clientes inteligentes conocen todos los pods y se conectan a cualquiera de ellos sin utilizar
ningún tipo de servicio de Load Balancer.
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Stateless App
¿Que es una Stateless Application?
✓ Aplicación que no guarda los datos del cliente generados en una sesión
✓ HTTP, por ejemplo, es inherentemente sin estado.
✓ Significa que cuando se desea un estado para una aplicación web, las
funciones con estado deben integrarse con páginas dinámicas.
✓ Las páginas pueden almacenar sesiones a través de variables de
dirección web y datos almacenados del servidor y del lado del cliente,
como a través de cookies.
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Kubernetes Stateful/Stateless
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Deployments(Stateless)
✓ Describe un “Estado Deseado” en
implementación, y el controlador cambia el
estado real al estado deseado.
✓ Se utiliza en App que son stateless, ya que el
solo permite ReadWrite Once
✓ Puede definir implementaciones para crear
nuevos ReplicaSets o eliminar o adoptar todos
sus recursos con nuevas implementaciones.
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Replica Sets(Stateless)
✓ Un controlador puede crear y administrar
múltiples Pods manejando la replicación y el
despliegue y proporcionando capacidades de
self-healing en el clúster.
✓ Si un Nodo falla, el Controlador puede
reemplazar automáticamente el Pod
programando un reemplazo idéntico en un Nodo
diferente.
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
StatefulSets ( Stateful Apps)
✓ Facilita la creación de aplicaciones con estado.
✓ Óptimo para ejecutar una base de datos en
producción.
✓ Cada pod tiene el mismo ID de red y disco en todos los
reinicios, incluso si esto se crea en otro nodo.
✓ Escalar las cargas de trabajo y el upgrading de las
aplicaciones con estado.
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
StatefulSets ( Stateful Apps)
✓ HA implica ejecutar un único master (para
Writes) con 1+ réplicas ( read slaves).
✓ El maestro y las réplicas se implementan
juntos en un solo StatefulSet.
✓ El servicio master está asociado al pod 0.
✓ Los pods distintos de cero están conectados a
un servicio diferente "Servicio de réplica".
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
MySQL Replicación
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Horizontal Pod Autoscaling
✓ HPA escala automáticamente el # de pods en
− Replication controller
− Deployment
− Replica Set
− StatefulSet (desde la 1.9)
✓ Basado en la utilización observada de la CPU
✓ Actualmente también de alguna otra métrica .
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Services
✓ Los pods son mortales y tienen un ciclo de vida.
✓ Cuando un Worker Node muere, los Pods que se
ejecutan en él también se pierden.
✓ Un ReplicaSet lleva dinámicamente el clúster al
estado deseado mediante la creación de nuevos Pods
para mantener su aplicación en funcionamiento.
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Services
✓ Abstracción que define un conjunto lógico de
Pods y una política para acceder a ellos.
✓ Está determinado por un LabelSelector
✓ Cada Pod tiene una IP única, estas no están
expuestas fuera del clúster sin un Servicio.
✓ Permiten que las aplicaciones reciban tráfico.
✓ Los servicios se pueden exponer de diferentes
maneras especificando un tipo en ServiceSpec
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Services
✓ Enruta el tráfico a
través de un conjunto
de pods.
✓ Permite que cuando
los pods mueren y se
repliquen no afecten
a la aplicación.
✓ Gestionan el
Discovery y el
enrutamiento entre
pods dependientes
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Anexo Técnico
Contiene detalles técnicos y ejercicios:
− Docker Containers/Images
− Docker Networks
− Volúmenes Persistentes (CSI)
− Arquitectura Kubernetes
− Kubernetes Secrets
− Kubernetes Deployments
− kubernetes Services
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Ecosistema de Contenedores
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Ecosistema Docker
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Ej 1: Creación Primer Contenedor
Creación de un contenedor por defecto desde una imagen existente
en el Docker Hub.
La típica hello-world , ejecuta el contenedor, saca por pantalla la
ayuda y se cierra
$docker container run hello-world:latest
Ejecutamos un comando en el container
$docker container run busybox echo Hola amigos de Telefónica
$docker container run -it busybox sh
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Imágenes / Capas Docker
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Ej 2: Creación de una Imagen
Creamos un directorio para el proyecto
− mkdir redis-test
− cd redis-test
Creación de una imagen que ejecuta redis-server
− FROM : Especificamos cual va a ser la Base Image
− RUN : Para ejecutar e instalar lo necesario
− CMD : Especificar un comando para ejecutar en el startup
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Ej 2: Creación de una Imagen(2)
vim Dockerfile
FROM alpine
RUN apk add --update redis
CMD ["redis-server"]
$docker build -t lmtbelmonte/redis:latest .
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Ej 3: Creación del contenedor
# Listamos las imagenes que existan en docker local
$ docker images
# recuperamos la imagen para ejecutar un contenedor
$ docker container run --name redis-tlf:1.0
#Listamos los contenedores
$ docker container ls
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Default Networking Driver
Bridge es es la red docker0 en todas las instalaciones de Docker.
Se puede cambiar con la opción docker run --network = <NETWORK>,
es parte del stack de red de un host y se puede ver :
$ip addr show
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group
default
link/ether 02:42:0a:c8:80:f0 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft forever preferred_lft forever
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Ej 4: Creación de redes
# Crear una nueva red
$ docker network create br1
# Crear un contenedor para usarlo con puerto 8081 -> 80 en la red por defecto
$ docker container run -d --name network-test03 -p 8081:80 nginx
# Crear un contenedor para usarlo con puerto 8082 -> 80 en la red br1
$ docker container run -d --name network-test04 -p 8082:80 --network br1 nginx
# comprobamos ejecución del contenedor y vemos que puerto (ps)
# Como vemos está mapeado el puerto 8081/8082-->80/tcp de los containers
# Comprobamos que está accesible con curl ( también con la IP)
$ curl localhost:8081/8082 ( aparecera la pagina de bienvenida de Nginx)
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Ej 5: Inspección de Containers
# Inspeccionamos container network-test03/04 para ver red asignada
$ docker container inspect network-test03/04
# Creamos un container en br1 para hacer ping a los contenedores creados previamente
$ docker container run -it --name lmt-ping --network br1 centos
# Conectamos los containers a la misma red
$ docker network connect br1 network-test03
# re arrancamos container
$ docker container start -ia lmt-ping
# Hacemos ping desde lmt-ping a network-test03
ping 172.18.0.4
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Ej 6: Red Bridge con Subnet/gateway
# Creación de una red bridge con su subnet y gateway
$docker network create --subnet 10.1.0.0/24 --gateway 10.1.0.1 br02
# ejecutamos ifconfig para ver el bridge interface for br02:
$ ip addr
# inspeccionamos la red br02
$ docker network inspect br02
# Purgamos todas las redes no usadas
$ docker network prune
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Ej 7: Networking entre 2 Containers
# primero creamos la internal network:
docker network create -d bridge --internal localhost
# Creamos un contenedor con MySQL que este conectado a localhost utilizamos el flag -e
docker container run -d --name test_mysql 
-e MYSQL_ROOT_PASSWORD=P4sSw0rd0 
--network localhost mysql:5.7
# Creamos un container que pueda hacer ping al MySQL container:
docker container run -it --name ping-mysql 
--network bridge 
centos
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
EJ 7: Networking entre 2 Containers
# Connect ping-mysql to the localhost network:
docker network connect localhost ping-mysql
# Rearrancamos y nos attachamos ( -a) al container:
docker container start -ia ping-mysql
docker container run -it --name cant-ping-mysql centos
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Container Storage Interface
✓ Estándar para exponer sistemas de
almacenamiento (Block and File storage) en
contenedores a Orquestadores como
Kubernetes.
✓ Permite exponer nuevos sistemas de
almacenamiento en Kubernetes sin tener que
tocar el código central de Kubernetes.
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Operaciones Básicas Volúmenes
$ docker volume
create Crear un volumen.
inspect Información detallada de uno o más volúmenes.
ls Listar volúmenes.
prune (Purgar)Eliminar todos los volúmenes no usados.
rm ELiminar uno o varios volúmenes.
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Ej 8: DB Mysql + Volumen persistente
1. Creamos un volumen persistente
$ docker volume create mysql_data
2. Creamos el contenedor con ese volumen
$ docker container run -d --name app-database 
--mount type=volume,source=mysql_data,target=/var/lib/mysql 
-e MYSQL_ROOT_PASSWORD=P4ssW0rd0! 
mysql:latest
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Ej 8: Mysql + Volumen persistente
Connect ping-mysql to the localhost network:
docker network connect localhost ping-mysql
Rearrancamos y nos attachamos ( -a) al container:
docker container start -ia ping-mysql
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Ej 9: Wordpress+Mysql+PersistentV
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Ej 9: Wordpress+Mysql+PersistentV
# Creación de dos contenedores independientes uno con wordpress y Apache y otro con Mariadb
# primero creamos dir wordpress y nos cambiamos al este dir
docker container run --name wordpressdb -v "$PWD/database":/var/lib/mysql 
-e MYSQL_ROOT_PASSWORD=Tele2021 
-e MYSQL_DATABASE=wordpress -d mariadb:latest
# hacemos un pull de wordpress y ejecutamos el container
docker pull wordpress
docker container run --name wordpress -v "$PWD/html":/var/www/html 
-e WORDPRESS_DB_PASSWORD=Tele2021 
--link wordpressdb:mysql -p 80:80 -d wordpress
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Ej 9: Wordpress+Mysql+PersistentV
# Accedemos a wordpress a través de la ip pública del host
http://<public IP>/wp-admin/install.php
# configuramos el site
# creamos uno de pruebas para ver como el volumen persiste
# Forzamos una caída del container
docker container stop wordpress
# comprobamos que el volumen sigue
# arrancamos el container y comprobmaos que es el mismo site
docker container start wordpress
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Ecosistema Kubernetes
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Arquitectura Kubernetes
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Arquitectura Kubernetes
El Máster es responsable de administrar el clúster.
− Coordina todas las actividades en su clúster
− Plannea las aplicaciones
− Mantiene el estado deseado de las aplicaciones
− Escala las aplicaciones
− Lanzar nuevas actualizaciones
No se deben ejecutar contenedores en el master
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Componentes Master
✓ Apiserver
✓ etcd
✓ Scheduler
✓ Kube-Controller-manager
✓ cloud-controller-manager
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Master - Api Server
✓ Válida y configura datos para los objetos de la
API que incluyen pods, servicios, controladores
de replicación y otros.
✓ Atiende las operaciones REST y proporciona la
interfaz para el estado compartido del clúster a
través del cual interactúan todos los demás
componentes.
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Master - etcd
✓ K8s Necesita una base de datos distribuida.
✓ etcd facilita el almacenamiento de datos en un
clúster y la observación de cambios en esos datos.
Kubernetes usa etcd como su base de datos.
✓ Guarda toda la configuración del clúster
✓ Guarda el estado real y el estado deseado
✓ Monitoriza los cambios del estado.
✓ Si divergen, Kubernetes realiza cambios para conciliar
el estado real y el estado deseado.
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Master - Scheduler
✓ Observa los Pods recién creados que no tienen ningún nodo
asignado.
✓ Por cada Pod que descubre, se hace responsable de encontrar
el mejor nodo para ejecutar ese Pod.
✓ Los nodos que cumplen los requisitos para un Pod se
denominan nodos factibles, sino se queda sin colocar
✓ Ejecuta un conjunto de funciones para calificar los Nodos
factibles y elige el de la puntuación más alta.
✓ Para las decisiones de colocación hay requisitos individuales y
colectivos, restricciones de HW/SW, políticas, Afinidad y
anti-afinidad, localidad de datos ..
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Master - Controllers
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Master - Kube Controller Manager
✓ Daemon que incorpora los control loops básicos k8s.
✓ Un control loop es un bucle sin terminación que
regula el estado del sistema.
✓ Un controller observa el estado del clúster a través
del Apiserver y realiza cambios para llegar al desired
state.
✓ Los Controllers Básicos que vienen con k8s
− replication controller,
− endpoints controller,
− namespace controller,
− service accounts controller.
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Master - Cloud Controller Manager
✓ Permite que el código del cloud provider y el núcleo
de Kubernetes evolucionen de forma independiente.
✓ Se ejecuta junto con el Controller manager, el API
Server y el Scheduler.
✓ Se integra fácilmente con otros cloud providers
mediante el uso de complementos.
✓ Sus funciones son
− Node controller
− Route controller
− Service controller
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Componentes Nodo
El nodo es una VM/Física- worker en el clúster k8s.
− Tiene un Kubelet, agente para administrar
comunicarse con el master.
− Tiene instalado docker/rkt para los containers
− El clúster k8s en producción debe tener un
mínimo de tres nodos.
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Componentes Nodo
✓ Kubelet
− Ejecuta y gestiona los containers en el nodo y habla con API
✓ Kube-proxy
− Hace de balanceador entre los elementos de la App
✓ Container runtime
− Ejecutable que corre los containers(Docker, rkt, containerd )
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
App ejecutándose en K8s
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Comandos básicos Pod’s
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Comandos Deployment
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
K8s Volume Drivers
✓ Para poder utilizar el almacenamiento en cloud
de los diferentes proveedores.
✓ Utilizamos storage clases
✓ De esta forma tenemos almacenamiento
ilimitado sin necesidad de provisionar
previamente
✓ Ejemplo de un volumen AWS EBS tipo gp2 y con
expansión dinámica
https://kubernetes.io/docs/concepts/storage/storage-classes/
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
K8s Secrets
# Creación de un secreto para guardar la root password
$ kubectl create secret generic mysql-root-pass --from-literal=password=R00t
# Creación de usuario y pass de mysql
$ kubectl create secret generic mysql-user-pass --from-literal=username=callicoder
--from-literal=password=c@ll1c0d3r
# Listar los secretos
$ kubectl get secrets
# Describir los secretos
$ kubectl describe secrets
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
k8s Deployment.yml
✓ ApiVersion
− Versión del API de K8s que indica el path
✓ Kind
− Es el tipo de Objeto que se quiere crear
✓ Metadata
− id unica el objeto, nombre, UID, namespace
✓ spec
− Estado deseado y características que queramos que tenga.
✓ status
− Estado actual, se comprueba constantemente para que
coincida con el definido en el yaml
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Ej 10: Creación de un Pod nginx
# Ejecutamos directamente desde la bash la
creación del fichero y ejecución
$ cat << EOF | kubectl create -f -
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- name: nginx
image: nginx
EOF
# Creamos primero el fichero nginx.yml
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- name: nginx
image: nginx
# Ejecutamos el comando kubectl para crearlo
$ kubectl create -f nginx.yml
lmtbelmonte@lmt:~/kubernetes$ kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx 1/1 Running 0 11m
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Ej 11: Creación de un Deployment
# Creamos el objeto Deployment con kubectl
kubectl create -f nginx-deploy.yml
# Describimos el deployment en Yaml
kubectl get deployment nginx-deployment -o yaml
# Listamos los pods que ha creado el deployment
kubectl get pods --show-labels
# Etiquetamos los pods para agruparlos
kubectl label pods nginx-deployment-5c6892j6l9 env=prod
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
K8s HPA con StatefulSets
El soporte de autoscaling para Statefulsets
Horizontal Pod Autoscaling solo esta funcional
desde la versión 1.9 kubernetes.
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Ej 12: Creación de un Service
# Creamos el objeto Service con kubectl
kubectl create -f nginx-service.yml
# Describimos el servicio en yaml
kubectl get service nginx-nodeport -o yaml
# Listamos los servicios que hay en el cluster
kubectl get services -o wide
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Ej 13: Creación de un Service(2)
# Creamos un pod BusyBox para acceder al pod
kubectl create -f busybox-pod.yml
# Describimos el servicio
kubectl get pod -o yaml
# Listamos los pods que hay en elcluster
kubectl get pods -o wide
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Ej 14: App Stateful(Mysql+Replicas)
✓ 2 Config-map uno para el master y otro para
slaves
✓ 2 Servicios uno para R/W y otro para read-only
✓ Creamos la BD y una tabla test
✓ Insertamos valores de prueba “Hola Mundo” y
hacemos select
✓ Comprobamos que el servicio distribuye la carga
✓ Simulamos un fallo en el Health-check de un pod
✓ Comprobamos como la carga pasa al otro pod
✓ Borramos un Pod y comprobamos como los recrea
automáticamente
✓ Fusilamos un Nodo , vemos como hace un Cordon
y un Evict
✓ Escalamos los slaves para incrementar las
réplicas
Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
Workloads -> Función Kubernetes

Más contenido relacionado

La actualidad más candente

Docker como la máxima expresión de Devops - WISIT 2015
Docker como la máxima expresión de Devops - WISIT 2015Docker como la máxima expresión de Devops - WISIT 2015
Docker como la máxima expresión de Devops - WISIT 2015
Gustavo Andres Brey
 

La actualidad más candente (20)

Cbs aws-fundamentals-4
Cbs aws-fundamentals-4Cbs aws-fundamentals-4
Cbs aws-fundamentals-4
 
Dell emc redhat_dez20
Dell emc redhat_dez20Dell emc redhat_dez20
Dell emc redhat_dez20
 
Qnap nas training latam 2016 0810
Qnap nas training latam 2016 0810Qnap nas training latam 2016 0810
Qnap nas training latam 2016 0810
 
Kubernetes 101 - Plain Concepts Dev Day
Kubernetes 101 - Plain Concepts Dev DayKubernetes 101 - Plain Concepts Dev Day
Kubernetes 101 - Plain Concepts Dev Day
 
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!
 
CSIC
CSIC CSIC
CSIC
 
IBM Spectrum Conductor with Spark
IBM Spectrum Conductor  with SparkIBM Spectrum Conductor  with Spark
IBM Spectrum Conductor with Spark
 
OpenNebulaConf 2016 - Fast Prototyping of a C.O. into a Micro Data Center - A...
OpenNebulaConf 2016 - Fast Prototyping of a C.O. into a Micro Data Center - A...OpenNebulaConf 2016 - Fast Prototyping of a C.O. into a Micro Data Center - A...
OpenNebulaConf 2016 - Fast Prototyping of a C.O. into a Micro Data Center - A...
 
Cloud Native Mexico - Introducción a Kubernetes
Cloud Native Mexico - Introducción a KubernetesCloud Native Mexico - Introducción a Kubernetes
Cloud Native Mexico - Introducción a Kubernetes
 
Bootcamp gdg cloud scl - introduccion a arquitectura cloud en gcp - oliver ...
Bootcamp   gdg cloud scl - introduccion a arquitectura cloud en gcp - oliver ...Bootcamp   gdg cloud scl - introduccion a arquitectura cloud en gcp - oliver ...
Bootcamp gdg cloud scl - introduccion a arquitectura cloud en gcp - oliver ...
 
OpenNebula Oneflow: give me the flow!
OpenNebula Oneflow: give me the flow!OpenNebula Oneflow: give me the flow!
OpenNebula Oneflow: give me the flow!
 
Redhat Open Day - Integracion JBoss Fuse A-MQ
Redhat Open Day - Integracion JBoss Fuse A-MQRedhat Open Day - Integracion JBoss Fuse A-MQ
Redhat Open Day - Integracion JBoss Fuse A-MQ
 
Introduccion Power BI Report Server
Introduccion Power BI Report ServerIntroduccion Power BI Report Server
Introduccion Power BI Report Server
 
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
 
OpenShift y PostgreSQL
OpenShift y PostgreSQLOpenShift y PostgreSQL
OpenShift y PostgreSQL
 
Despliegue aplicaciones #SpringCloud en Cluster #Mesos Marathon
Despliegue aplicaciones #SpringCloud en Cluster #Mesos MarathonDespliegue aplicaciones #SpringCloud en Cluster #Mesos Marathon
Despliegue aplicaciones #SpringCloud en Cluster #Mesos Marathon
 
Introduccion a SQL Server 2017 en Docker
Introduccion a SQL Server 2017 en Docker Introduccion a SQL Server 2017 en Docker
Introduccion a SQL Server 2017 en Docker
 
Introducción a las nubes privadas con OpenStack
Introducción a las nubes privadas con OpenStackIntroducción a las nubes privadas con OpenStack
Introducción a las nubes privadas con OpenStack
 
Evolucion de big data @ mercadolibre.com
Evolucion de big data @ mercadolibre.comEvolucion de big data @ mercadolibre.com
Evolucion de big data @ mercadolibre.com
 
Docker como la máxima expresión de Devops - WISIT 2015
Docker como la máxima expresión de Devops - WISIT 2015Docker como la máxima expresión de Devops - WISIT 2015
Docker como la máxima expresión de Devops - WISIT 2015
 

Similar a Multi hybrid-cloud-fundamentals v4

Similar a Multi hybrid-cloud-fundamentals v4 (20)

Curso Kubernetes CodeURJC
Curso Kubernetes CodeURJCCurso Kubernetes CodeURJC
Curso Kubernetes CodeURJC
 
Plug&amp;play:deploying big data_solutions
Plug&amp;play:deploying big data_solutionsPlug&amp;play:deploying big data_solutions
Plug&amp;play:deploying big data_solutions
 
Docker - Sysmana 2014
Docker - Sysmana 2014Docker - Sysmana 2014
Docker - Sysmana 2014
 
Docker para Dummies
Docker para DummiesDocker para Dummies
Docker para Dummies
 
Docker y kubernetes para desarrolladores .NET - Meetup Barcelona 2019
Docker y kubernetes para desarrolladores .NET - Meetup Barcelona 2019 Docker y kubernetes para desarrolladores .NET - Meetup Barcelona 2019
Docker y kubernetes para desarrolladores .NET - Meetup Barcelona 2019
 
Cloud Native en Azure impartido en Microsoft Madrid y Barcelona
 Cloud Native en Azure impartido en Microsoft Madrid y Barcelona Cloud Native en Azure impartido en Microsoft Madrid y Barcelona
Cloud Native en Azure impartido en Microsoft Madrid y Barcelona
 
Docker para desarrolladores .NET
Docker para desarrolladores .NETDocker para desarrolladores .NET
Docker para desarrolladores .NET
 
Game of pods - Kubernetes
Game of pods - KubernetesGame of pods - Kubernetes
Game of pods - Kubernetes
 
Docker orientado al desarrollo de aplicaciones con NodeJS
Docker orientado al desarrollo de aplicaciones con NodeJSDocker orientado al desarrollo de aplicaciones con NodeJS
Docker orientado al desarrollo de aplicaciones con NodeJS
 
Containers - Hablemos de Docker
Containers - Hablemos de DockerContainers - Hablemos de Docker
Containers - Hablemos de Docker
 
Docker and networking
Docker and networkingDocker and networking
Docker and networking
 
VLCSofting 2021 - HARD AS A POD 落. HARDENING DE DESPLIEGUES EN KUBERNETES CON...
VLCSofting 2021 - HARD AS A POD 落. HARDENING DE DESPLIEGUES EN KUBERNETES CON...VLCSofting 2021 - HARD AS A POD 落. HARDENING DE DESPLIEGUES EN KUBERNETES CON...
VLCSofting 2021 - HARD AS A POD 落. HARDENING DE DESPLIEGUES EN KUBERNETES CON...
 
Docker - Entorno de trabajo configurado en 1 minuto [WCBilbao]
Docker - Entorno de trabajo configurado en 1 minuto [WCBilbao]Docker - Entorno de trabajo configurado en 1 minuto [WCBilbao]
Docker - Entorno de trabajo configurado en 1 minuto [WCBilbao]
 
Seminario CLEFormacion-docker
Seminario CLEFormacion-dockerSeminario CLEFormacion-docker
Seminario CLEFormacion-docker
 
TECNIRIS47-1b.pdf
TECNIRIS47-1b.pdfTECNIRIS47-1b.pdf
TECNIRIS47-1b.pdf
 
Kubernetes workshop
Kubernetes workshopKubernetes workshop
Kubernetes workshop
 
COMPUTACIÓN EN LA NUBE
COMPUTACIÓN EN LA NUBECOMPUTACIÓN EN LA NUBE
COMPUTACIÓN EN LA NUBE
 
introducción a Docker
introducción a Dockerintroducción a Docker
introducción a Docker
 
administracion de sistemas de informacion
administracion de sistemas de informacionadministracion de sistemas de informacion
administracion de sistemas de informacion
 
Computo en la nube
Computo en la nubeComputo en la nube
Computo en la nube
 

Último

Mapas Conceptuales finales Rubén finales.pptx
Mapas Conceptuales finales Rubén finales.pptxMapas Conceptuales finales Rubén finales.pptx
Mapas Conceptuales finales Rubén finales.pptx
jose880240
 
Antenas, tipos de antenas, diseño basico de una antena y parámetros.pdf
Antenas, tipos de antenas, diseño basico de una antena y parámetros.pdfAntenas, tipos de antenas, diseño basico de una antena y parámetros.pdf
Antenas, tipos de antenas, diseño basico de una antena y parámetros.pdf
perezreyesalberto10
 

Último (7)

Emprende en SPA Segundo día CENEC Mexico
Emprende en SPA Segundo día CENEC MexicoEmprende en SPA Segundo día CENEC Mexico
Emprende en SPA Segundo día CENEC Mexico
 
diapositivas tiktok.KAY (1) (1) (1).pptx
diapositivas tiktok.KAY (1) (1) (1).pptxdiapositivas tiktok.KAY (1) (1) (1).pptx
diapositivas tiktok.KAY (1) (1) (1).pptx
 
P7_E1_DanielPoza.pdf Los avances en los sistemas de comunicascion y su difusi...
P7_E1_DanielPoza.pdf Los avances en los sistemas de comunicascion y su difusi...P7_E1_DanielPoza.pdf Los avances en los sistemas de comunicascion y su difusi...
P7_E1_DanielPoza.pdf Los avances en los sistemas de comunicascion y su difusi...
 
Presentacion Seguridad y Privacidad en la Web
Presentacion Seguridad y Privacidad en la WebPresentacion Seguridad y Privacidad en la Web
Presentacion Seguridad y Privacidad en la Web
 
Mapas Conceptuales finales Rubén finales.pptx
Mapas Conceptuales finales Rubén finales.pptxMapas Conceptuales finales Rubén finales.pptx
Mapas Conceptuales finales Rubén finales.pptx
 
Antenas, tipos de antenas, diseño basico de una antena y parámetros.pdf
Antenas, tipos de antenas, diseño basico de una antena y parámetros.pdfAntenas, tipos de antenas, diseño basico de una antena y parámetros.pdf
Antenas, tipos de antenas, diseño basico de una antena y parámetros.pdf
 
Esquema Organizacional Cosapi (Constructora)
Esquema Organizacional Cosapi (Constructora)Esquema Organizacional Cosapi (Constructora)
Esquema Organizacional Cosapi (Constructora)
 

Multi hybrid-cloud-fundamentals v4

  • 1. Luis Merino Troncoso Cloud Solutions Architect FUNDAMENTALS Modelo Multi/Hybrid Cloud
  • 2. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Introducción Esta presentación pretende ser una introducción al mundo Multi/Hybrid Cloud. El objetivo es afianzar una serie de conocimientos que son básicos para entender los productos de cada uno de los fabricantes/Proveedores Cloud en en esta área. Habra una presentacion por Producto de cada Fabricante
  • 3. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Agenda ✓ Que es Multi/hybrid Cloud ✓ Conceptos Básicos -Containers ✓ Docker y Características- Repositorios de Imágenes ✓ Orquestación Contenedores ✓ KUBERNETES (k8s) ✓ Multicloud Journey con Containers y k8s ✓ VM vs Container vs Serverless
  • 4. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Que es Multi/hybrid Cloud ✓ Modelos Adopción Cloud ✓ Evolución Adopción cloud ✓ Hybrid / Multi-cloud / Hybrid Multi-cloud ✓ Journey to cloud ✓ Monitorización/Logging Multi Cloud
  • 5. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Tipos de Servicios en Cloud
  • 6. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Modelos Adopción Cloud ✓ Private cloud ✓ Public Cloud ✓ Hybrid Cloud ✓ Multicloud ✓ Hybrid IT ✓ Hybrid Multicloud
  • 7. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Evolución Adopción Cloud
  • 8. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Private & Public Cloud
  • 9. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Hybrid Cloud ✓ Combinación de una o más nubes públicas y privadas con : − Interoperabilidad − Portabilidad de aplicaciones − Portabilidad de datos − Orquestación ✓ Todo ello con una Gestión común
  • 10. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Multicloud ✓ Uso de diferentes nubes de múltiples proveedores para múltiples tareas. ✓ Se logra una mayor flexibilidad, menores costos, se evita Bloqueo del proveedor ✓ Imprescindible lograr políticas, cumplimiento y administración consistentes con los diferentes proveedores involucrados.
  • 11. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Hybrid MultiCloud Hybrid Multicloud reúne varias Cloud y proporciona las herramientas para garantizar la interoperabilidad entre los diversos servicios en soluciones híbridas y Multicloud.
  • 12. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Hybrid IT vs Hybrid Cloud vs Multi-cloud
  • 13. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Ej: Backup en Hybrid Cloud
  • 14. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Multicloud Monitoring/logging
  • 15. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Containers - Clave para MultiCloud Source:PortworxContainerAdoptionSurvey2018
  • 16. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Containers - Clave para MultiCloud ✓ En Multicloud uno de los objetivos es la portabilidad ✓ Los contenedores son la respuesta a la portabilidad que el mercado desea. ✓ Son también una nueva forma de evitar el “Vendor Lock-in” al ser transportables ✓ La nube pública al final es “un producto”, y el bloqueo como consecuencia de la adopción de un producto siempre es una posibilidad.
  • 17. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Kubernetes Multi-Hybrid Cloud ✓ Kubernetes es compatible con todas las nubes ✓ forma común de implementar WorkLoads. ✓ La Fundación Linux demostró una Hybrid-MultiCloud ✓ El proyecto Cloud-CI en CNCF mostró una implementación ONAP con Kubernetes en varias cloud públicas y privadas (incluida IBM Cloud) y Bare-Metal ONAP Multi-Hybrid Cloud Real https://www.onap.org/blog/2018/05/04/how-service-providers-can-use-kubernetes-to-sc ale-nfv-transformation
  • 18. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Kubernetes Multi-Hybrid Cloud
  • 19. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Containers vs Serverless
  • 20. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Containers vs Serverless ✓ Ambos tienen una arquitectura diseñada para aprovechar lo último en cloud computing. ✓ Aunque no son lo mismo y tienen un propósito diferente: ✓ algunos puntos comunes: − Gastos generales mínimos − Alto rendimiento − Requiere aprovisionamiento de infraestructura mínima
  • 21. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Containers vs Serverless Ventajas serverless − Simplicidad de implementación solo cargas las funciones, y ya esta − Se paga por la ejecución, Serverless es más barato que los contenedores. − No hay que preocuparse por la escalabilidad. − La actualización o modificación es más fácil de hacer que en containers. Desventajas serverless − Es una tecnología de "caja negra", no necesariamente sabe lo que está haciendo − La complejidad crece exponencialmente a medida que crece la APP − Siempre depende de un proveedor(Vendor lock-in)- Containers son Vendor -Agnostic − Puede ser muy difícil de corregir algunos errores y monitorizar su ejecución en grandes instalaciones
  • 22. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Journey to Hybrid Multi-Cloud
  • 23. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
  • 24. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 ¿Proyecto Docker? Docker es un proyecto de código abierto que automatiza el despliegue de aplicaciones dentro de contenedores de software, proporcionando una capa adicional de abstracción y automatización de Virtualización a nivel de sistema operativo en Linux. Docker utiliza características de aislamiento de recursos del kernel Linux, tales como cgroups y espacios de nombres (namespaces) para permitir que "contenedores" independientes se ejecuten dentro de una sola instancia de Linux, evitando la sobrecarga de iniciar y mantener máquinas virtuales. Wikipedia
  • 25. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Docker Actual
  • 26. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 CGroups & Namespaces
  • 27. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 CGroups & Namespaces
  • 28. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Virtual Machine vs Container
  • 29. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Ciclo de vida Docker Arquitectura cliente-servidor ✓ El cliente - habla con el Docker daemon para gestionar contenedores: − build − ejecución − Distribución ✓ Se comunican usando una API REST: − Sockets UNIX − Interfaz de red ✓ Containerd - Gestiona el ciclo de vida de los contenedores − Start − Stop − Pause − Delete − Gestionar las imagenes ✓ Docker client (docker): − Es cómo los usuarios interactúan con Docker − Envía comandos a dockerd
  • 30. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Ciclo vida Docker
  • 31. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 ¿Qué son los contenedores? Un contenedor es una unidad de software estándar que empaqueta el código y todas sus dependencias para que la aplicación se ejecute de manera rápida y confiable de un entorno informático a otro. Imagen Docker Contenedor Docker
  • 32. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Arquitectura Docker
  • 33. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Arquitectura Docker ✓ Imágenes ✓ Contenedores ✓ Networking ✓ Storage ✓ Servicios
  • 34. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Imágenes ✓ Plantilla RO con instrucciones para crear un contenedor Docker ✓ La imagen se basa en otra imagen ✓ Se pueden crear nuestras propias imágenes ✓ Se usan las imágenes publicadas en un registro ✓ Dockerfile para construir imágenes
  • 35. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Imagenes Docker
  • 36. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Imágenes y Capas ✓ Cada capa es una instrucción en el Dockerfile de la imagen. ✓ Todas son, excepto la última, de RO. ✓ Las capas se apilan unas encima de otras. ✓ Los contenedores agregan nuevas capas de escritura encima de las capas subyacentes ✓ los cambios realizados en un contenedor en ejecución se realizan en la capa Contenedor ✓ las capas de las imágenes se guardan en /var/lib/docker
  • 37. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Docker Registry - Docker Hub ✓ Guarda las Imágenes de Docker ✓ Registro público como Docker Hub ✓ Permite ejecutar tu propio private registry ✓ Artifactory , Nexus , AWS , Azure , GCP ..
  • 38. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Contenedores ✓ Instancia ejecutable de una imagen ✓ Se Conectan los contenedores a redes ✓ se adjuntan al almacenamiento ✓ Se crea una nueva imagen basada en su estado actual ✓ Estan aislado de otros contenedores y de la máquina host
  • 39. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Docker Networking
  • 40. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Container Networking Model
  • 41. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 SandBox ✓ Aísla el stack de red , network interfaces,ports,route tables, DNS ✓ Un Sandbox puede tener múltiples EndPoints conectados a diferentes redes que representan la configuración de red del contenedor, como dirección IP, dirección MAC, rutas, DNS.
  • 42. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Endpoint ✓ Virtual Network Interface, su responsabilidad es conectar el sandbox con una red. ✓ Solo pueden estar conectados a una red a la vez, ✓ Un contenedor puede tener más de un endpoint para atacar a diferentes redes
  • 43. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Network ✓ Estandar https://en.wikipedia.org/wiki/IEEE_802.1D ✓ Proporciona conectividad entre un grupo de Endpoints que pertenecen a la misma red y aislados del resto. ✓ Cada vez que se crea o actualiza una red, el controlador correspondiente será notificado del evento. ✓ La red de Docker por defecto: − 172.0.0.0/16 CIDR
  • 44. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Modelo de Red del Container
  • 45. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Networking Drivers La instalación por defecto, crea tres redes automáticamente $ docker network ls NETWORK ID NAME DRIVER 7fca4eb8c647 bridge bridge 9f904ee27bf5 none null cf03ee007fb4 host host
  • 46. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Networking Drivers - Bridge ✓ Red interna privada “Default” creada por Docker en el host. ✓ Los containers obtienen una IP interna y pueden acceder entre sí. ✓ Cuando las App se ejecutan en contenedores indeptes que necesitan comunicarse.
  • 47. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Bridge Networking & Port Mapping
  • 48. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Publicación/Exposición Puertos
  • 49. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Networking Drivers - Host ✓ Añade el container al stack de red del host. ✓ No hay aislamiento entre host y contenedor. ✓ Un web srv en puerto 80 está disponible en el puerto 80 de la máquina host. ✓ Las none y host no se pueden configurar en Docker , Solo la Bridge.
  • 50. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Networking Drivers - None Ese contenedor carece de una interfaz de red. Adjuntando a dicho contenedor y mirando su stack, se vería esto: None $ docker attach nonetcontainer
  • 51. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Networking Drivers - macvlan ✓ Provee un dirección Hardware MAC para cada controlador para un stack TCP/IP completo ✓ Convierte al container en primera clase red ✓ Acarrea un overhead adicional a nivel de gestión ya que es un elemento más de la red
  • 52. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Networking Drivers - Overlay
  • 53. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Network Plugins ✓ Permite a los fabricantes extender la funcionalidad de sus dispositivos y tecnologías de red a docker ✓ Funcionalidades como Specific IP Address Management, auto configuración de red para Overlay , QoS, Load Balancing
  • 54. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
  • 55. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Tipos Almacenamiento No Persistente ( Efímero) − Almacenamiento local − Los datos son efímeros − Por defecto los containers usan local storage (graph storage) − Unido al ciclo de vida del contenedor Persistente − volúmenes - ( no están ligados al container ) Los volúmenes son casi siempre la elección correcta.
  • 56. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Volumen No Persistente Consiste en almacenar datos en la capa de escritura de un contenedor: − Los datos no persistirán cuando ese contenedor no esté − La capa grabable está acoplada al host donde se ejecuta. − Reduce el rendimiento en comparación con el uso de volúmenes − Storage locations: − - Linux: /var/lib/docker/[STORAGE-DRIVER]/ − - Windows: C:ProgramDataDockerwindowsfilter
  • 57. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Volumen Persistente ✓ Se usan para persistir datos − Primero se crea el volumen − Después se crea el container. ✓ Se monta en un directorio del container ✓ Al borrar el contenedor el volumen no se borra ✓ Drivers de terceros: − Block storage (AWS EBS, OpenStack Cinder..) − File storage ( NFS,SMB, Azure File, AWS EFS) − Object storage ( AWS S3 , CEPH , Openstack Swift ) ✓ Storage locations: − Linux: /var/lib/docker/volumes/ − Windows: C:ProgramDataDockervolumes
  • 58. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Persistente / efímero Datos en Container Se pierden cuando se termina el contenedor Datos Volumen del Host Se pierden cuando se termina el Host Network Volume/Filesystem Independientes del host y del contenedor. SOBREVIVEN AL HOST/CONTAINER
  • 59. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Volúmenes - Storage Físico ✓ El directorio del Host se crea fuera del contexto de Docker ✓ Los volúmenes son compartidos entre los container y no se borran al eliminar estos ✓ estos datos no se incluyen en la imagen cuando se actualice
  • 60. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
  • 61. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Introducción a Kubernetes ✓ ¿Que es Orquestación ? ✓ ¿Qué es Kubernetes? (K8s) ✓ Arquitectura de Kubernetes ✓ Componentes de Kubernetes ✓ ¿Por qué utilizar Kubernetes? ✓ Despliegue en Kubernetes (RUpdate, Canary, Blue/green)
  • 62. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 ¿Que es Orquestación? ✓ Consiste en hacer que todas las piezas funcionen juntas( Dir Orquesta) ✓ Gestionar el ciclo de vida de los contenedores, especialmente en entornos grandes y dinámicos. ✓ Los Dev Teams utilizan la orquestación de contenedores para controlar y automatizar Tareas de : − Aprovisionamiento − Implementación − Redundancia − Disponibilidad
  • 63. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 ¿Por qué necesitamos Orquestación? Los Contenedores necesitan ✓ Discovery e intercomunicación entre ellos ✓ Hacer upgrades con Downtime 0 ✓ Reportar uso de recursos y estado de "Salud" ✓ Ser colocados en sitios adecuados ( nodos ) ✓ Hacer un escalado In/Out bajo demanda ✓ Resiliencia frente a fallos de HW y SW
  • 64. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Clustering vs Orquestación Clustering ✓ Agrupación de hosts (Bare metal o VM) interconectados con una red ✓ Se usa como un único recurso más que un grupo de máquinas dispares Orquestación ✓ Consiste en hacer que todas las piezas funcionen juntas( Dir Orquesta) ✓ Programar e iniciar contenedores en los hosts adecuados ✓ Escalado , Failover , Rebalanceo de nodos ..
  • 65. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 ¿Qué es Kubernetes? (K8s) ✓ Hoy las aplicaciones tienen que estar disponibles 24/7 y los desarrolladores esperan implementar nuevas versiones varias veces al día. ✓ Los containers ayudan a empaquetar el software, permitiendo que las aplicaciones se actualicen fácil y rápidamente sin Downtime. ✓ Kubernetes ayuda a que estas aplicaciones en contenedores se ejecuten donde y cuando queramos. ✓ Kubernetes es una plataforma Open Source diseñada con la experiencia de Google en la orquestación de contenedores.
  • 66. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Kubernetes - Líder en Orquestación
  • 67. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Kubernetes - Conceptos
  • 68. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 ¿Qué son los POD’s? ✓ Unidad básica de ejecución de una app en k8s ✓ Un pod representa procesos en el cluster ✓ Encapsula: − 1 o varios container que comparten recursos − Recursos almacenamiento − Ip única − Opciones de configuración del pod. ✓ Representa una unidad de despliegue para k8s
  • 69. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Pods- Visión General ✓ Pods de Container Único ✓ Pods de Múltiples container ✓ Networking en los pods ✓ Almacenamiento en los Pods ✓ Controllers - Gestores de Pods − Deployments − Stateful Sets − Daemon Set ✓ Plantillas Pod ( Pod Templates)
  • 70. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Pods - Networking ✓ Al Pod se le asigna una dirección IP única. ✓ Cada container en un Pod comparte el namespace, la IP y los puertos. ✓ Los containers dentro de un Pod se comunican utilizando localhost. ✓ Cuando la comunicación es fuera del Pod, se deben coordinar cómo usan los recursos de red compartidos (como los puertos).
  • 71. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Almacenamiento - Volúmenes ✓ Un Pod puede especificar un conjunto de volúmenes de almacenamiento compartido. ✓ Los containers en el Pod pueden acceder a los volúmenes compartidos. ✓ Permiten que los datos persistentes en un Pod sobrevivan a un reinicio o caída.
  • 72. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Persistent Volume Claim(PVC) ✓ Es una solicitud de almacenamiento, similar a un pod, ✓ Los PVC consumen recursos de volumen persistente en lugar de cómo los pod consumen recursos de nodo. ✓ Los pods pueden solicitar niveles específicos de recursos (memoria y CPU), ✓ Los PVC solo pueden solicitar tamaños específicos y modos de acceso.
  • 73. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 K8s Secrets ✓ Es un objeto en K8s que almacena y administra información confidencial, como contraseñas, tokens, claves ssh, etc. ✓ Se almacenan en etcd, la bd campo valor de K8s. ✓ Se puede habilitar la encriptación para almacenarlos en etcd.
  • 74. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 K8s Labels ✓ Pares clave/valor que se adjuntan a los objetos, como Pods. ✓ Especifican atributos de identificación de objetos significativos y relevantes ✓ Organizan y seleccionar subconjuntos de objetos. ✓ Se adjuntan a los objetos en el momento de la creación o en cualquier momento. ✓ Cada clave debe ser única para un objeto dado.
  • 75. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 K8s Labels
  • 76. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Stateful App ¿Que es una Stateful Application? ✓ Es la que guarda datos sobre cada sesión de cliente hasta la próxima solicitud. ✓ Estos datos se conocen como el estado de la aplicación. ✓ Estos se almacenan localmente o en un host remoto hasta el momento en que el usuario cierra la sesión.
  • 77. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Stateful App 1. Operaciones ordenadas con índice operaciones críticas de pod, startup, scale-up, scale-down, rolling upgrades, termination. 2. ID / nombre de red estable y único en todos los reinicios Garantiza que volver a generar un pod no hará que el clúster lo trate como un miembro nuevo. 3. Almacenamiento estable y persistente Permite conectar el mismo disco persistente a un pod incluso si se reprograma en un nuevo nodo. 4. Servicio headless (sin IP única) para integraciones Los clientes inteligentes conocen todos los pods y se conectan a cualquiera de ellos sin utilizar ningún tipo de servicio de Load Balancer.
  • 78. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Stateless App ¿Que es una Stateless Application? ✓ Aplicación que no guarda los datos del cliente generados en una sesión ✓ HTTP, por ejemplo, es inherentemente sin estado. ✓ Significa que cuando se desea un estado para una aplicación web, las funciones con estado deben integrarse con páginas dinámicas. ✓ Las páginas pueden almacenar sesiones a través de variables de dirección web y datos almacenados del servidor y del lado del cliente, como a través de cookies.
  • 79. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Kubernetes Stateful/Stateless
  • 80. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Deployments(Stateless) ✓ Describe un “Estado Deseado” en implementación, y el controlador cambia el estado real al estado deseado. ✓ Se utiliza en App que son stateless, ya que el solo permite ReadWrite Once ✓ Puede definir implementaciones para crear nuevos ReplicaSets o eliminar o adoptar todos sus recursos con nuevas implementaciones.
  • 81. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Replica Sets(Stateless) ✓ Un controlador puede crear y administrar múltiples Pods manejando la replicación y el despliegue y proporcionando capacidades de self-healing en el clúster. ✓ Si un Nodo falla, el Controlador puede reemplazar automáticamente el Pod programando un reemplazo idéntico en un Nodo diferente.
  • 82. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 StatefulSets ( Stateful Apps) ✓ Facilita la creación de aplicaciones con estado. ✓ Óptimo para ejecutar una base de datos en producción. ✓ Cada pod tiene el mismo ID de red y disco en todos los reinicios, incluso si esto se crea en otro nodo. ✓ Escalar las cargas de trabajo y el upgrading de las aplicaciones con estado.
  • 83. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 StatefulSets ( Stateful Apps) ✓ HA implica ejecutar un único master (para Writes) con 1+ réplicas ( read slaves). ✓ El maestro y las réplicas se implementan juntos en un solo StatefulSet. ✓ El servicio master está asociado al pod 0. ✓ Los pods distintos de cero están conectados a un servicio diferente "Servicio de réplica".
  • 84. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 MySQL Replicación
  • 85. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Horizontal Pod Autoscaling ✓ HPA escala automáticamente el # de pods en − Replication controller − Deployment − Replica Set − StatefulSet (desde la 1.9) ✓ Basado en la utilización observada de la CPU ✓ Actualmente también de alguna otra métrica .
  • 86. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Services ✓ Los pods son mortales y tienen un ciclo de vida. ✓ Cuando un Worker Node muere, los Pods que se ejecutan en él también se pierden. ✓ Un ReplicaSet lleva dinámicamente el clúster al estado deseado mediante la creación de nuevos Pods para mantener su aplicación en funcionamiento.
  • 87. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Services ✓ Abstracción que define un conjunto lógico de Pods y una política para acceder a ellos. ✓ Está determinado por un LabelSelector ✓ Cada Pod tiene una IP única, estas no están expuestas fuera del clúster sin un Servicio. ✓ Permiten que las aplicaciones reciban tráfico. ✓ Los servicios se pueden exponer de diferentes maneras especificando un tipo en ServiceSpec
  • 88. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Services ✓ Enruta el tráfico a través de un conjunto de pods. ✓ Permite que cuando los pods mueren y se repliquen no afecten a la aplicación. ✓ Gestionan el Discovery y el enrutamiento entre pods dependientes
  • 89. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Anexo Técnico Contiene detalles técnicos y ejercicios: − Docker Containers/Images − Docker Networks − Volúmenes Persistentes (CSI) − Arquitectura Kubernetes − Kubernetes Secrets − Kubernetes Deployments − kubernetes Services
  • 90. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
  • 91. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Ecosistema de Contenedores
  • 92. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Ecosistema Docker
  • 93. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Ej 1: Creación Primer Contenedor Creación de un contenedor por defecto desde una imagen existente en el Docker Hub. La típica hello-world , ejecuta el contenedor, saca por pantalla la ayuda y se cierra $docker container run hello-world:latest Ejecutamos un comando en el container $docker container run busybox echo Hola amigos de Telefónica $docker container run -it busybox sh
  • 94. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Imágenes / Capas Docker
  • 95. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Ej 2: Creación de una Imagen Creamos un directorio para el proyecto − mkdir redis-test − cd redis-test Creación de una imagen que ejecuta redis-server − FROM : Especificamos cual va a ser la Base Image − RUN : Para ejecutar e instalar lo necesario − CMD : Especificar un comando para ejecutar en el startup
  • 96. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Ej 2: Creación de una Imagen(2) vim Dockerfile FROM alpine RUN apk add --update redis CMD ["redis-server"] $docker build -t lmtbelmonte/redis:latest .
  • 97. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Ej 3: Creación del contenedor # Listamos las imagenes que existan en docker local $ docker images # recuperamos la imagen para ejecutar un contenedor $ docker container run --name redis-tlf:1.0 #Listamos los contenedores $ docker container ls
  • 98. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Default Networking Driver Bridge es es la red docker0 en todas las instalaciones de Docker. Se puede cambiar con la opción docker run --network = <NETWORK>, es parte del stack de red de un host y se puede ver : $ip addr show 3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default link/ether 02:42:0a:c8:80:f0 brd ff:ff:ff:ff:ff:ff inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0 valid_lft forever preferred_lft forever
  • 99. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Ej 4: Creación de redes # Crear una nueva red $ docker network create br1 # Crear un contenedor para usarlo con puerto 8081 -> 80 en la red por defecto $ docker container run -d --name network-test03 -p 8081:80 nginx # Crear un contenedor para usarlo con puerto 8082 -> 80 en la red br1 $ docker container run -d --name network-test04 -p 8082:80 --network br1 nginx # comprobamos ejecución del contenedor y vemos que puerto (ps) # Como vemos está mapeado el puerto 8081/8082-->80/tcp de los containers # Comprobamos que está accesible con curl ( también con la IP) $ curl localhost:8081/8082 ( aparecera la pagina de bienvenida de Nginx)
  • 100. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Ej 5: Inspección de Containers # Inspeccionamos container network-test03/04 para ver red asignada $ docker container inspect network-test03/04 # Creamos un container en br1 para hacer ping a los contenedores creados previamente $ docker container run -it --name lmt-ping --network br1 centos # Conectamos los containers a la misma red $ docker network connect br1 network-test03 # re arrancamos container $ docker container start -ia lmt-ping # Hacemos ping desde lmt-ping a network-test03 ping 172.18.0.4
  • 101. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Ej 6: Red Bridge con Subnet/gateway # Creación de una red bridge con su subnet y gateway $docker network create --subnet 10.1.0.0/24 --gateway 10.1.0.1 br02 # ejecutamos ifconfig para ver el bridge interface for br02: $ ip addr # inspeccionamos la red br02 $ docker network inspect br02 # Purgamos todas las redes no usadas $ docker network prune
  • 102. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Ej 7: Networking entre 2 Containers # primero creamos la internal network: docker network create -d bridge --internal localhost # Creamos un contenedor con MySQL que este conectado a localhost utilizamos el flag -e docker container run -d --name test_mysql -e MYSQL_ROOT_PASSWORD=P4sSw0rd0 --network localhost mysql:5.7 # Creamos un container que pueda hacer ping al MySQL container: docker container run -it --name ping-mysql --network bridge centos
  • 103. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 EJ 7: Networking entre 2 Containers # Connect ping-mysql to the localhost network: docker network connect localhost ping-mysql # Rearrancamos y nos attachamos ( -a) al container: docker container start -ia ping-mysql docker container run -it --name cant-ping-mysql centos
  • 104. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Container Storage Interface ✓ Estándar para exponer sistemas de almacenamiento (Block and File storage) en contenedores a Orquestadores como Kubernetes. ✓ Permite exponer nuevos sistemas de almacenamiento en Kubernetes sin tener que tocar el código central de Kubernetes.
  • 105. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Operaciones Básicas Volúmenes $ docker volume create Crear un volumen. inspect Información detallada de uno o más volúmenes. ls Listar volúmenes. prune (Purgar)Eliminar todos los volúmenes no usados. rm ELiminar uno o varios volúmenes.
  • 106. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Ej 8: DB Mysql + Volumen persistente 1. Creamos un volumen persistente $ docker volume create mysql_data 2. Creamos el contenedor con ese volumen $ docker container run -d --name app-database --mount type=volume,source=mysql_data,target=/var/lib/mysql -e MYSQL_ROOT_PASSWORD=P4ssW0rd0! mysql:latest
  • 107. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Ej 8: Mysql + Volumen persistente Connect ping-mysql to the localhost network: docker network connect localhost ping-mysql Rearrancamos y nos attachamos ( -a) al container: docker container start -ia ping-mysql
  • 108. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Ej 9: Wordpress+Mysql+PersistentV
  • 109. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Ej 9: Wordpress+Mysql+PersistentV # Creación de dos contenedores independientes uno con wordpress y Apache y otro con Mariadb # primero creamos dir wordpress y nos cambiamos al este dir docker container run --name wordpressdb -v "$PWD/database":/var/lib/mysql -e MYSQL_ROOT_PASSWORD=Tele2021 -e MYSQL_DATABASE=wordpress -d mariadb:latest # hacemos un pull de wordpress y ejecutamos el container docker pull wordpress docker container run --name wordpress -v "$PWD/html":/var/www/html -e WORDPRESS_DB_PASSWORD=Tele2021 --link wordpressdb:mysql -p 80:80 -d wordpress
  • 110. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Ej 9: Wordpress+Mysql+PersistentV # Accedemos a wordpress a través de la ip pública del host http://<public IP>/wp-admin/install.php # configuramos el site # creamos uno de pruebas para ver como el volumen persiste # Forzamos una caída del container docker container stop wordpress # comprobamos que el volumen sigue # arrancamos el container y comprobmaos que es el mismo site docker container start wordpress
  • 111. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1
  • 112. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Ecosistema Kubernetes
  • 113. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Arquitectura Kubernetes
  • 114. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Arquitectura Kubernetes El Máster es responsable de administrar el clúster. − Coordina todas las actividades en su clúster − Plannea las aplicaciones − Mantiene el estado deseado de las aplicaciones − Escala las aplicaciones − Lanzar nuevas actualizaciones No se deben ejecutar contenedores en el master
  • 115. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Componentes Master ✓ Apiserver ✓ etcd ✓ Scheduler ✓ Kube-Controller-manager ✓ cloud-controller-manager
  • 116. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Master - Api Server ✓ Válida y configura datos para los objetos de la API que incluyen pods, servicios, controladores de replicación y otros. ✓ Atiende las operaciones REST y proporciona la interfaz para el estado compartido del clúster a través del cual interactúan todos los demás componentes.
  • 117. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Master - etcd ✓ K8s Necesita una base de datos distribuida. ✓ etcd facilita el almacenamiento de datos en un clúster y la observación de cambios en esos datos. Kubernetes usa etcd como su base de datos. ✓ Guarda toda la configuración del clúster ✓ Guarda el estado real y el estado deseado ✓ Monitoriza los cambios del estado. ✓ Si divergen, Kubernetes realiza cambios para conciliar el estado real y el estado deseado.
  • 118. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Master - Scheduler ✓ Observa los Pods recién creados que no tienen ningún nodo asignado. ✓ Por cada Pod que descubre, se hace responsable de encontrar el mejor nodo para ejecutar ese Pod. ✓ Los nodos que cumplen los requisitos para un Pod se denominan nodos factibles, sino se queda sin colocar ✓ Ejecuta un conjunto de funciones para calificar los Nodos factibles y elige el de la puntuación más alta. ✓ Para las decisiones de colocación hay requisitos individuales y colectivos, restricciones de HW/SW, políticas, Afinidad y anti-afinidad, localidad de datos ..
  • 119. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Master - Controllers
  • 120. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Master - Kube Controller Manager ✓ Daemon que incorpora los control loops básicos k8s. ✓ Un control loop es un bucle sin terminación que regula el estado del sistema. ✓ Un controller observa el estado del clúster a través del Apiserver y realiza cambios para llegar al desired state. ✓ Los Controllers Básicos que vienen con k8s − replication controller, − endpoints controller, − namespace controller, − service accounts controller.
  • 121. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Master - Cloud Controller Manager ✓ Permite que el código del cloud provider y el núcleo de Kubernetes evolucionen de forma independiente. ✓ Se ejecuta junto con el Controller manager, el API Server y el Scheduler. ✓ Se integra fácilmente con otros cloud providers mediante el uso de complementos. ✓ Sus funciones son − Node controller − Route controller − Service controller
  • 122. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Componentes Nodo El nodo es una VM/Física- worker en el clúster k8s. − Tiene un Kubelet, agente para administrar comunicarse con el master. − Tiene instalado docker/rkt para los containers − El clúster k8s en producción debe tener un mínimo de tres nodos.
  • 123. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Componentes Nodo ✓ Kubelet − Ejecuta y gestiona los containers en el nodo y habla con API ✓ Kube-proxy − Hace de balanceador entre los elementos de la App ✓ Container runtime − Ejecutable que corre los containers(Docker, rkt, containerd )
  • 124. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 App ejecutándose en K8s
  • 125. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Comandos básicos Pod’s
  • 126. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Comandos Deployment
  • 127. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 K8s Volume Drivers ✓ Para poder utilizar el almacenamiento en cloud de los diferentes proveedores. ✓ Utilizamos storage clases ✓ De esta forma tenemos almacenamiento ilimitado sin necesidad de provisionar previamente ✓ Ejemplo de un volumen AWS EBS tipo gp2 y con expansión dinámica https://kubernetes.io/docs/concepts/storage/storage-classes/
  • 128. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 K8s Secrets # Creación de un secreto para guardar la root password $ kubectl create secret generic mysql-root-pass --from-literal=password=R00t # Creación de usuario y pass de mysql $ kubectl create secret generic mysql-user-pass --from-literal=username=callicoder --from-literal=password=c@ll1c0d3r # Listar los secretos $ kubectl get secrets # Describir los secretos $ kubectl describe secrets
  • 129. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 k8s Deployment.yml ✓ ApiVersion − Versión del API de K8s que indica el path ✓ Kind − Es el tipo de Objeto que se quiere crear ✓ Metadata − id unica el objeto, nombre, UID, namespace ✓ spec − Estado deseado y características que queramos que tenga. ✓ status − Estado actual, se comprueba constantemente para que coincida con el definido en el yaml
  • 130. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Ej 10: Creación de un Pod nginx # Ejecutamos directamente desde la bash la creación del fichero y ejecución $ cat << EOF | kubectl create -f - apiVersion: v1 kind: Pod metadata: name: nginx spec: containers: - name: nginx image: nginx EOF # Creamos primero el fichero nginx.yml apiVersion: v1 kind: Pod metadata: name: nginx spec: containers: - name: nginx image: nginx # Ejecutamos el comando kubectl para crearlo $ kubectl create -f nginx.yml lmtbelmonte@lmt:~/kubernetes$ kubectl get pods NAME READY STATUS RESTARTS AGE nginx 1/1 Running 0 11m
  • 131. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Ej 11: Creación de un Deployment # Creamos el objeto Deployment con kubectl kubectl create -f nginx-deploy.yml # Describimos el deployment en Yaml kubectl get deployment nginx-deployment -o yaml # Listamos los pods que ha creado el deployment kubectl get pods --show-labels # Etiquetamos los pods para agruparlos kubectl label pods nginx-deployment-5c6892j6l9 env=prod
  • 132. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 K8s HPA con StatefulSets El soporte de autoscaling para Statefulsets Horizontal Pod Autoscaling solo esta funcional desde la versión 1.9 kubernetes.
  • 133. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Ej 12: Creación de un Service # Creamos el objeto Service con kubectl kubectl create -f nginx-service.yml # Describimos el servicio en yaml kubectl get service nginx-nodeport -o yaml # Listamos los servicios que hay en el cluster kubectl get services -o wide
  • 134. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Ej 13: Creación de un Service(2) # Creamos un pod BusyBox para acceder al pod kubectl create -f busybox-pod.yml # Describimos el servicio kubectl get pod -o yaml # Listamos los pods que hay en elcluster kubectl get pods -o wide
  • 135. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Ej 14: App Stateful(Mysql+Replicas) ✓ 2 Config-map uno para el master y otro para slaves ✓ 2 Servicios uno para R/W y otro para read-only ✓ Creamos la BD y una tabla test ✓ Insertamos valores de prueba “Hola Mundo” y hacemos select ✓ Comprobamos que el servicio distribuye la carga ✓ Simulamos un fallo en el Health-check de un pod ✓ Comprobamos como la carga pasa al otro pod ✓ Borramos un Pod y comprobamos como los recrea automáticamente ✓ Fusilamos un Nodo , vemos como hace un Cordon y un Evict ✓ Escalamos los slaves para incrementar las réplicas
  • 136. Fundamentos Multi/Hybrid Cloud MULTI-HYBRID-CLOUD-Fundamentals v1 Workloads -> Función Kubernetes