Skip to content

marianod92/curso-kubernetes

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Configurando kubernetes

Para realizar los TPs vas a necesitar un cluster de kubernetes y el archivo de config para poder usar kubectl y comunicarte con el cluster. Hay varias alternativas a la hora de levantar un cluster:

  • User un servicio manejado: la mayoria de los cloud providers ofrecen un servicio de kubernetes manejado. Manejado quiere decir que ellos se encargan de mantener el cluster de masters (etcd, api server y demas) por vos. Ademas de eso, suelen prohibirte (algunos te lo permiten) hacer ssh a los nodos workers. Lo bueno de estos servicios es que son muy faciles de configurar y para lo que vamos a estar haciendo no van a tener mucho costo. El mas barato que hemos visto es Digital Ocean, por ~20usd mensuales pueden tener un cluster con mas que suficientes recursos para los TPs, de todas maneras se paga por uso y no necesitan tenerlo siempre levantado, pueden crear/eliminar para cada TP, si hacen eso les va a salir practicamente nada.
  • Cluster local: una alternativa gratis es levantar kubernetes en su maquina. Al estar en su maquina van a haber un par de cosas que no van a poder hacer, pero para el primer TP alcanza. Pueden usar kind, el unico requerimiento es tener Docker instalado. Una vez que lo instalan pueden crear un cluster con kind create cluster --name k8s y eso ya les va a dar un config file para usar con kubectl. Si no quieren usar kind pueden usar minikube, la diferencia principal es que minikube levanta una maquina virtual y corre los componentes del cluster ahi dentro.
  • Crear un cluster con kubeadm: si se sienten aventureros/as pueden crear el cluster de kubernetes desde cero por su cuenta usando kubeadm. Esto va a requerir crear un par de maquinas virtuales (en un cloud provider o localmente), inicializar el cluster en el nodo master y unir los workers al cluster.

TP1

En este TP la idea es familiarizarse con kubectl y el ciclo de vida básico de la creación de un pod y deployment. Tambíen se pide crear un pod multi-container para así aprender cómo los containers dentro del mismo interactúan entre sí.

  1. Listar todos los namespaces en un cluster
  2. Listar todos los PODS en todos los namespaces
  3. Listar los pods en un namespace en particular
  4. Crear un POD con 3 containers busybox que realizen los iguiente:
    • ls; sleep 3600
    • echo "Hello World"; sleep 3600
    • echo "Este es el 3er contenedor"; sleep 3600
  5. Una vez creados los mismos chequear su estado
  6. Crear un deployment llamado webapp con una imagen de nginx con 2 replicas. Luego:
    • Obtener el deployment creado y mostrar tus labels
    • Obtener el archivo yaml del deployment creado
    • Mostrar los pods corriendo del deployment
    • Escalar el deployment de 2 a 5 replicas y verificar que funciona correctamente
    • Obtener el estado del scale-up del deployment
    • Mostrar el replicaset creado por el deployment

TP2

En este TP vamos a seguir metiendonos en profundo con kubectl para seguir aprendiendo como manejar nuestros recursos. La idea es que sepan como acceder a un servicio del cluster que no tenga acceso desde afuera, aprendan a hacer nuevos rollouts, customizar estrategias de rolling update y definir probes de liveness y readiness para indicarle a k8s como validar el estado de su servicio. Para algunos de estos ejercicios van a usar Service de tipo NodePort para exponer a internet su servicio, si estan usando kind o minikube localmente pueden crearlo igual y accederlo desde su compu.

  1. Crear un Deployment con la imagen de nginx que escuche en el puerto 8080,
  2. Creen un Service que solo acepte trafico interno para su deployment de nginx,
  3. Hagan un port-forward al servicio para poder accederlo localmente,
  4. Modifiquen el Service para que ahora sea NodePort y accedan a su servicio sin usar port-forward (obtengan la info del nodo y el puerto),
  5. Actualizen el Deployment para que tenga una version distinta de nginx. Pueden buscar las versiones disponibles aca. Mientras hacen esa actualizacion, chequeen el status de los pods y replicasets,
  6. Actualizen ese deployment con una imagen invalida. Luego de ver que los pods no se pueden crear aborten el rollout actual,
  7. Escalen su Deployment a 6 replicas y:
    • Configuren el rolling update para que reemplaze de a 2 containers a la vez,
    • Actualizen la imagen y analizen como los pods y replicasets van cambiando,
    • Configuren el rolling update para que reemplaze un 50% de containers a la vez,
    • Vuelvan a actualizar la imagen y validen los cambios de pods y replicasets.
  8. Editen su Deployment y configuren distintos tipos de probes:
    • Agreguen un readiness probe de http que se ejecute despues de 1 segundo cada 5 segundos,
    • Agreguen un liveness probe de tcp que se ejecute despues de 5 segundos cada 3 segundos y que considere el servicio como no healthy despues de 3 fallas,

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • HTML 42.2%
  • Python 35.3%
  • JavaScript 11.0%
  • Dockerfile 7.1%
  • Ruby 4.4%