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