Sommaire
Présentation
Vous avez tenté d’installer Kubernetes avec Docker comme Container Runtime mais ce fut un échec car vous avez rencontré les erreurs suivantes :- couldn't get current server API group list: Get "http://localhost:8080/api?timeout=32s": dial tcp [::1]:8080: connect: connection refused
- failed with error: Get "http://localhost:10248/healthz": dial tcp [::1]:10248: connect: connection refused
- [ERROR CRI]:
container runtime is not running:
Ce tutoriel est fait pour vous.
Dans ce tutoriel, nous allons installer et configurer un cluster Kubernetes pour réaliser un scénario d’orchestration de containers (Nous utiliserons Docker comme Container Runtime).
Nous verrons par la suite comment ajouter des nodes à un cluster Kubernetes.Pour finir, nous réaliserons un scénario d’orchestration pour déployer des containers. (Prochainement).
Ce tutoriel a été prévu pour Debian 11 et Ubuntu Server 22.04.
1) Préparation de l’environnement
Avant d’installer Kubernetes, il faut s’assurer que le système est correctement configuré.
Important : Toutes les commandes de ce chapitre seront exécutées en tant que root.
1.1) Configuration de l’heure
1 2 3 |
timedatectl set-timezone Europe/Paris hwclock -w timedatectl status |
1.2) Mise à jour des paquets
1 |
apt update -y && apt upgrade -y |
1.3) Installation de sudo
1 |
apt install -y sudo |
2) Prérequis
2.1) Docker
Avoir Docker d’installé.
Vous pourrez suivre ce tutoriel : Installer Docker
2.2) Installation des prérequis
1 |
sudo apt install -y git make apt-transport-https ca-certificates curl |
2.3) Désactivation du swap
1 |
sudo swapoff -a && sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab |
3) Installation de cri-dockerd
Nous aurons besoin d’installer Go pour installer cri-dockerd.
3.1) Téléchargement de Go
1 |
wget https://go.dev/dl/go1.21.3.linux-amd64.tar.gz |
3.2) Désinstallation des éventuelles anciennes versions de Go
1 |
sudo rm -rf /usr/local/go |
3.3) Installation de Go dans /usr/local
1 |
sudo tar -C /usr/local -xzf go1.21.3.linux-amd64.tar.gz |
3.4) Ajout de Go dans la variable PATH
1 |
export PATH=$PATH:/usr/local/go/bin |
Cette commande est importante si vous souhaiter appeler l’exécutable go sans spécifier son chemin complet /usr/local/go/bin/go.
L’installation de cri-dockerd fait appel à go sans spécifier le chemin complet.
3.5) Affichage de la version de Go
1 |
go version |
Important : Si la version ne s’affiche pas, cela signifie que Go n’est pas correctement installé.
3.6) Clonage du dépot de cri-dockerd
1 |
git clone https://github.com/Mirantis/cri-dockerd.git |
3.7) Installation de cri-dockerd
1 2 3 4 5 6 7 |
# Build cd cri-dockerd make cri-dockerd # Installation sudo mkdir -p /usr/local/bin sudo install -o root -g root -m 0755 cri-dockerd /usr/local/bin/cri-dockerd |
3.8) Activation du service cri-dockerd
1 2 3 4 |
sudo install packaging/systemd/* /etc/systemd/system sudo sed -i -e 's,/usr/bin/cri-dockerd,/usr/local/bin/cri-dockerd,' /etc/systemd/system/cri-docker.service sudo systemctl daemon-reload sudo systemctl enable --now cri-docker.socket |
4) Installation de Kubernetes
4.1) Ajout du dépôt de Kubernetes
1 2 3 |
sudo mkdir -m 755 -p /etc/apt/keyrings curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - sudo echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list |
4.2) Installation de Kubernetes
1 2 3 |
sudo apt update -y sudo apt install -y kubelet kubeadm kubectl sudo apt hold kubelet kubeadm kubectl |
4.3) Activation de l’autocompletion pour kubectl
1 2 3 4 5 6 7 8 |
# Pour tous les utilisateurs kubectl completion bash | sudo tee /etc/bash_completion.d/kubectl > /dev/null # Pour l'utilisateur en cours uniquement # echo "source <(kubectl completion bash)" >> ~/.bashrc # Pour un utilisateur spécifique uniquement # echo "source <(kubectl completion bash)" >> /home/user/.bashrc |
5) Initialisation du Master
5.1) Initialisation du Master
1 2 3 |
sudo kubeadm init \ --pod-network-cidr=10.244.0.0/16 \ --cri-socket unix:///var/run/cri-dockerd.sock |
6) Administration de Kubernetes
6.1) Récupération du fichier de configuration
1 2 3 |
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config |
7) Pod de gestion réseau
7.1) Ajout de pod pour la gestion du réseau
1 2 3 4 5 6 7 |
sysctl net.bridge.bridge-nf-call-iptables=1 kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml # si nécessaire kubectl edit cm -n kube-system kube-flannel-cfg # edit network 10.244.0.0/16 to 10.10.0.0/16 pour dashboard |
8) Ajout de nodes au cluster Kubernetes
Ajout de nodes au cluster
8.1) Ajout de nodes au cluster Kubernetes
1 2 3 |
kubeadm join 192.168.1.80:6443 --token dtjqeb.oidbk4xll8sswj0i \ --discovery-token-ca-cert-hash sha256:0559dcf4cedb5be68aa8b825c6c47d7cd6db133c81ef638649ae87be05f2cb29 \ --cri-socket unix:///var/run/cri-dockerd.sock |
9) Administration de Kubernetes
Plusieurs méthodes
9.1) Fichier de configuration
1 2 3 4 5 |
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config # Ou si le master est sur un serveur distant # ssh user@master "sudo cat /etc/kubernetes/admin.conf" >.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config |
9.2) Variables d’environnement
1 2 3 4 |
export KUBECONFIG=/etc/kubernetes/admin.conf #export $HOME/.kube/config # De façon permanente # echo 'export KUBECONFIG=$HOME/admin.conf' >> $HOME/.bashrc |
10) Gérer un cluster Kubernetes
Plusieurs méthodes
10.1) Lister les nodes
1 |
kubectl get nodes -A |
10.2) Lister les pods
1 |
kubectl get pods -A |
Voilà ! C’est terminé !
Vous avez enfin créé votre Cluster Kubernetes.
Il ne reste plus qu’à :
- Ajouter des Nodes à votre cluster
- Créer des pods
- Utiliser la section commentaires pour me faire part de vos remarques ou problèmes rencontrés.
- Visiter la page de la documentation officielle pour aller encore plus loin.
En savoir plus sur Jj World
Subscribe to get the latest posts sent to your email.
Laisser un commentaire