Cluster de Kubernetes para Laboratorio

introduccion a kubernetes

Ya venimos de una entrada de ansible donde vimos «cositas» y seguimos por algo más ambisioso, aunque claramente, la mejor forma de aprender no es solo saber como funcionan las cosas sino ponerlas a andar y que se rompa y solucionar. Aprovechando las maquinas creadas para el laboratorio anterior vamos a instalar kubernetes y armar nuestro claster.

Entonces entradas recomandas (aunque no tan necesarias):

Los equipos que voy a usar para trabajar en el laboratorio son:

k8s-master = 192.168.0.160

k8s-node1 = 192.168.0.161

k8s-node2 = 192.168.0.162

Necesitamos eliminar el swap (en todas las virtuales) y para eso vamos a hacer dos cosas. La primera ejecutar:

sudo swapoff -a

Este comando funciona pero al reinciar no da bola y no descubri por que…. en fin, editaremos el archivo: /etc/fstab y a la linea que dice swap le agregamos # al principio que es para comentar.

Ahora algo que es por de mas importante, los «DNS». Si estas en esta entrada ya sabes de que se trata un dns por lo que como vamos a trabajar en una red local necesitamos que un ping responda por ip y por nombre de equipo, para esto hay que editar el archivo:

sudo  nano  /etc/hosts

Al hacerlo nos vamos a encontrar con:

configuracion por defecto de hosts

y vamos a dejarlo asi:

Esta accion la tenemos que repetir en los otros dispositivos donde vamos a instalar el cluter siempre respetando la configuracion propia, esto quiere decir, que en nodo 2 tiene un localhost y debe responder a nodo 2 y no a k8s-master sino estmaos confundiendo las cosas.

Si todo va bien:

prueba de hosts

En todos las maquinas vamos a activar los módulos de Containerd que es el entorno de ejecución de contenedores estándar para Kubernetes. Para un funcionamiento fluido de este entorno de ejecución, se recomienda cargar los módulos del kernel overlayy . Para habilitarlos y cargarlos, ejecute los siguientes comandos: br_netfilter

sudo modprobe overlay
sudo modprobe br_netfilter

y luego creamos un archivo:

sudo tee /etc/modules-load.d/k8s.conf <<EOF
overlay
br_netfilter
EOF

Además vamos a preparar la red de los 3 nodos para que kubernetes no tenga drama en la comunicacion (en los 3 equipos igual):

sudo nano   /etc/sysctl.d/k8s.conf

dentro del archivo escribimos:

net.bridge.bridge-nf-call-iptables  = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward   = 1

y aplicamos cambios:

sudo sysctl --system

Te acordas que al principio te dije que tenias que leer un par de entradas? bueno, ahora te llego el momento de instalar docker en todos los equipos!

Tambien vamos a usar containerd y para eso, en todos los equipos debemos:

sudo mkdir /etc/containerd
sudo sh -c "containerd config default > /etc/containerd/config.toml"
sudo sed -i 's/ SystemdCgroup = false/ SystemdCgroup = true/' /etc/containerd/config.toml
sudo systemctl restart containerd.service

Ahora instalamos Kubernetes en todos los nodos:

sudo apt update && sudo apt upgrade -y

sudo apt install curl ca-certificates apt-transport-https  -y

curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.31/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg

echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.31/deb/ /" | sudo tee /etc/apt/sources.list.d/kubernetes.list

sudo apt update

Luego de actualizar instalamos las herramientas:

sudo apt install kubelet kubeadm kubectl -y

Ahora si, en el MASTER vamos a ejecutar:

sudo kubeadm init --pod-network-cidr=192.168.0.0/24

Lo que estamos haciendo es una red unica para los pods de kubernetes. Como estamos usando la red local y no es producción podremos usar el rango que veniamos trabajando. Al finalizar y si hicieron todo tal cual van a ver algo asi como:

cluster kubernetes instalado

Nos tenemos que guardar en un bloc de notas estos datos que mostre en la imagen anterior por que luego los vamos a utilizar!

Y ahora si, vamos a ingresar a los workers o sea al 192.168.0.161 y al 192.168.0.162 y los vamos a unir al cluster. Para eso, si te acordas que arriba te dije «guardate esto en un bloc de notas» es momento de usarlo:

Nodo1 seria mi primer worker
Nodo2 seria mi segundo worker

y para ver si todo esto es verdad vamos a ir al master y ejecutar:

COn esto ya tenemos nuestro cluster kubernetes configurado y funcional. Como se ve en la imagen anterior estamos tirando el comando kubectl get nodes en el servidor fisico k8s-master pero tambien lo podriamos hacer desde una maquina que administre el cluster y que el resultado sea:

Para esto en la maquina con la cual queremos administrar hay que ahcer una serie de pasos:

mkdir -p $HOME/.kube

aqui dentro nos vamos a copiar la config del master en el archivo config:

scp luiz@k8s-master/etc/kubernetes/admin.conf ~/.kube/config

Luego de eso en la terminal podemos escribir:

kubectl get nodes

Y tendriamos que ver los resultados como los mostre anteriormente.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *