50 dias de Kubernetes
Kubernetes es un orquestador de contenedores. Kubernetes se abrevia como K8S por el hecho de que hay 8 letras entre la K y la s en la palabra de origen griego Kubernates que significa “timón”. Es un proyecto que inicio en Google pero ahora pertenece a la CNCF fue programado en el lenguaje de programación Go inicialmente por Brendan Burns, Brian Grant, David Oppenheimer, Eric Brewer y John Wilkes.
El repositorio de Kubernetes esta alojado en Github Kubernetes y la página oficial del proyecto es kubernetes.io
Los 50 días de Kubernetes es la forma en que pienso aprenden esta tecnología aprovechando los recursos que brinda Microsoft Azure en la ruta conocida como 50 days from zero to hero with Kubernetes usare el #tag #50diasdek8s en Twitter para compartir mis avances si asi lo deseas puedes unirte. Mi propósito es básicamente pasar a algo más allá del hola mundo usando principalmente C#, ASP.NET Core, Docker y Kubernetes.
Día 1: Conociendo nuevos animales
El recurso para este dia es un libro para niños (esto por las imágenes pero no por el contenido) Phippy Goes to the Zoo en el cuál se explican algunos conceptos básicos de Kubernetes. Para mi algunos de estos conceptos no me hacen sentido aun pero espero que pronto se vuelvan mas relevantes
-
Pod : Un Pod es responsable de ejecutar uno o más contenedores
-
ReplicaSet:
-
Deployment
-
DeamonSets
-
Ingresses : Por ahora veo esto como un balanceador de carga.
-
CronJobs : Entiendo que ejecutan tareas periódicas
-
CRD Custum Resource Definition
También una version en video
Por lo que he entendido Kubernetes no esta asociado directamente con Docker y puede manejar otros tipos de contenedores pero por fines prácticos he elegido Docker como mi plataforma de contenedores. He instalad Docker Desktop con la opción de contenedores para Linux en mi “superpoderosa máquina Lenovo Ideapad 320 con 8GB de RAM y Windows” va muy lento pero anda. Adicionalmente he activado la opción de Kubernetes en la configuración de Docker Desktop y ahora veo que tengo unas imágenes de Docker relacionadas a Kubernetes que yo no descargue y la herramienta de linea de comandos kubectl
>docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
k8s.gcr.io/kube-proxy v1.15.5 cbd7f21fec99 3 months ago 82.4MB
k8s.gcr.io/kube-controller-manager v1.15.5 1399a72fa1a9 3 months ago 159MB
k8s.gcr.io/kube-apiserver v1.15.5 e534b1952a0d 3 months ago 207MB
k8s.gcr.io/kube-scheduler v1.15.5 fab2dded59dd 3 months ago 81.1MB
docker/kube-compose-controller v0.4.23 a8c3d87a58e7 8 months ago 35.3MB
docker/kube-compose-api-server v0.4.23 f3591b2cb223 8 months ago 49.9MB
k8s.gcr.io/coredns 1.3.1 eb516548c180 12 months ago 40.3MB
k8s.gcr.io/etcd 3.3.10 2c4adeb21b4f 14 months ago 258MB
k8s.gcr.io/pause 3.1 da86e6ba6ca1 2 years ago 742kB
También descargado unas imágenes de Docker para .NET Core mediante el comando docker pull mcr.microsoft.com/dotnet/core/sdk:3.1
>docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mcr.microsoft.com/dotnet/core/sdk 3.1 2fe8fe202baf 2 weeks ago 689MB
mcr.microsoft.com/dotnet/core/aspnet 3.1 5b704ff3cb6b 2 weeks ago 207MB
mcr.microsoft.com/dotnet/core/runtime 3.1 a708cda756ab 2 weeks ago 190MB
Dia 2 al 5: Fundamentos de Kubernates
El recursos para este periodo es una lista de reproducción en Youtube donde el co-fundador del proyecto Kubernetes Brendan Burns explica algunos conceptos. Kubernetes Basics
Aquí he descubierto que esta ruta de aprendizaje me llevará mas de los 50 días inicialmente marcados esto por mi desconocimiento en muchos temas. Por est motivo he tenido que agregar recursos adicionales El primer libro.
¿Qué es un cluster de Kebernetes? ¿ASP.NET Core cumple con los 12 puntos de las aplicaciones de 12 factores?
Días 6 - 1 : Conceptos fundamentales de Azure Kubernetes Services
Libros de Kubernetes “gratuitos”
Nuestros datos personales se han vuelto la moneda de cambio en estos tiempos modernos. Aquí te dejo unos libros o recursos que puedes obtener a cambio de tus datos personales como Nombre, Correo y teléfono. Yo sin pensarlo mucho he decido que vale la pena el intercambio
Kubernetes: Up and Running, Second Edition
Cloud Native DevOps With Kubernetes
Using .NET Core, Docker, and Kubernetes Succinctly
Cloud Native DevOps With Kubernetes
Creando un cruster de Kubernetes en Azure
Para crear un cluster de Kubernetes en Azure se puede usar el portal, las plantillas ARM y las linea de comandos o CLI.
Una vez que tienes instlada de CLI de Azure en tu equipo debes logearte con el comando az login
y completar confirmar el dispositivo en un navegador esto te regresa un json similar al que te muestro abajo
benjamin@laptop:~/source/repos/kuard$ az login
Abriendo en una sesión existente del navegador
You have logged in. Now let us find all the subscriptions to which you have access...
[
{
"cloudName": "AzureCloud",
"homeTenantId": "4de3de93b-4e4b-338e-b6d6-973d2760546d",
"id": "06eacb4a-292e-4fa0-92bf-b97d35f34aa4",
"isDefault": true,
"managedByTenants": [],
"name": "Pago por uso",
"state": "Enabled",
"tenantId": "4de6789-3e3b-789e-d2b2-789d2760877f",
"user": {
"name": "[email protected]",
"type": "user"
}
}
Lo primero que se debe crear es un grupo de recursos donde se ubicara el cluster de Kubernetes. Para crear un grupo de recursos en Azure con la linea de comandos se usa el comando az group create
y requiere por lo menos los parametros de nombre y la región de Azure donde se ubicara
az group create --name mi-grupo-de-recursos --location=centralus
Parsa crear un cluster de Kubernetes dentro de un grupo de recurso se usa el comando az aks create
especificando por lo menos el grupo de recursos y el nombre del cluster
az aks create --resource-group=mi-grupo-de-recursos --name=mi-cluster
Nota asegurate de revisar los valores default al crear el cluster porque ahi se encuentran el tamaño de las maquinas virtuales y el número de nodos. Puedes usar
az aks create --help
para ver la lista completa de opciones y los valores por default.