Hace unos días publiqué la forma de instalar un ubuntu server en tu una Raspberry, podéis encontrar el post: https://www.apascualco.com/raspberry/instalar-ubuntu-server-en-una-raspberry-pi-4/.

Hoy toca instalar Kubernetes, en nuestro cluster y realmente la explicación será muy rápida, porque lo he reducido a dos scripts, la instalación de docker y la de Kubernetes

Para correr Kubernetes, necesitamos dos cosas: El container runtime y Kubernetes (lol).

En mi caso he elegido Docker, pero podéis usar cualquier de las otras dos opciones que tenéis en la web oficial de Kubernetes: containerd i cri-o.

Instalando docker

Cómo tenía que hacer esta operación en varias máquinas decidí crearme el script docker_install.sh

#!/bin/bash

sudo apt-get update && sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common gnupg2
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key --keyring /etc/apt/trusted.gpg.d/docker.gpg add -
sudo add-apt-repository "deb [arch=arm64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update && sudo apt-get install -y containerd.io=1.2.13-2 docker-ce=5:19.03.11~3-0~ubuntu-$(lsb_release -cs) docker-ce-cli=5:19.03.11~3-0~ubuntu-$(lsb_release -cs)
sudo cat <<EOF | sudo tee /etc/docker/daemon.json
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}
EOF
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo systemctl daemon-reload
sudo systemctl restart docker
sudo systemctl enable docker

sudo groupadd docker
sudo usermod -aG docker ${USER}
su -s ${USER}

Ojo, si usais el script en una arquitectura que no sea arm, no será muy agradable, para adaptarlo sólo cambiar arm por amd o lo que sea en vuestro caso y las versiones que queráis.

Realmente es lo que podemos encontrar en la guía de instalación de k8s y unos pasos más para generar el usuario y los grupos. De esta forma evitaremos el «no tienes permisos«

Instalando kubernetes

Exactamente el mismo argumento, instalación en mismas maquinas script que te crió. k8s_install.sh

#!/bin/bash

cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sudo sysctl --system
sudo apt-get update && sudo apt-get install -y apt-transport-https curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
cat <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl

sudo sed -i '$ s/$/ cgroup_enable=cpuset cgroup_enable=memory cgroup_memory=1 swapaccount=1/' /boot/firmware/cmdline.txt
sudo shutdown -r now

La última parte podéis no ponerla, es un problema que me ha pasado en todas las instalaciones y con esta linea añade el cgroup_momory, sin eso me devolvería un error al iniciar «kubeadm init»

Levantando Kubernetes

Ya lo tenemos instalado y si tienes un sólo nodo, podrás hacer un kubeadm init y aquí empezaría otra aventura, en mi caso, tengo dos nodos más que conectar, por lo tanto inicio Kube:

 sudo kubeadm init --pod-network-cidr=10.244.0.0/16

Esto nos permitirá después de lanzar flannel, nuestros nodos se conecten la mar de bien.

sudo kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

Pero Alberto que es flannel ? «flannel is a virtual network that attaches IP addresses to containers»

Deja una respuesta