Kubernetes Primera Parte - Configuracion du Master y Slave Template, instalacion de containderd

En esta primera parte vamos a configurar nuestro Master y nuestro Template de Slave, asi como la instalacion de containerd, tambien vamos a crear varios ficheros de configuracion que van a ser la base para poder instalar en la segunda parte Kubernetes.

Vamos a utilisar el template de Ubuntu que hemos creado en sesiones anteriores asi que clonamos 2 veces el template.

Primero creamos el Master

 


Y luego creamos el template de los Slaves:


Ahora vamos a configurar nuestro Master, seleccionamos nuestro Master y entramos en la seccion Options, si hemos seguido el tutorial anterior, deberiamos tener algo asi :


Ahora vamos a configurar nuestro template de Slave, igual que antes seleccionamos nuestro slave y vamos a la seccion Options, ahi dentro vamos a modificar la opcion "Start / Shutdown order" y en "Startup delay" vamos a ingresar el valor 15 o el que les guste. Este valor hace que cuando reiniciamos nuestro servidor Proxmox, los Slaves de nuestro cluster Kubernetes van a iniciar 15 segundos despues de que el servidor arranque, esto dara tiempo a nuestro Master de iniciar tranquilamente para que luego los Slaves vengan a conectarse a el.


Ahora iniciamos nuestras VMs, el Master y el Template de nuestros Slaves.

Ahora nos conectamos via la consola a nuestras VMs e instalamos qemu-guest-agent como ya lo vimos en nuestro capitulo anterior.

sudo apt install qemu-guest-agent

y luego reiniciamos nuestras VMs

sudo reboot


 

A muchos nos gusta que la terminal autocomplete, asi como tambien nano u otro paquete que deseen por comodidad yo voy a instalar este paquete, si lo desean tambien pueden hacerlo

sudo apt install bash-completion nano

Ahora vamos a activar la coneccion via ssh en nuestras VMs, para eso vamos a editar el fichero sshd_config de la siguiente manera

sudo nano /etc/ssh/sshd_config

En la linea PasswordAuthentification cambiamos el valor de no a yes y deberia quedar asi en ambas VMs, el Master y el template de nuestros Slaves


Luego reiniamos el servicio o reiniciamos nuestra VM.

Ahora nos conectamos desde nuestra terminal linux preferida o via putty a nuestras 2 VMs, para conocer las IPs temporales en cada una de ellas vamos a la seccion Summary:


 Por ejemplo para nuestro master la ip es 192.168.1.15 entonces desde una terminal escribimos:

ssh xymox18@192.168.1.15

Obviamente deben remplazar xymox18 por el nombre de usuario que configuraron anteriormente.

Ahora vamos a darle una IP estatica a nuestro Master para eso vamos a la carpeta /etc/netplan, hacemos un backup del archivo 50-cloud-init.yaml y enseguida editamos el archivo

xymox18@k8s-master:~$ cd /etc/netplan/
xymox18@k8s-master:/etc/netplan$ ls
50-cloud-init.yaml
xymox18@k8s-master:/etc/netplan$ sudo cp 50-cloud-init.yaml 50-cloud-init.yaml.bck

Ahora ejecutamos :

xymox18@k8s-master:/etc/netplan$ sudo nano 50-cloud-init.yaml

 

El archivo deberia quedar como la imagen de arriba, pero deberian adaptarlo a su red. Luego de editarlo, guardamos y salimos. Recuenden esto solo en el Master.

Ahora probamos si nuestra configuracion esta bien para eso ejecutamos :

sudo netplan try

Y si se desconecta vamos a la seccion Sumary de nuestro Master y verificamos si tiene la IP 120 que le pusimos:


Si lo estan haciendo de forma remota, no se preocupen, 1 minuto despues va a revenir a la configuracion anterior es decir la IP 192.168.1.15.

Esta configuracion es en el caso que quieran darle una IP estatica a vuestro Master, otra forma seria devolviendo la configuracion inicial del backup al archivo original y luego asignarle una IP desde el Router y esto es lo que vamos a hacer a continuacion:

xymox18@k8s-master:/etc/netplan$ sudo cp 50-cloud-init.yaml.bck 50-cloud-init.yaml

 

Y ahora vamos a nuestro router y a nuestro Master le asginamos la IP 192.168.1.120 o lma que ustedes deseen:

Pueden usar cualquiera de los 2 metodos yo voy a optar por utilizar mi Router y luego de eso reiniciamos nuestro Master.

Luego de reiniciar vemos que nuestro Master ahora tiene la IP 120 asignada por nuestro router, y para hacer el SSH desde nuestra consola ahora usamos la IP 120


Ahora vamos a verificar nuestro Hostname y nuestro archivo hosts :

En el archivo hostname deberiamos tener k8s-master que es el nombre que le dimos al comienzo y dentro del archivo hosts deberiamos tener las 2 lineas que estan resaltadas, si no lo tienen deben agregarlo.

cat /etc/hostname
cat /etc/hosts


 

Ahora vamos a installar containerd, aqui hay una subtilidad, si instalamos el paquete que viene por defecto, vamos a tener en el futuo problemas de incompatibilidad entre containerd y kubernetes, asi que vamos a agregar el repositorio oficial de containerd(docker):

Vamos a realisar varias etapas:

xymox18@k8s-master:~$ sudo apt install apt-transport-https curl

xymox18@k8s-master:~$ sudo mkdir -p /etc/apt/keyrings

xymox18@k8s-master:~$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

xymox18@k8s-master:~$ echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

xymox18@k8s-master:~$ sudo apt-get update

xymox18@k8s-master:~$ sudo apt-get install containerd.io

xymox18@k8s-master:~$ systemctl status containerd

Luego de ejecutar estos comandos deberiamos obtener algo como esto


estas etapas las repetimos en nuestra VM Slave:

Y una vez acabada esta etapa deberiamos tener:


Ahora vamos a crear la configuracion por defecto de containerd, para eso si no existe la ruta /etc/containerd/ la creamos y si existe no hay problema, el archivo que se encuentra dentro va a ser reemplazado gracias al siguiente commando:

xymox18@k8s-master:~$ containerd config default | sudo tee /etc/containerd/config.toml

y lo mismo en nuetro Slave :

xymox18@k8s-slave:~$ containerd config default | sudo tee /etc/containerd/config.toml

Ahora vamos a editar el archivo config.toml en ambas VMs(Master y Slave)

con sudo nano /etc/containerd/config.toml

dentro del archivo vamos a buscar la seccion [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]

Y vamos a cambiar la opcion 

SystemdCgroup = false

a

SystemdCgroup = true

 Y deberian de quedar asi:


Verificamos que no tengamos swap en ambas VMs para eso usamos el comando :

free -m

y si en la salida tenemos lo mismo que en la imagen siguiente entonces estamos bien

 


En el caso contrario toca desactivar la swap, para eso editan el archivo fstab con el siguiente comando:

sudo nano /etc/fstab

y comentan la linea en la que figura la swap y reinician las VMs. Esto se hace porque Kubernetes tiene problemas cuando la swap esta activada.

Ahora vamos a activar el modo Bridge en nuestras VMs(Master y Slave) para eso vamos a editar en archivo /etc/sysctl.conf

sudo nano /etc/sysctl.conf

Para esto vamos a descomentar la linea net.ipv4.ip_forward=1, guardamos y el archivo nos deberia quedar asi:


Ahora vamos a crear el archivo k8s.conf en la carpeta /etc/modules-load.d/ de la siguiente manera, esto lo realizamos en el Master y Slave :

sudo nano /etc/modules-load.d/k8s.conf

Y dentro vamos a escribir br_netfilter

esto permite habilitar el modo Bridge dentro de nuestras VMs que es algo indispensable para que Kubernetes funcione. Los archivos nos deberian de quedar de la siguiente forma:


Guardamos, cerramos y reiniciamos las 2 VMs(sudo reboot).

Comentarios