/ORI-ARM-Cluster

Instalación de un cluster de Kubernetes en una instancia de Oracle Cloud Free.

Primary LanguageShell

ORI-ARM-Cluster

Vamos a crear un cluster de kubernetes gratuito, con K3S, en la nube always free de Oracle.

Creamos nuestra instancia

Vamos a comenzar a crear nuestra instancia, una vez hemos creado nuestra cuenta en Oracle Free Tier nos vamos a dirigir al buscador superior, y vamos a escribir instance.

Abrir menú de instancia

Una vez dentro, hacemos click en Create instance.

Crear instancia

Le asignamos un nombre a nuestra máquina.

Asignar nombre

Luego vamos directamente a la sección de crear nuestra imagen y el tipo de equipo. Primero vamos a establecer la imagen que usaremos, que será Ubuntu 20.04.

Imagen y máquina Imagen Ubuntu 20.04

Y a continuación configuramos nuestra máquina.

Máquina ARM 24GB y 4CPU

Luego vamos a crear nuestra red interna (primary network y subnet).

Creación de red

Importante, hay que descargar la clave pública, sino luego va a ser complicado conectarnos a nuestra instancia...

Descargamos clave

Por último, configuramos la capacidad de disco de nuestra máquina. La máxima capacidad por cada cuenta es de 200GB.

200GB

Una vez hemos seguido todos estos pasos, ya podemos crear nuestra instancia.

Abrimos puertos en la web de Oracle Cloud Free Tier

Una vez creada la instancia, tenemos que abrir los puertos de nuestra red para que Kubernetes pueda funcionar correctamente.

Dentro de nuestra instancia en la plataforma de Oracle, hacemos click en nuestra Virtual cloud network.

Virtual network

Se abrirá un nuevo menú donde podemos ver que existe nuestra subnet, hacemos click sobre nuestra subnet.

Subnet

Luego abrimos la Security list.

Security list

Y ahora sí, añadimos nuestras Ingress Rules, tienen que quedar tal que así.

Abrimos los puertos

Abrimos puertos dentro del sistema operativo

Primero actualizamos el sistema

sudo apt update && sudo apt upgrade -y

Abrimos los puertos de nuestro sistema; dependiendo del sistema operativo que estés corriendo tendrás que usar un comando u otro, aunque yo recomiendo abrirlos todos (usar todos los comandos).

sudo apt -y install firewalld
firewall-cmd --permanent --zone=public --add-port=6443/tcp
firewall-cmd --permanent --zone=public --add-port=443/tcp
firewall-cmd --permanent --zone=public --add-port=80/tcp
sudo firewall-cmd --reload
sudo ufw allow 6443
sudo ufw allow 443
sudo ufw allow 80
iptables -A INPUT -p tcp --dport 6443 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT

Podemos comprobar si se han abierto los puertos en esta web, aunque es posible que tarde en actualizarse. Yo recomiendo continuar con la instalación, y si luego hay problemas con los puertos entonces volver a este punto.

Instalamos Docker

Estos son los comandos para instalar Docker.

sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

También podemos agregar docker en un grupo de confianza, para que no tengamos que usar sudo cada vez que queramos usarlo.

sudo usermod -aG docker ${USER}
newgrp docker

Por último, actualizamos el sistema de nuevo

sudo apt update -y && sudo apt upgrade -y && sudo systemctl reboot -y

Instalamos k3s

curl -sfL https://get.k3s.io | sh -s

Comprobamos que kubectl funciona correctamente.

sudo kubectl get nodes -o wide

Damos permisos al config, y lo copiamos al directorio .kube

sudo chmod 644 /etc/rancher/k3s/k3s.yaml

mkdir ~/.kube
sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config

En la configuración, debemos añadir la línea insecure-skip-tls-verify: true

Y también comentar el certificado, como vemos en la imagen.

Config example

¡Listo!, ya podemos usar ese archivo de configuración para hacer uso de nuestro single-node cluster de Kubernetes.