Aller au contenu

Kubernetes installation

Ce document décrit l'installation des composants requis pour la mise en place d'un cluster Kubernetes sur des machines Ubuntu 22.04.

Cette installation doit être effectuée sur chaque machine du cluster.

Prérequis

  • Host Linux compatible
  • 2 GB ou + de RAM par machine
  • 2 CPUs ou +
  • Connection réseau entre chaque machine du cluster (publique ou privée)
  • Hostname, adresse MAC et product_uuid unique pour chaque nœud
  • Certains ports doivent être ouvert, voir la documentation.
  • La mémoire SWAP doit être désactivée

SWAP

Il faut désactiver la mémoire SWAP de chaque machine du cluster

Bash
sudo swapoff -a
sudo sed -i '/\s\+swap\s\+/ s/^/#/' /etc/fstab

IPv4 forwarding

Exécuter les commandes suivantes

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

sudo modprobe overlay
sudo modprobe br_netfilter

# sysctl params required by setup, params persist across reboots
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables  = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward                 = 1
EOF

# Apply sysctl params without reboot
sudo sysctl --system

Installation de Containerd

Chaque nœud doit installer une container runtime interface. Dans le cadre de ce document, Containerd est utilisé.

Dans un premier temps, le dépôt apt de Docker doit être mis en place

Bash
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] 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

Containerd peut ensuite être installé

Bash
sudo apt-get install -y containerd.io

Suite à ça, le SystemdCgroup doit être activé avec les commandes suivantes

Bash
1
2
3
4
5
sudo mkdir -p /etc/containerd
sudo containerd config default | sudo tee /etc/containerd/config.toml > /dev/null
sudo sed -i 's/            SystemdCgroup = false/'\
'            SystemdCgroup = true/' /etc/containerd/config.toml
sudo systemctl restart containerd

Configuration

L'infrastructure école nécessite une configuration supplémentaire pour définir un miroir de registre afin de pouvoir pull les images depuis notre propre registre privé.

Il faut donc modifier manuellement le fichier de configuration de containerd sur chaque worker pour y ajouter les miroirs de registre ci-dessous.

Bash
sudo nano /etc/containerd/config.toml
TOML
1
2
3
4
5
6
...
      [plugins."io.containerd.grpc.v1.cri".registry.mirrors]

        [plugins."io.containerd.grpc.v1.cri".registry.mirrors."registry.computaceae-it.tech"]
          endpoint = ["http://registry.bota-hepia.ch"]
...
Bash
sudo systemctl restart containerd

Installation de Kubernetes

Cette section liste les étapes à effectuer pour l'installation de Kubernetes v1.30 sur une machine Ubuntu 22.04, avec kubeadm.

Kubernetes GPG Key

Il faut télécharger la clef Kubernetes GPG (GNU Privacy Guard) :

Bash
1
2
3
4
5
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl gpg

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

Kubernetes Repository

Il faut ajouter les répertoires de Kubernetes à notre manageur de paquets :

Bash
1
2
3
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg]'\
' https://pkgs.k8s.io/core:/stable:/v1.30/deb/ /'\
 | sudo tee /etc/apt/sources.list.d/kubernetes.list

Installation des composants K8s

Bash
1
2
3
4
5
6
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl

# (Optionnal) Auto-completion
kubectl completion bash | sudo tee /etc/bash_completion.d/kubectl > /dev/null

Installation de Helm

Helm est le manageur de paquet pour Kubernetes. Il facilite la mise en place d'application au sein du cluster. Son installation est recommandé sur les noeuds du plan de contrôle.

Bash
curl https://baltocdn.com/helm/signing.asc | gpg --dearmor \
| sudo tee /usr/share/keyrings/helm.gpg > /dev/null
sudo apt-get install apt-transport-https --yes
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/helm.gpg] https://baltocdn.com/helm/stable/debian/ all main" \
| sudo tee /etc/apt/sources.list.d/helm-stable-debian.list
sudo apt-get update
sudo apt-get install helm

# (Optionnal) Add the autocompletion
helm completion bash | sudo tee /etc/bash_completion.d/helm

Configuration de Kubernetes

Le cluster Kubernetes est désormais prêt à être mis en place. Veuillez-vous référer au guide Kubernetes à haute disponibilité pour les étapes suivantes à réaliser.

Ressources

Guides d'installation :

Helm :