SlideShare una empresa de Scribd logo
1 de 94
Descargar para leer sin conexión
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
Who’s that guy
• Director de Innovación en Ingeniería del Software
en Instituto Tecnológico de Informática @ITI_TIC
• 7 años con proyectos comerciales
• Actualmente en proyectos de I+D
• Big Data, Machine Learning, Cloud Computing, Cyber
Physical Systems, Embedded Systems…
• Ex-CTO en www.onlyeco.com
• Buscador de viajes ecosostenibles
• Actualmente EcoDeveloper Advocate
• Formador y ponente
https://www.linkedin.com/in/fjbarrena
https://twitter.com/DogDeveloper
https://github.com/fjbarrena
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
i+d en el iti
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
kubernetes
the cloud king
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
qué es kubernetes
• Kubernetes es un orquestador open source de contenedores
Docker, desarrollado por Google
• Ejecuta y administra aplicaciones dockerizadas en un clúster de
CPUs o GPUs
• Permite múltiples acciones, como:
• Programación de despliegues
• Escalado automático
• Monitorización de contenedores
• Etc…
• Es ””interoperable”” entre proveedores cloud (Amazon, Azure,
Google Cloud, Rackspace…)
• Y por eso se ha convertido en el estándar de facto para desarrollos
basados en cloud
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
Como lleváis
docker??
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
docker (recordatorio)
• Docker es una plataforma de software que permite empaquetar
aplicaciones y todas sus dependencias para poder desplegarlas
fácilmente
• Estos paquetes reciben el nombre de contenedores
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
Docker image
• Docker permite describir un contenedor (en realidad es una
imagen) a través de un fichero de descripción Dockerfile
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
Docker image
• Una imagen es un paquete que incluye todo lo necesario para
ejecutar una aplicación
• Código
• Runtime
• Libraries
• Environment variables, archivos de configuración, etc.
• Una imagen de Docker es de solo lectura
• Las imágenes son en realidad un conjunto de capas que se van
superponiendo las unas a las otras
• Cada instrucción, es una nueva capa
• Cuando una imagen se modifica, una nueva capa se crea
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
Docker image
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
Docker container
• Un contenedor es una instancia ejecutable de una imagen
• Es decir, a partir de una imagen puedo generar N contenedores
que ejecuten el contenido de esa imagen
• Los contenedores son:
• Aislados por defecto (no se ven los unos a los otros)
• Configurables:
• Almacenamiento
• Visibilidad
• Redes
• Volúmenes, etc.
• Lo que defino es una imagen, lo que ejecuto es un contenedor
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
ventajas de docker
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
video de algo que de la impresión de escalar
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
La
arquitectura
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
Por qué es importante kubernetes
• Kubernetes es una herramienta muy potente para desplegar
aplicaciones en producción
• Tanto en entornos cloud, como en entornos on-premise
• Se ha convertido en el core de los principales IaaS / PaaS
• Se han construido un montón de aplicaciones que corren,
monitorizan o usan Kubernetes
• No se trata de una solución propietaria de Google
• Forma parte de la Cloud Native Foundation (www.cncf.io)
• Participan en su desarrollo
• Google
• Red Hat
• Meteor
• CoreOS
• Huawei, etc.
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
Por qué es importante kubernetes
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
Donde puedo usar kubernetes
• En Bare Metal. A pecho palomo, yo me lo guiso yo me lo como. Me
compro un clúster de máquinas físicas y me lo instalo.
• Suerte amigos
• Virtualización On Premise. Utilizando algún proveedor, como por
ejemplo OpenStack, VMWare o CloudStack
• Soluciones Cloud. Lo más sencillo. Que me lo gestione otro
• Google Container Engine
• OpenShift
• CoreOS
• EKS (de Amazon)
• CloudFoundry
• AKS (de Azure), etc.
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
Características principales de k8
• Escalado y autoescalado
• Aumenta o disminuye el número de contenedores necesarios en función
del uso de CPU
• Escalado vertical
• El escalado puede ser manual o automático
• Permite describir reglas para configurar el escalado
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
El escalado No es mágico
• Kubernetes nos permite escalar nuestra aplicación
• Pero para eso nuestra aplicación debe estar diseñada teniendo en
cuenta que va a escalar
• La clave para desarrollar aplicaciones escalables fácilmente es:
• Los contenedores que escalan no deben contener estado
• Las aplicaciones deben seguir un paradigma de desacoplamiento
frontend/backend
• Si es posible, utilizad tecnologías de frontend en el cliente (React,
Angular,Vue…)
• Desarrollad vuestros contenedores como si pudieran morir en cualquier
momento
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
Pero paco, si las cpus las usamos así como vamos a…
Francisco Javier Barrena Castillo - @DogDeveloper
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
Características principales de k8
• Descubrimiento de servicios y balanceo de carga
• K8s asigna a los contenedores su propias direcciones IP
• También un nombre DNS único para un conjunto de contenedores
• K8s se ocupa del balanceo de carga, solo tenemos que configurarlo
• Autorreparación
• Shit happens. Los contenedores caen.
• En caso de fallo, K8s se ocupa de reiniciarlo automáticamente
• A veces no son los contenedores los que caen, a veces es el propio K8s
• Incluso en estos casos, K8 se autorrepara
• Bueno… con alguna salvedad que veremos después
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
Características principales de k8
• Despliegues y rollbacks automáticos
• Cuando actualizamos un contenedor, o cambia su configuración, K8
despliega los cambios de forma progresiva
• Mientras efectúa los cambios, monitoriza la salud de los contenedores,
asegurando que no mata todas las instancias al mismo tiempo
• En caso de fallo, hace un rollback a los contenedores de la versión anterior
• Planificación
• K8s se encarga de decidir qué nodo ejecutará qué contenedor
• Esta decisión se hace en función de los recursos que requiera, y a otras
restricciones (generalmente de localidad)
• Mezcla cargas de trabajo críticas y best-effort para favorecer la utilización y
el ahorro de recursos
• Se puede configurar el planificador en base a nuestras necesidades
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
Características principales de k8
• Gestión y configuración de secrets
• Los contenedores Docker son geniales, pero son demasiado transparentes
• Históricamente, si un contenedor necesita una contraseña, esta se
suministra como parámetro de entrada
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
Características principales de k8
• Gestión y configuración de secrets (cont.)
• En K8s esa información se almacena en secrets
• Tanto la configuración de la aplicación, como los secrets, se despliegan y
se actualizan sin tener que reconstruir la imagen Docker, ni exponer la
información
• Orquestación del almacenamiento
• Uno de los puntos calientes de estas arquitecturas descopladas y
distribuidas es la gestión del almacenamiento
• K8s implementa un sistema de volúmenes que permite configurar el
almacenamiento, y asociarlo a los contenedores.
• Ese almacenamiento puede ser de varios tipos, puede ser local, estar en
AWS o en un sistema de almacenamiento en red como NFS
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
instalación de kubernetes
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
instalación de kubernetes para trastear
• Si vas a trastear con Kubernetes, mejor en Windows o en Mac
• Es mucho más sencillo configurar un entorno de desarrollo o pruebas
• Si estás en Ubuntu…
• Te lo vas a tener que currar más
• Si quieres saber cómo se instala en Ubuntu tenemos un curso que
empieza en unas pocas semanas…
• Kubernetes, from zero to hero
• https://www.iti.es/oferta-formativa/kubernetes/
• 24 horas de curso
• Descuentos para asociados
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
Kubernetes en mac
• Kubernetes funciona sobre Docker
• Así que primero hay que instalar Docker Desktop
• https://www.docker.com/products/docker-desktop
• Descargar y seguir las instrucciones
• Una vez instalado y arrancado, pulsamos sobre el icono de la
ballenita de Docker
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
Kubernetes en mac
• Pulsamos sobre la opción ‘Kubernetes’. Aparecerá una ventana de
confirmación para la activación de Kubernetes
• Si no funciona al pinchar sobre Kubernetes
• Shit happens…
• Pinchamos sobre Preferences, y seleccionamos la pestaña
‘Kubernetes’
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
Kubernetes en mac
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
Kubernetes en mac
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
Kubernetes en mac
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
Kubernetes en mac
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
Arquitectura básica de kubernetes
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
Arquitectura
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
Como funciona kubernetes
• Kubernetes es un sistema muy complejo, especialmente si lo
comparamos con sus predecesores como Docker Swarm
• Para entender bien como funciona Kubernetes por dentro,
debemos conocer los conceptos y principios subyacentes
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
El estado deseado
• El Desired State es un de los conceptos más core de Kubernetes
• La idea está en que tú defines el estado deseado de un
contenedor (en realidad de un Pod, luego veremos lo que es)
• Kubernetes siempre tratará de que tu contenedor se encuentre en
el estado deseado
• De modo, que si falla o el contenedor deja de funcionar,
Kubernetes recreará el contenedor basándose en la definición del
estado deseado
• ¿Quién se encarga de velar por los contenedores? Kubernetes
Master, como parte del Kubernetes Control Plane.
• Kubernetes ofrece un CLI (kubectl) que nos permite modificar el
estado deseado de un contenedor por línea de comandos
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
Ejemplo de Deployment.yaml
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
Kubernetes objects
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
Kubernetes objects
• El estado de las entidades del sistema de cualquier instante de
tiempo se representa con Kubernetes Objects
• Al mismo tiempo, actúan como una capa adicional de abstracción
de Docker
• De modo que podemos interactuar directamente con instancias de
Kubernetes Objects, en lugar de con contenedores
• Esto es interesante porque, aunque K8s se desarrolló específicamente
para Docker, no se cierra la posibilidad de que admita más tipos de
contenedores (de hecho, ya lo hace)
• Con Kubernetes Objects nos aseguramos de que, sea cual sea el sistema
de contenedores subyacente, nuestra configuración no cambiará
• Lo Kubernetes Objects básicos son los siguientes
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
pod
• Un Pod es la unidad mínima de despliegue de K8s en un nodo
• Contiene uno o más contenedores que deben ejecutarse juntos
• Puedo definir un Pod como quiera, incluso con contenedores que no
tendrían porqué ejecutarse juntos
• El modelo es abierto, me permite configurar lo que quiera
• Pero la idea de un Pod es que contenga contenedores relacionados, para
aprovechar el principio de localidad
• Además, es la unidad mínima de replicamiento, por lo que también tiene
sentido desde ese punto de vista
• Un Pod comparte almacenamiento y dirección IP
• Los Pods son efímeros. Cuando un Pod se cae o se cierra, toda la
información que contienen desaparece
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
Definición de un pod
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
Creación y gestión de un pod
• Creación de un pod (asumiendo fichero nginx.yaml)
• Listar todos los pods
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
Creación y gestión de un pod
• Obtener en qué nodo del clúster se ejecutan los pods
• Eliminar un pod
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
Creación y gestión de un pod
• Obtener los logs de un pod
• Conectarme a un pod (entrar a la consola)
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
labels
• Los Labels nos permiten etiquetar los recursos de K8s, como por
ejemplo un Pod, con información del tipo clave/valor
• Sirven para seleccionar recursos, como por ejemplo visualizar los
Pods que tienen un label con un determinado valor
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
labels
• Los labels se definen en el fichero YAML, en la sección metadada,
aunque también podemos añadir labels a elementos ya creados
• Podemos mostrar los labels así
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
labels
• Los labels se definen en el fichero YAML, en la sección metadada,
aunque también podemos añadir labels a elementos ya creados
• Podemos mostrar los labels así
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
volumes
• Los Pods son efímeros
• La información que almacenemos en ellos no es persistente
• Pensad en que los Pods son la RAM de Kubernetes
• Un volumen es un almacenamiento persistente que se puede
asociar a un Pod
• Pensad en que los volúmenes son los discos duros de Kubernetes
• En realidad, el concepto de volumen está totalmente fusilado del
propio Docker
• Los volúmenes se definen en el mismo fichero YAML del Pod
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
volumes
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
volumes
• En la sección volumes se definen los volúmenes disponibles
• En la sección volumeMounts indicamos los puntos de montaje
• Existen varios tipos de volúmenes
• hostPath
• Corresponde a un directorio o fichero del nodo donde se crea el Pod
• En nuestro ejemplo, se ha montado en el directorio /home del contenedor
• Solo es interesante cuando el Pod no va a estar en multinodo ya que
• La información no se replica entre nodos
• Por tanto, el contenido puede variar (y variará) dependiendo del nodo donde se aloje
POD 1
10.1.1.1
Fichero1.zip
POD 2
10.1.1.3
Fichero2.zip
https://kubernetes.io/docs/concepts/storage/volumes/#types-of-volumes
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
volumes
• Existen varios tipos de volúmenes (continuación)
• gitRepo (deprecated L)
• El contenido corresponde con el clone a un repositorio de GitHub
• Súper interesante para CI/CD
• Aún está disponible, pero en futuras versiones será eliminado
• La alternativa, crear un emptyDir y hacer el clone del repositorio a mano
• emptyDir
• El contenido de este volumen se elimina cuando el pod se cierra o se cae
• Útil para compartir información entre contenedores de un mismo pod
• azureDisk, awsElasticBlockStore, gcePersistentDisk
• nfs
• El contenido de este volumen se engancha a un NFS (Network File System)
• Similar a emptyDir, pero los datos se mantienen cuando el Pod se cierra
• Similar a hostPath, pero sin la restricción de multinodo al ser un sistema en red
https://kubernetes.io/docs/concepts/storage/volumes/#types-of-volumes
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
volumes
• Existen varios tipos de volúmenes (continuación)
• secret
• Volumen pensado para el paso de información sensible
• Se pueden almacenar secrets en Kubernetes API y montarlos como ficheros para usarlos en los
Pods directamente
• Esto es interesante porque no acoplamos el sistema de secrets de Kubernetes a nuestra
aplicación
• Para ella se trata de un fichero ’normal’
• Implementados sobre tmpfs (RAM-backed filesystem), por lo que la información nunca es
almacenado de modo permanente
• Requiere de la creación previa de un secret. Se puede crear a través del siguiente comando
https://kubernetes.io/docs/concepts/storage/volumes/#types-of-volumes
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
volumes
• Existen varios tipos de volúmenes (continuación)
• secret (continuación)
• La definición del volumen podría ser la siguiente à
• Los secrets se consumen directamente así !
https://kubernetes.io/docs/concepts/storage/volumes/#types-of-volumes
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
¿me vale solo con un pod?
Pod 1
Frontend
Pod 3
Backend
Pod 2
Backend
10.1.1.1
10.1.1.2
10.1.1.3
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
¿me vale solo con un pod?
Pod 1
Frontend
Pod 3
Backend
Pod 4
Backend
10.1.1.1
10.1.1.22
10.1.1.3
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
¿me vale solo con un pod?
Pod 1
Frontend
Pod 5
Backend
Pod 4
Backend
10.1.1.1
10.1.1.22
10.1.1.53
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
service
• Un servicio define un conjunto lógico de Pods y sus políticas de
acceso
• Si hay más de un pod, balancea la carga entre ellos
• Se trata de una abstracción que define un conjunto de Pods que
implementan típicamente un microservicio
• Los servicios ofrecen una dirección virtual (CLÚSTER-IP) y un
nombre que identifica al conjunto de Pods que representa
• Se implementa con IPTABLES; por lo que estos nombres solo valen dentro
de kubernetes
• Si los quiero también fuera, tengo que instanciar y configurar un DNS…
• La conexión al servicio se puede realizar desde otros pods o desde
el exterior
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
service
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
service
• Existen diferentes implementaciones de servicios
• ClusterIP
• NodePort
• LoadBalancer
• Cada una tiene sus características, y seleccionaremos la que
queramos en función de nuestras necesidades
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
clusterip
• Permite únicamente el acceso interno entre distintos servicios
• Es el tipo por defecto
• Insisto, ¡no permite acceso externo al servicio!
• Aunque hay trukis… (creando un proxy)
• Permite acceso desde el exterior si configuramos nosotros un
proxy
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
clusterip
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
nodeport
• Abre un puerto para que el servicio sea accesible desde el exterior
• Por defecto, el puerto generado está entre el 30.000 y el 40.000
• Para acceder al servicio, usamos la IP del Kubernetes Master y el
puerto asignado
• Es una multiplexación a nivel de puerto con la IP del Kubernetes
Master
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
nodeport
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
nodeport
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
nodeport
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
loadbalancer
• ‘Solo’ disponible para proveedores Cloud
• Provisiona un balanceador de carga para el servicio
• El tipo de balanceador dependerá del proveedor cloud donde tengamos
Kubernetes
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
loadbalancer
• Es posible configurar K8s para poder usar LoadBalancer en Bare
Metal
• Para conseguirlo se debe utilizar Ingress, aunque tiene algunas
restricciones
• Solo soporta tráfico HTTP
• Solo para los puertos 80 y 443
• La prioridad de Kubernetes no es el On Premise, son los vendors
de servicios Cloud
• Te lo puedes montar como nos lo montábamos antes,
configurando nuestro propio balanceador de carga como un
Pod+Servicio más de Kubernetes
https://medium.com/@maniankara/kubernetes-tcp-load-balancer-service-on-premise-non-cloud-f85c9fd8f43c
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
namespaces
• Instalar un clúster de Kubernetes On Premise (por ejemplo, sobre
bare metal o sobre Open Stack) no es sencillo
• Hay un montón de consideraciones de sistemas que hay que tener en
cuenta
• No es cómodo ni óptimo, por tanto, tener múltiples clústers de
Kubernetes corriendo en una empresa
• Es más caro de instalar
• Es más caro de mantener
• La única justificación puede ser la de aislar el entorno, y la visibilidad, para
diferentes proyectos
• Un namespace es un clúster de K8s virtual que corre sobre un
clúster físico.
• De este modo no tenemos que mantener múltiples clústers de K8s
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
namespaces
• Podemos consultar los namespaces activos en nuestro clúster
físico a través del siguiente comando
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
namespaces
• K8s tiene por defecto 3 namespaces
• default:
• namespace por defecto para elementos que no tengan definido ningún namespace concreto
• kube-system
• Namespace para los elementos creados por el Kubernetes System. Solo para administración
del clúster.
• kube-public
• Namespace accesible por todos los usuarios
• Incluso por aquellos que no están autenticados
• Se utiliza habitualmente para el uso del propio clúster físico, en los casos en que se quiera
compartir algún recurso entre namespaces
• Por ejemplo, todos mis namespaces necesitan un Kafka, porque es una tecnología que forma parte de
mi stack tecnológico
• En vez de instanciar un Kafka en cada namespace, puedo instanciarlo en kube-public
• De ese modo, el resto de namespaces tendrán acceso a Kafka
• Otro ejemplo: Sonar
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
namespaces
• Un namespace se puede definir en un fichero YAML o por línea de
comandos
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
Kubernetes controllers
• Estos son los conceptos básicos de Kubernetes
• Son los building blocks sobre los cuales se construyen el resto de
elementos
• Como construir cosas from the scratch es duro, K8s proporciona un
conjunto de objetos preconfigurados que se encargan de
mantener el estado deseado y ofrecen características adicionales.
• Los Controllers más útiles son:
• ReplicaSet
• Deployment
• StatefulSet
• DaemonSet
• Job
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
Replica set
• ReplicaSet asegura que siempre se ejecute un número de réplicas
de un determinado pod.
• Asegura que hay un conjunto mínimo de pods que están siempre
funcionando y disponibles
• Útil para:
• Evitar caídas de servicio
• Tolerancia a errores
• Escalabilidad dinámica
• Como todo en K8s, los ReplicaSets se definen en un fichero YAML
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
Replica set
Número de pods
mínimos que van a
estar siempre en
ejecución
Seleccionamos los
pods que vamos a
replicar y controlar
Definición de pods.
No todos tienen
porque aplicar al
ReplicaSet, solo
aquellos que
seleccionemos
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
Replica set
• Registrar un ReplicaSet en K8s
• Obtener todos los ReplicaSets
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
deployment
• El deployment es la unidad de más alto nivel que podemos
gestionar en Kubernetes
• Permite definir diferentes funciones
• Control de réplicas
• Escalabilidad de pods
• Actualizaciones
• Despliegues automáticos
• Rollback a versiones anteriores
• En realidad es un wrapper de un ReplicaSet
• ¿cómo se define?
• Con un YAML (kilométrico), por supuesto
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
deployment
Cuántos ReplicaSets antiguos queremos
conservar para poder hacer rollback
Modo de actualización
• RollingUpdate: actualiza los pods a la
nueva versión
• Recreate: elimina los pods antiguos y
crea los nuevos
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
deployment
• Como se aplica un deployment en Kubernetes
• Como se consultan
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
deployment
• Como se escalan con una regla estática
• Como se escalan con una regla dinámica
• Nota: asume que está activada la opción de horizontal pod
autoscaling en tu clúster
https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
Kubernetes dashboard
• Salvo que seas Sergio Talens, la consola se te va a
hacer bola
• Para un consumo de la información más amable
(aunque menos eficaz), se pueden instalar
herramientas externas al Core de Kubernetes
• Existen muchas herramientas, la mayoría de ellas
libres, pero una de las más extendidas es
Kubernetes Dashboard
• La instalación y (especialmente) acceso al
Kubernetes Dashboard es ’peculiar’
• A continuación un paso a paso…
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
Kubernetes dashboard
• Abrimos la consola e instalamos Kubernetes Dashboard
• Arrancamos la UI usando el siguiente comando
• Para acceder al Dashboard copiamos la siguiente dirección
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
Kubernetes dashboard
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
Kubernetes dashboard
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
Listamos los secrets disponibles en k8s
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
obtenemos el token secret
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
introducimos el token…
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
Y ya tenemos acceso al dashboard…
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
video de algo que de la impresión de escalar
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
Nos queda muuuuucho que ver
LOGGING
MONITORING
SECURITY
AUTHENTICATION
NETWORKING
CI/CD
SERVICE MESH
TOOLS
TESTING
SERVERLESS REMOTE DEBUGGING REMOTE PROFILING
Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI
Francisco Javier Barrena Castillo - @DogDeveloper
Gracias

Más contenido relacionado

La actualidad más candente

Game of pods - Kubernetes
Game of pods - KubernetesGame of pods - Kubernetes
Game of pods - Kubernetesjdezine
 
Presentación Docker
Presentación DockerPresentación Docker
Presentación DockerITPAMI
 
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 Eduardo Castro
 
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...Restorando
 
Kubernetes - #dockerconlima
Kubernetes  - #dockerconlimaKubernetes  - #dockerconlima
Kubernetes - #dockerconlimaAngel Nuñez
 
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 KubernetesDomingo Suarez Torres
 
Presentacion OpenShift by RedHat
Presentacion OpenShift by RedHatPresentacion OpenShift by RedHat
Presentacion OpenShift by RedHatJosé Pino
 
Kubernetes - #gdglimasummit
Kubernetes - #gdglimasummitKubernetes - #gdglimasummit
Kubernetes - #gdglimasummitAngel Nuñez
 
BEEVA | Introducción a Docker
BEEVA | Introducción a DockerBEEVA | Introducción a Docker
BEEVA | Introducción a DockerBEEVA_es
 
Dynamics saturday madrid 2018 bc-on-docker - jakub
Dynamics saturday madrid 2018   bc-on-docker - jakubDynamics saturday madrid 2018   bc-on-docker - jakub
Dynamics saturday madrid 2018 bc-on-docker - jakubDemian Raschkovan
 
Docker introducción - Flisol 2015 Huancayo
Docker introducción - Flisol 2015 HuancayoDocker introducción - Flisol 2015 Huancayo
Docker introducción - Flisol 2015 HuancayoMario IC
 
Introducción a Docker
Introducción a DockerIntroducción a Docker
Introducción a DockerOpen Canarias
 
Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry
Docker Ecosystem: Engine, Compose, Machine, Swarm, RegistryDocker Ecosystem: Engine, Compose, Machine, Swarm, Registry
Docker Ecosystem: Engine, Compose, Machine, Swarm, RegistryMario IC
 
Explorando los objetos centrales de Kubernetes con Oracle Cloud
Explorando los objetos centrales de Kubernetes con Oracle CloudExplorando los objetos centrales de Kubernetes con Oracle Cloud
Explorando los objetos centrales de Kubernetes con Oracle CloudVíctor Leonel Orozco López
 
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 2015Gustavo Andres Brey
 

La actualidad más candente (20)

Game of pods - Kubernetes
Game of pods - KubernetesGame of pods - Kubernetes
Game of pods - Kubernetes
 
Presentación Docker
Presentación DockerPresentación Docker
Presentación Docker
 
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
 
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...
 
Kubernetes - #dockerconlima
Kubernetes  - #dockerconlimaKubernetes  - #dockerconlima
Kubernetes - #dockerconlima
 
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
 
Presentacion OpenShift by RedHat
Presentacion OpenShift by RedHatPresentacion OpenShift by RedHat
Presentacion OpenShift by RedHat
 
Kubernetes - #gdglimasummit
Kubernetes - #gdglimasummitKubernetes - #gdglimasummit
Kubernetes - #gdglimasummit
 
BEEVA | Introducción a Docker
BEEVA | Introducción a DockerBEEVA | Introducción a Docker
BEEVA | Introducción a Docker
 
Dynamics saturday madrid 2018 bc-on-docker - jakub
Dynamics saturday madrid 2018   bc-on-docker - jakubDynamics saturday madrid 2018   bc-on-docker - jakub
Dynamics saturday madrid 2018 bc-on-docker - jakub
 
Docker introducción - Flisol 2015 Huancayo
Docker introducción - Flisol 2015 HuancayoDocker introducción - Flisol 2015 Huancayo
Docker introducción - Flisol 2015 Huancayo
 
Introducción a Docker
Introducción a DockerIntroducción a Docker
Introducción a Docker
 
Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry
Docker Ecosystem: Engine, Compose, Machine, Swarm, RegistryDocker Ecosystem: Engine, Compose, Machine, Swarm, Registry
Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry
 
DevOps+[Chef/Docker]
 DevOps+[Chef/Docker] DevOps+[Chef/Docker]
DevOps+[Chef/Docker]
 
introducción a Docker
introducción a Dockerintroducción a Docker
introducción a Docker
 
Curso gratuito de Docker
Curso gratuito de DockerCurso gratuito de Docker
Curso gratuito de Docker
 
FROM lost to the docker
FROM lost to the dockerFROM lost to the docker
FROM lost to the docker
 
Explorando los objetos centrales de Kubernetes con Oracle Cloud
Explorando los objetos centrales de Kubernetes con Oracle CloudExplorando los objetos centrales de Kubernetes con Oracle Cloud
Explorando los objetos centrales de Kubernetes con Oracle Cloud
 
Kubernetes para developers
Kubernetes para developersKubernetes para developers
Kubernetes para developers
 
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 Kubernetes - The Cloud King

Aplicaciones Absurdamente Rápidas con Quarkus.io
Aplicaciones Absurdamente Rápidas con Quarkus.ioAplicaciones Absurdamente Rápidas con Quarkus.io
Aplicaciones Absurdamente Rápidas con Quarkus.ioFrancisco Javier Barrena
 
Inteligencia artificial in house con servicios cognitivos y docker
Inteligencia artificial in house con servicios cognitivos y dockerInteligencia artificial in house con servicios cognitivos y docker
Inteligencia artificial in house con servicios cognitivos y dockerLuis Beltran
 
Impulsando la innovación con arquitectura de contenedores - MXO202 - Mexico C...
Impulsando la innovación con arquitectura de contenedores - MXO202 - Mexico C...Impulsando la innovación con arquitectura de contenedores - MXO202 - Mexico C...
Impulsando la innovación con arquitectura de contenedores - MXO202 - Mexico C...Amazon Web Services
 
Net conf ar v2018 start up
Net conf ar v2018 start upNet conf ar v2018 start up
Net conf ar v2018 start upfernando sonego
 
Azure bootcampo 2019 start up_v1
Azure bootcampo 2019 start up_v1Azure bootcampo 2019 start up_v1
Azure bootcampo 2019 start up_v1fernando sonego
 
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...Francisco Javier Barrena
 
BootCamp Online en DevOps (and SecDevOps) de GeeksHubs Academy
BootCamp Online en DevOps (and SecDevOps) de GeeksHubs AcademyBootCamp Online en DevOps (and SecDevOps) de GeeksHubs Academy
BootCamp Online en DevOps (and SecDevOps) de GeeksHubs AcademyTelefónica
 
Plug&play:deploying big data_solutions
Plug&play:deploying big data_solutionsPlug&play:deploying big data_solutions
Plug&play:deploying big data_solutionsDavid Piris
 
Francisco Javier Barrena | NestJS: Backends para javeros y punto-neteros con ...
Francisco Javier Barrena | NestJS: Backends para javeros y punto-neteros con ...Francisco Javier Barrena | NestJS: Backends para javeros y punto-neteros con ...
Francisco Javier Barrena | NestJS: Backends para javeros y punto-neteros con ...Codemotion
 
NestJS: Backends en Node para Javeros y Puntoneteros
NestJS: Backends en Node para Javeros y PuntoneterosNestJS: Backends en Node para Javeros y Puntoneteros
NestJS: Backends en Node para Javeros y PuntoneterosFrancisco Javier Barrena
 
Re evolución robótica
Re evolución robóticaRe evolución robótica
Re evolución robóticaSoftware Guru
 
Orquestación de Microservicios Introducción a arquitecturas de desarrollo mod...
Orquestación de Microservicios Introducción a arquitecturas de desarrollo mod...Orquestación de Microservicios Introducción a arquitecturas de desarrollo mod...
Orquestación de Microservicios Introducción a arquitecturas de desarrollo mod...ssuserc860fb
 
Open Source Day Ayacucho Perú
Open Source Day Ayacucho PerúOpen Source Day Ayacucho Perú
Open Source Day Ayacucho PerúEdith Puclla
 
Webinar Codemotion 2020 - Piratas del Cloud
Webinar Codemotion 2020 - Piratas del CloudWebinar Codemotion 2020 - Piratas del Cloud
Webinar Codemotion 2020 - Piratas del CloudFrancisco Javier Barrena
 
DevOps Te Cambia la Vida - eComputing 2018-07-03
DevOps Te Cambia la Vida - eComputing 2018-07-03DevOps Te Cambia la Vida - eComputing 2018-07-03
DevOps Te Cambia la Vida - eComputing 2018-07-03Jorge Hidalgo
 
Real CI/CD para MSDyn365FO… Be a hero!
Real CI/CD para MSDyn365FO… Be a hero!Real CI/CD para MSDyn365FO… Be a hero!
Real CI/CD para MSDyn365FO… Be a hero!Demian Raschkovan
 

Similar a Kubernetes - The Cloud King (20)

Aplicaciones Absurdamente Rápidas con Quarkus.io
Aplicaciones Absurdamente Rápidas con Quarkus.ioAplicaciones Absurdamente Rápidas con Quarkus.io
Aplicaciones Absurdamente Rápidas con Quarkus.io
 
Inteligencia artificial in house con servicios cognitivos y docker
Inteligencia artificial in house con servicios cognitivos y dockerInteligencia artificial in house con servicios cognitivos y docker
Inteligencia artificial in house con servicios cognitivos y docker
 
Impulsando la innovación con arquitectura de contenedores - MXO202 - Mexico C...
Impulsando la innovación con arquitectura de contenedores - MXO202 - Mexico C...Impulsando la innovación con arquitectura de contenedores - MXO202 - Mexico C...
Impulsando la innovación con arquitectura de contenedores - MXO202 - Mexico C...
 
Net conf ar v2018 start up
Net conf ar v2018 start upNet conf ar v2018 start up
Net conf ar v2018 start up
 
Azure bootcampo 2019 start up_v1
Azure bootcampo 2019 start up_v1Azure bootcampo 2019 start up_v1
Azure bootcampo 2019 start up_v1
 
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...
 
BootCamp Online en DevOps (and SecDevOps) de GeeksHubs Academy
BootCamp Online en DevOps (and SecDevOps) de GeeksHubs AcademyBootCamp Online en DevOps (and SecDevOps) de GeeksHubs Academy
BootCamp Online en DevOps (and SecDevOps) de GeeksHubs Academy
 
El camino de Java a Kubernetes
El camino de Java a KubernetesEl camino de Java a Kubernetes
El camino de Java a Kubernetes
 
Plug&play:deploying big data_solutions
Plug&play:deploying big data_solutionsPlug&play:deploying big data_solutions
Plug&play:deploying big data_solutions
 
Html5 vs Flash
Html5 vs FlashHtml5 vs Flash
Html5 vs Flash
 
Francisco Javier Barrena | NestJS: Backends para javeros y punto-neteros con ...
Francisco Javier Barrena | NestJS: Backends para javeros y punto-neteros con ...Francisco Javier Barrena | NestJS: Backends para javeros y punto-neteros con ...
Francisco Javier Barrena | NestJS: Backends para javeros y punto-neteros con ...
 
NestJS: Backends en Node para Javeros y Puntoneteros
NestJS: Backends en Node para Javeros y PuntoneterosNestJS: Backends en Node para Javeros y Puntoneteros
NestJS: Backends en Node para Javeros y Puntoneteros
 
Re evolución robótica
Re evolución robóticaRe evolución robótica
Re evolución robótica
 
Orquestación de Microservicios Introducción a arquitecturas de desarrollo mod...
Orquestación de Microservicios Introducción a arquitecturas de desarrollo mod...Orquestación de Microservicios Introducción a arquitecturas de desarrollo mod...
Orquestación de Microservicios Introducción a arquitecturas de desarrollo mod...
 
Open Source Day Ayacucho Perú
Open Source Day Ayacucho PerúOpen Source Day Ayacucho Perú
Open Source Day Ayacucho Perú
 
Webinar Codemotion 2020 - Piratas del Cloud
Webinar Codemotion 2020 - Piratas del CloudWebinar Codemotion 2020 - Piratas del Cloud
Webinar Codemotion 2020 - Piratas del Cloud
 
DevOps Te Cambia la Vida - eComputing 2018-07-03
DevOps Te Cambia la Vida - eComputing 2018-07-03DevOps Te Cambia la Vida - eComputing 2018-07-03
DevOps Te Cambia la Vida - eComputing 2018-07-03
 
Real CI/CD para MSDyn365FO… Be a hero!
Real CI/CD para MSDyn365FO… Be a hero!Real CI/CD para MSDyn365FO… Be a hero!
Real CI/CD para MSDyn365FO… Be a hero!
 
Devops episodio 1. devOpsTnf
Devops episodio 1. devOpsTnf Devops episodio 1. devOpsTnf
Devops episodio 1. devOpsTnf
 
ATICA DevOps
ATICA DevOpsATICA DevOps
ATICA DevOps
 

Más de Francisco Javier Barrena

¡Cookiegeddon! Bye a las cookies de terceros y cómo afectará a tu software
¡Cookiegeddon! Bye a las cookies de terceros y cómo afectará a tu software¡Cookiegeddon! Bye a las cookies de terceros y cómo afectará a tu software
¡Cookiegeddon! Bye a las cookies de terceros y cómo afectará a tu softwareFrancisco Javier Barrena
 
Codemotion 2022 - API Security Workshop.pdf
Codemotion 2022 - API Security Workshop.pdfCodemotion 2022 - API Security Workshop.pdf
Codemotion 2022 - API Security Workshop.pdfFrancisco Javier Barrena
 
Welcome to Gotham - Nuevas formas ingeniosas y terroríficas de ciberataques
Welcome to Gotham - Nuevas formas ingeniosas y terroríficas de ciberataquesWelcome to Gotham - Nuevas formas ingeniosas y terroríficas de ciberataques
Welcome to Gotham - Nuevas formas ingeniosas y terroríficas de ciberataquesFrancisco Javier Barrena
 
Codemotion 2021 - The Rustalorian: Este es el camino
Codemotion 2021 - The Rustalorian: Este es el caminoCodemotion 2021 - The Rustalorian: Este es el camino
Codemotion 2021 - The Rustalorian: Este es el caminoFrancisco Javier Barrena
 
Deja de ser el rival más débil con DevSecOps
Deja de ser el rival más débil con DevSecOpsDeja de ser el rival más débil con DevSecOps
Deja de ser el rival más débil con DevSecOpsFrancisco Javier Barrena
 
Codemotion 2020 - Big Data en Ciberseguridad: mejor morir de pie que vivir ar...
Codemotion 2020 - Big Data en Ciberseguridad: mejor morir de pie que vivir ar...Codemotion 2020 - Big Data en Ciberseguridad: mejor morir de pie que vivir ar...
Codemotion 2020 - Big Data en Ciberseguridad: mejor morir de pie que vivir ar...Francisco Javier Barrena
 
TotoConf2020 - Técnicas OSINT que te dejarán con el PAPO torcido
TotoConf2020 - Técnicas OSINT que te dejarán con el PAPO torcidoTotoConf2020 - Técnicas OSINT que te dejarán con el PAPO torcido
TotoConf2020 - Técnicas OSINT que te dejarán con el PAPO torcidoFrancisco Javier Barrena
 
Ciberseguridad en el Cloud - ¿Y es que eso no puede hacerlo otro?
Ciberseguridad en el Cloud - ¿Y es que eso no puede hacerlo otro?Ciberseguridad en el Cloud - ¿Y es que eso no puede hacerlo otro?
Ciberseguridad en el Cloud - ¿Y es que eso no puede hacerlo otro?Francisco Javier Barrena
 
Angular 6 + Angular Elements: Write once, run anywhere
Angular 6 + Angular Elements: Write once, run anywhereAngular 6 + Angular Elements: Write once, run anywhere
Angular 6 + Angular Elements: Write once, run anywhereFrancisco Javier Barrena
 
Machine Learning ¿A TODO GAS? con GraalVM
Machine Learning ¿A TODO GAS? con GraalVMMachine Learning ¿A TODO GAS? con GraalVM
Machine Learning ¿A TODO GAS? con GraalVMFrancisco Javier Barrena
 

Más de Francisco Javier Barrena (11)

¡Cookiegeddon! Bye a las cookies de terceros y cómo afectará a tu software
¡Cookiegeddon! Bye a las cookies de terceros y cómo afectará a tu software¡Cookiegeddon! Bye a las cookies de terceros y cómo afectará a tu software
¡Cookiegeddon! Bye a las cookies de terceros y cómo afectará a tu software
 
Codemotion 2022 - API Security Workshop.pdf
Codemotion 2022 - API Security Workshop.pdfCodemotion 2022 - API Security Workshop.pdf
Codemotion 2022 - API Security Workshop.pdf
 
Semana de la I+D - Proyecto OPOSSUM
Semana de la I+D - Proyecto OPOSSUMSemana de la I+D - Proyecto OPOSSUM
Semana de la I+D - Proyecto OPOSSUM
 
Welcome to Gotham - Nuevas formas ingeniosas y terroríficas de ciberataques
Welcome to Gotham - Nuevas formas ingeniosas y terroríficas de ciberataquesWelcome to Gotham - Nuevas formas ingeniosas y terroríficas de ciberataques
Welcome to Gotham - Nuevas formas ingeniosas y terroríficas de ciberataques
 
Codemotion 2021 - The Rustalorian: Este es el camino
Codemotion 2021 - The Rustalorian: Este es el caminoCodemotion 2021 - The Rustalorian: Este es el camino
Codemotion 2021 - The Rustalorian: Este es el camino
 
Deja de ser el rival más débil con DevSecOps
Deja de ser el rival más débil con DevSecOpsDeja de ser el rival más débil con DevSecOps
Deja de ser el rival más débil con DevSecOps
 
Codemotion 2020 - Big Data en Ciberseguridad: mejor morir de pie que vivir ar...
Codemotion 2020 - Big Data en Ciberseguridad: mejor morir de pie que vivir ar...Codemotion 2020 - Big Data en Ciberseguridad: mejor morir de pie que vivir ar...
Codemotion 2020 - Big Data en Ciberseguridad: mejor morir de pie que vivir ar...
 
TotoConf2020 - Técnicas OSINT que te dejarán con el PAPO torcido
TotoConf2020 - Técnicas OSINT que te dejarán con el PAPO torcidoTotoConf2020 - Técnicas OSINT que te dejarán con el PAPO torcido
TotoConf2020 - Técnicas OSINT que te dejarán con el PAPO torcido
 
Ciberseguridad en el Cloud - ¿Y es que eso no puede hacerlo otro?
Ciberseguridad en el Cloud - ¿Y es que eso no puede hacerlo otro?Ciberseguridad en el Cloud - ¿Y es que eso no puede hacerlo otro?
Ciberseguridad en el Cloud - ¿Y es que eso no puede hacerlo otro?
 
Angular 6 + Angular Elements: Write once, run anywhere
Angular 6 + Angular Elements: Write once, run anywhereAngular 6 + Angular Elements: Write once, run anywhere
Angular 6 + Angular Elements: Write once, run anywhere
 
Machine Learning ¿A TODO GAS? con GraalVM
Machine Learning ¿A TODO GAS? con GraalVMMachine Learning ¿A TODO GAS? con GraalVM
Machine Learning ¿A TODO GAS? con GraalVM
 

Último

definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofJuancarlosHuertasNio1
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...JaquelineJuarez15
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersIván López Martín
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 

Último (20)

definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sof
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 

Kubernetes - The Cloud King

  • 1. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper
  • 2. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper Who’s that guy • Director de Innovación en Ingeniería del Software en Instituto Tecnológico de Informática @ITI_TIC • 7 años con proyectos comerciales • Actualmente en proyectos de I+D • Big Data, Machine Learning, Cloud Computing, Cyber Physical Systems, Embedded Systems… • Ex-CTO en www.onlyeco.com • Buscador de viajes ecosostenibles • Actualmente EcoDeveloper Advocate • Formador y ponente https://www.linkedin.com/in/fjbarrena https://twitter.com/DogDeveloper https://github.com/fjbarrena
  • 3. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper i+d en el iti
  • 4. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper kubernetes the cloud king
  • 5. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper qué es kubernetes • Kubernetes es un orquestador open source de contenedores Docker, desarrollado por Google • Ejecuta y administra aplicaciones dockerizadas en un clúster de CPUs o GPUs • Permite múltiples acciones, como: • Programación de despliegues • Escalado automático • Monitorización de contenedores • Etc… • Es ””interoperable”” entre proveedores cloud (Amazon, Azure, Google Cloud, Rackspace…) • Y por eso se ha convertido en el estándar de facto para desarrollos basados en cloud
  • 6. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper Como lleváis docker??
  • 7. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper docker (recordatorio) • Docker es una plataforma de software que permite empaquetar aplicaciones y todas sus dependencias para poder desplegarlas fácilmente • Estos paquetes reciben el nombre de contenedores
  • 8. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper Docker image • Docker permite describir un contenedor (en realidad es una imagen) a través de un fichero de descripción Dockerfile
  • 9. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper Docker image • Una imagen es un paquete que incluye todo lo necesario para ejecutar una aplicación • Código • Runtime • Libraries • Environment variables, archivos de configuración, etc. • Una imagen de Docker es de solo lectura • Las imágenes son en realidad un conjunto de capas que se van superponiendo las unas a las otras • Cada instrucción, es una nueva capa • Cuando una imagen se modifica, una nueva capa se crea
  • 10. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper Docker image
  • 11. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper Docker container • Un contenedor es una instancia ejecutable de una imagen • Es decir, a partir de una imagen puedo generar N contenedores que ejecuten el contenido de esa imagen • Los contenedores son: • Aislados por defecto (no se ven los unos a los otros) • Configurables: • Almacenamiento • Visibilidad • Redes • Volúmenes, etc. • Lo que defino es una imagen, lo que ejecuto es un contenedor
  • 12. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper ventajas de docker
  • 13. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper video de algo que de la impresión de escalar
  • 14. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper La arquitectura
  • 15. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper Por qué es importante kubernetes • Kubernetes es una herramienta muy potente para desplegar aplicaciones en producción • Tanto en entornos cloud, como en entornos on-premise • Se ha convertido en el core de los principales IaaS / PaaS • Se han construido un montón de aplicaciones que corren, monitorizan o usan Kubernetes • No se trata de una solución propietaria de Google • Forma parte de la Cloud Native Foundation (www.cncf.io) • Participan en su desarrollo • Google • Red Hat • Meteor • CoreOS • Huawei, etc.
  • 16. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper
  • 17. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper Por qué es importante kubernetes
  • 18. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper Donde puedo usar kubernetes • En Bare Metal. A pecho palomo, yo me lo guiso yo me lo como. Me compro un clúster de máquinas físicas y me lo instalo. • Suerte amigos • Virtualización On Premise. Utilizando algún proveedor, como por ejemplo OpenStack, VMWare o CloudStack • Soluciones Cloud. Lo más sencillo. Que me lo gestione otro • Google Container Engine • OpenShift • CoreOS • EKS (de Amazon) • CloudFoundry • AKS (de Azure), etc.
  • 19. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper Características principales de k8 • Escalado y autoescalado • Aumenta o disminuye el número de contenedores necesarios en función del uso de CPU • Escalado vertical • El escalado puede ser manual o automático • Permite describir reglas para configurar el escalado
  • 20. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper El escalado No es mágico • Kubernetes nos permite escalar nuestra aplicación • Pero para eso nuestra aplicación debe estar diseñada teniendo en cuenta que va a escalar • La clave para desarrollar aplicaciones escalables fácilmente es: • Los contenedores que escalan no deben contener estado • Las aplicaciones deben seguir un paradigma de desacoplamiento frontend/backend • Si es posible, utilizad tecnologías de frontend en el cliente (React, Angular,Vue…) • Desarrollad vuestros contenedores como si pudieran morir en cualquier momento
  • 21. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper Pero paco, si las cpus las usamos así como vamos a… Francisco Javier Barrena Castillo - @DogDeveloper
  • 22. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper
  • 23. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper Características principales de k8 • Descubrimiento de servicios y balanceo de carga • K8s asigna a los contenedores su propias direcciones IP • También un nombre DNS único para un conjunto de contenedores • K8s se ocupa del balanceo de carga, solo tenemos que configurarlo • Autorreparación • Shit happens. Los contenedores caen. • En caso de fallo, K8s se ocupa de reiniciarlo automáticamente • A veces no son los contenedores los que caen, a veces es el propio K8s • Incluso en estos casos, K8 se autorrepara • Bueno… con alguna salvedad que veremos después
  • 24. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper Características principales de k8 • Despliegues y rollbacks automáticos • Cuando actualizamos un contenedor, o cambia su configuración, K8 despliega los cambios de forma progresiva • Mientras efectúa los cambios, monitoriza la salud de los contenedores, asegurando que no mata todas las instancias al mismo tiempo • En caso de fallo, hace un rollback a los contenedores de la versión anterior • Planificación • K8s se encarga de decidir qué nodo ejecutará qué contenedor • Esta decisión se hace en función de los recursos que requiera, y a otras restricciones (generalmente de localidad) • Mezcla cargas de trabajo críticas y best-effort para favorecer la utilización y el ahorro de recursos • Se puede configurar el planificador en base a nuestras necesidades
  • 25. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper Características principales de k8 • Gestión y configuración de secrets • Los contenedores Docker son geniales, pero son demasiado transparentes • Históricamente, si un contenedor necesita una contraseña, esta se suministra como parámetro de entrada
  • 26. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper
  • 27. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper Características principales de k8 • Gestión y configuración de secrets (cont.) • En K8s esa información se almacena en secrets • Tanto la configuración de la aplicación, como los secrets, se despliegan y se actualizan sin tener que reconstruir la imagen Docker, ni exponer la información • Orquestación del almacenamiento • Uno de los puntos calientes de estas arquitecturas descopladas y distribuidas es la gestión del almacenamiento • K8s implementa un sistema de volúmenes que permite configurar el almacenamiento, y asociarlo a los contenedores. • Ese almacenamiento puede ser de varios tipos, puede ser local, estar en AWS o en un sistema de almacenamiento en red como NFS
  • 28. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper instalación de kubernetes
  • 29. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper
  • 30. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper instalación de kubernetes para trastear • Si vas a trastear con Kubernetes, mejor en Windows o en Mac • Es mucho más sencillo configurar un entorno de desarrollo o pruebas • Si estás en Ubuntu… • Te lo vas a tener que currar más • Si quieres saber cómo se instala en Ubuntu tenemos un curso que empieza en unas pocas semanas… • Kubernetes, from zero to hero • https://www.iti.es/oferta-formativa/kubernetes/ • 24 horas de curso • Descuentos para asociados
  • 31. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper Kubernetes en mac • Kubernetes funciona sobre Docker • Así que primero hay que instalar Docker Desktop • https://www.docker.com/products/docker-desktop • Descargar y seguir las instrucciones • Una vez instalado y arrancado, pulsamos sobre el icono de la ballenita de Docker
  • 32. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper Kubernetes en mac • Pulsamos sobre la opción ‘Kubernetes’. Aparecerá una ventana de confirmación para la activación de Kubernetes • Si no funciona al pinchar sobre Kubernetes • Shit happens… • Pinchamos sobre Preferences, y seleccionamos la pestaña ‘Kubernetes’
  • 33. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper Kubernetes en mac
  • 34. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper Kubernetes en mac
  • 35. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper Kubernetes en mac
  • 36. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper Kubernetes en mac
  • 37. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper Arquitectura básica de kubernetes
  • 38. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper Arquitectura
  • 39. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper Como funciona kubernetes • Kubernetes es un sistema muy complejo, especialmente si lo comparamos con sus predecesores como Docker Swarm • Para entender bien como funciona Kubernetes por dentro, debemos conocer los conceptos y principios subyacentes
  • 40. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper El estado deseado • El Desired State es un de los conceptos más core de Kubernetes • La idea está en que tú defines el estado deseado de un contenedor (en realidad de un Pod, luego veremos lo que es) • Kubernetes siempre tratará de que tu contenedor se encuentre en el estado deseado • De modo, que si falla o el contenedor deja de funcionar, Kubernetes recreará el contenedor basándose en la definición del estado deseado • ¿Quién se encarga de velar por los contenedores? Kubernetes Master, como parte del Kubernetes Control Plane. • Kubernetes ofrece un CLI (kubectl) que nos permite modificar el estado deseado de un contenedor por línea de comandos
  • 41. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper Ejemplo de Deployment.yaml
  • 42. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper Kubernetes objects
  • 43. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper Kubernetes objects • El estado de las entidades del sistema de cualquier instante de tiempo se representa con Kubernetes Objects • Al mismo tiempo, actúan como una capa adicional de abstracción de Docker • De modo que podemos interactuar directamente con instancias de Kubernetes Objects, en lugar de con contenedores • Esto es interesante porque, aunque K8s se desarrolló específicamente para Docker, no se cierra la posibilidad de que admita más tipos de contenedores (de hecho, ya lo hace) • Con Kubernetes Objects nos aseguramos de que, sea cual sea el sistema de contenedores subyacente, nuestra configuración no cambiará • Lo Kubernetes Objects básicos son los siguientes
  • 44. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper pod • Un Pod es la unidad mínima de despliegue de K8s en un nodo • Contiene uno o más contenedores que deben ejecutarse juntos • Puedo definir un Pod como quiera, incluso con contenedores que no tendrían porqué ejecutarse juntos • El modelo es abierto, me permite configurar lo que quiera • Pero la idea de un Pod es que contenga contenedores relacionados, para aprovechar el principio de localidad • Además, es la unidad mínima de replicamiento, por lo que también tiene sentido desde ese punto de vista • Un Pod comparte almacenamiento y dirección IP • Los Pods son efímeros. Cuando un Pod se cae o se cierra, toda la información que contienen desaparece
  • 45. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper Definición de un pod
  • 46. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper Creación y gestión de un pod • Creación de un pod (asumiendo fichero nginx.yaml) • Listar todos los pods
  • 47. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper Creación y gestión de un pod • Obtener en qué nodo del clúster se ejecutan los pods • Eliminar un pod
  • 48. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper Creación y gestión de un pod • Obtener los logs de un pod • Conectarme a un pod (entrar a la consola)
  • 49. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper labels • Los Labels nos permiten etiquetar los recursos de K8s, como por ejemplo un Pod, con información del tipo clave/valor • Sirven para seleccionar recursos, como por ejemplo visualizar los Pods que tienen un label con un determinado valor
  • 50. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper labels • Los labels se definen en el fichero YAML, en la sección metadada, aunque también podemos añadir labels a elementos ya creados • Podemos mostrar los labels así
  • 51. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper labels • Los labels se definen en el fichero YAML, en la sección metadada, aunque también podemos añadir labels a elementos ya creados • Podemos mostrar los labels así
  • 52. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper volumes • Los Pods son efímeros • La información que almacenemos en ellos no es persistente • Pensad en que los Pods son la RAM de Kubernetes • Un volumen es un almacenamiento persistente que se puede asociar a un Pod • Pensad en que los volúmenes son los discos duros de Kubernetes • En realidad, el concepto de volumen está totalmente fusilado del propio Docker • Los volúmenes se definen en el mismo fichero YAML del Pod
  • 53. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper volumes
  • 54. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper volumes • En la sección volumes se definen los volúmenes disponibles • En la sección volumeMounts indicamos los puntos de montaje • Existen varios tipos de volúmenes • hostPath • Corresponde a un directorio o fichero del nodo donde se crea el Pod • En nuestro ejemplo, se ha montado en el directorio /home del contenedor • Solo es interesante cuando el Pod no va a estar en multinodo ya que • La información no se replica entre nodos • Por tanto, el contenido puede variar (y variará) dependiendo del nodo donde se aloje POD 1 10.1.1.1 Fichero1.zip POD 2 10.1.1.3 Fichero2.zip https://kubernetes.io/docs/concepts/storage/volumes/#types-of-volumes
  • 55. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper volumes • Existen varios tipos de volúmenes (continuación) • gitRepo (deprecated L) • El contenido corresponde con el clone a un repositorio de GitHub • Súper interesante para CI/CD • Aún está disponible, pero en futuras versiones será eliminado • La alternativa, crear un emptyDir y hacer el clone del repositorio a mano • emptyDir • El contenido de este volumen se elimina cuando el pod se cierra o se cae • Útil para compartir información entre contenedores de un mismo pod • azureDisk, awsElasticBlockStore, gcePersistentDisk • nfs • El contenido de este volumen se engancha a un NFS (Network File System) • Similar a emptyDir, pero los datos se mantienen cuando el Pod se cierra • Similar a hostPath, pero sin la restricción de multinodo al ser un sistema en red https://kubernetes.io/docs/concepts/storage/volumes/#types-of-volumes
  • 56. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper volumes • Existen varios tipos de volúmenes (continuación) • secret • Volumen pensado para el paso de información sensible • Se pueden almacenar secrets en Kubernetes API y montarlos como ficheros para usarlos en los Pods directamente • Esto es interesante porque no acoplamos el sistema de secrets de Kubernetes a nuestra aplicación • Para ella se trata de un fichero ’normal’ • Implementados sobre tmpfs (RAM-backed filesystem), por lo que la información nunca es almacenado de modo permanente • Requiere de la creación previa de un secret. Se puede crear a través del siguiente comando https://kubernetes.io/docs/concepts/storage/volumes/#types-of-volumes
  • 57. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper volumes • Existen varios tipos de volúmenes (continuación) • secret (continuación) • La definición del volumen podría ser la siguiente à • Los secrets se consumen directamente así ! https://kubernetes.io/docs/concepts/storage/volumes/#types-of-volumes
  • 58. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper ¿me vale solo con un pod? Pod 1 Frontend Pod 3 Backend Pod 2 Backend 10.1.1.1 10.1.1.2 10.1.1.3
  • 59. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper ¿me vale solo con un pod? Pod 1 Frontend Pod 3 Backend Pod 4 Backend 10.1.1.1 10.1.1.22 10.1.1.3
  • 60. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper ¿me vale solo con un pod? Pod 1 Frontend Pod 5 Backend Pod 4 Backend 10.1.1.1 10.1.1.22 10.1.1.53
  • 61. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper service • Un servicio define un conjunto lógico de Pods y sus políticas de acceso • Si hay más de un pod, balancea la carga entre ellos • Se trata de una abstracción que define un conjunto de Pods que implementan típicamente un microservicio • Los servicios ofrecen una dirección virtual (CLÚSTER-IP) y un nombre que identifica al conjunto de Pods que representa • Se implementa con IPTABLES; por lo que estos nombres solo valen dentro de kubernetes • Si los quiero también fuera, tengo que instanciar y configurar un DNS… • La conexión al servicio se puede realizar desde otros pods o desde el exterior
  • 62. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper service
  • 63. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper service • Existen diferentes implementaciones de servicios • ClusterIP • NodePort • LoadBalancer • Cada una tiene sus características, y seleccionaremos la que queramos en función de nuestras necesidades
  • 64. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper clusterip • Permite únicamente el acceso interno entre distintos servicios • Es el tipo por defecto • Insisto, ¡no permite acceso externo al servicio! • Aunque hay trukis… (creando un proxy) • Permite acceso desde el exterior si configuramos nosotros un proxy
  • 65. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper clusterip
  • 66. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper nodeport • Abre un puerto para que el servicio sea accesible desde el exterior • Por defecto, el puerto generado está entre el 30.000 y el 40.000 • Para acceder al servicio, usamos la IP del Kubernetes Master y el puerto asignado • Es una multiplexación a nivel de puerto con la IP del Kubernetes Master
  • 67. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper nodeport
  • 68. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper nodeport
  • 69. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper nodeport
  • 70. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper loadbalancer • ‘Solo’ disponible para proveedores Cloud • Provisiona un balanceador de carga para el servicio • El tipo de balanceador dependerá del proveedor cloud donde tengamos Kubernetes
  • 71. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper loadbalancer • Es posible configurar K8s para poder usar LoadBalancer en Bare Metal • Para conseguirlo se debe utilizar Ingress, aunque tiene algunas restricciones • Solo soporta tráfico HTTP • Solo para los puertos 80 y 443 • La prioridad de Kubernetes no es el On Premise, son los vendors de servicios Cloud • Te lo puedes montar como nos lo montábamos antes, configurando nuestro propio balanceador de carga como un Pod+Servicio más de Kubernetes https://medium.com/@maniankara/kubernetes-tcp-load-balancer-service-on-premise-non-cloud-f85c9fd8f43c
  • 72. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper namespaces • Instalar un clúster de Kubernetes On Premise (por ejemplo, sobre bare metal o sobre Open Stack) no es sencillo • Hay un montón de consideraciones de sistemas que hay que tener en cuenta • No es cómodo ni óptimo, por tanto, tener múltiples clústers de Kubernetes corriendo en una empresa • Es más caro de instalar • Es más caro de mantener • La única justificación puede ser la de aislar el entorno, y la visibilidad, para diferentes proyectos • Un namespace es un clúster de K8s virtual que corre sobre un clúster físico. • De este modo no tenemos que mantener múltiples clústers de K8s
  • 73. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper namespaces • Podemos consultar los namespaces activos en nuestro clúster físico a través del siguiente comando
  • 74. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper namespaces • K8s tiene por defecto 3 namespaces • default: • namespace por defecto para elementos que no tengan definido ningún namespace concreto • kube-system • Namespace para los elementos creados por el Kubernetes System. Solo para administración del clúster. • kube-public • Namespace accesible por todos los usuarios • Incluso por aquellos que no están autenticados • Se utiliza habitualmente para el uso del propio clúster físico, en los casos en que se quiera compartir algún recurso entre namespaces • Por ejemplo, todos mis namespaces necesitan un Kafka, porque es una tecnología que forma parte de mi stack tecnológico • En vez de instanciar un Kafka en cada namespace, puedo instanciarlo en kube-public • De ese modo, el resto de namespaces tendrán acceso a Kafka • Otro ejemplo: Sonar
  • 75. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper namespaces • Un namespace se puede definir en un fichero YAML o por línea de comandos
  • 76. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper Kubernetes controllers • Estos son los conceptos básicos de Kubernetes • Son los building blocks sobre los cuales se construyen el resto de elementos • Como construir cosas from the scratch es duro, K8s proporciona un conjunto de objetos preconfigurados que se encargan de mantener el estado deseado y ofrecen características adicionales. • Los Controllers más útiles son: • ReplicaSet • Deployment • StatefulSet • DaemonSet • Job
  • 77. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper Replica set • ReplicaSet asegura que siempre se ejecute un número de réplicas de un determinado pod. • Asegura que hay un conjunto mínimo de pods que están siempre funcionando y disponibles • Útil para: • Evitar caídas de servicio • Tolerancia a errores • Escalabilidad dinámica • Como todo en K8s, los ReplicaSets se definen en un fichero YAML
  • 78. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper Replica set Número de pods mínimos que van a estar siempre en ejecución Seleccionamos los pods que vamos a replicar y controlar Definición de pods. No todos tienen porque aplicar al ReplicaSet, solo aquellos que seleccionemos
  • 79. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper Replica set • Registrar un ReplicaSet en K8s • Obtener todos los ReplicaSets
  • 80. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper deployment • El deployment es la unidad de más alto nivel que podemos gestionar en Kubernetes • Permite definir diferentes funciones • Control de réplicas • Escalabilidad de pods • Actualizaciones • Despliegues automáticos • Rollback a versiones anteriores • En realidad es un wrapper de un ReplicaSet • ¿cómo se define? • Con un YAML (kilométrico), por supuesto
  • 81. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper deployment Cuántos ReplicaSets antiguos queremos conservar para poder hacer rollback Modo de actualización • RollingUpdate: actualiza los pods a la nueva versión • Recreate: elimina los pods antiguos y crea los nuevos
  • 82. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper deployment • Como se aplica un deployment en Kubernetes • Como se consultan
  • 83. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper deployment • Como se escalan con una regla estática • Como se escalan con una regla dinámica • Nota: asume que está activada la opción de horizontal pod autoscaling en tu clúster https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/
  • 84. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper Kubernetes dashboard • Salvo que seas Sergio Talens, la consola se te va a hacer bola • Para un consumo de la información más amable (aunque menos eficaz), se pueden instalar herramientas externas al Core de Kubernetes • Existen muchas herramientas, la mayoría de ellas libres, pero una de las más extendidas es Kubernetes Dashboard • La instalación y (especialmente) acceso al Kubernetes Dashboard es ’peculiar’ • A continuación un paso a paso…
  • 85. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper Kubernetes dashboard • Abrimos la consola e instalamos Kubernetes Dashboard • Arrancamos la UI usando el siguiente comando • Para acceder al Dashboard copiamos la siguiente dirección
  • 86. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper Kubernetes dashboard
  • 87. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper Kubernetes dashboard
  • 88. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper Listamos los secrets disponibles en k8s
  • 89. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper obtenemos el token secret
  • 90. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper introducimos el token…
  • 91. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper Y ya tenemos acceso al dashboard…
  • 92. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper video de algo que de la impresión de escalar
  • 93. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper Nos queda muuuuucho que ver LOGGING MONITORING SECURITY AUTHENTICATION NETWORKING CI/CD SERVICE MESH TOOLS TESTING SERVERLESS REMOTE DEBUGGING REMOTE PROFILING
  • 94. Copyright 2019-2020 Instituto Tecnológico de Informática (ITI). Prohibida la reproducción total o parcial sin permiso del ITI Francisco Javier Barrena Castillo - @DogDeveloper Gracias