Kubernetes est un système open source qui vise à fournir une « plate-forme permettant d’automatiser le déploiement, la montée en charge et la mise en œuvre de conteneurs d’application sur des clusters de serveurs ». Wikipédia

Nous allons procédé à l’installation de Kubernetes avec Kubeadm qui est un outil de déploiement permettant d’installer avec plus d’aisance un cluster a master unique.

Prérequis

  • Un ou plusieurs servers (Dans notre cas, on utilisera des CentOS 8)
  • Une quantité minimum de 2 GO de RAM sur chaque Serveur
  • Une quantité minimum de 2 Processeurs ou plus
  • Un nom d’hôte, adresse MAC et product_uuid uniques pour chaque server
  • Le swap de vos servers doit être désactivé pour un bon fonctionnement de vos kubelet
  • Des ports doivent êtres ouverts sur vos machines (Nous détaillerons lequel plus bas)

Installation

  • Container Runtimes

Sur chaque serveur nous devons installer un container runtimes. Un container permet d’exécuter des pods. Les pods sont les plus petits élément de la sphère de Kubernetes. Ils exitent plusieurs type de Container runtimes dans notre cas nous utiliserons Docker Engine. Nous allons donc procéder à l’installation de Docker sur notre CentOS 8 en suivant la Documentaion: Installer Docker Engine sur CentOS.

Utilisons les commandes suivantes pour lancer et activer le service Docker

sudo systemctl start docker
sudo systemctl enable docker

Vérifions que que docker a bien été activé avec cette commande

sudo systemctl status docker.service
On constate bien ici que Docker est bien en marche

Ensuite nous àllons passer à l’installation de Kubeadm, kubelet et kubectl.

  • Installation de Kubeadm, kubelet et kubectl

Lancer les comandes suivantes:

cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch
enabled=1
gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
exclude=kubelet kubeadm kubectl
EOF

sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes

sudo systemctl enable --now kubelet

Commande Importante à lancer avant la création d’un cluster kubernetes sur tout vos node

Désactivation du swap

sudo swapoff -a

Désactivation du firewalld

sudo systemctl disable firewalld
sudo systemctl stop firewalld

Création d’un cluster avec Kubeadm

  • Initialisation du server maitre (Node master)
sudo kubeadm init --pod-network-cidr 10.244.0.0/16 --apiserver-advertise-address=192.1XX.XXX.XX

192.1XX.XXX.XX – il s’agit là de l’addresse du node master

Vous aurez un retour pareil avant le prompte si votre initialisation à été un succès

L’initialisation du node master génère un token, qui permettra aux worker de pouvoir joindre le node maitre. Le token générer a une durée de validité de 23 heures. Sauvegarder la commander “Kubeadm join 192.168.7.156:6443 –to…” nous l’utiliserons pour permettre au noeud worker de joindre le master.

Vous pouvez générer un nouveau token en exécutant cette commande

kubeadm token create --print-join-command

Une foi le nœud master initialiser nous devons encore exécuter quelque commande avant d’utiliser notre cluster.

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

Vous pouvez voir que le nœud master a été créer en exécutant la commande suivante:

kubectl get nodes

Elle affiche aussi tout les nodes contenu dans le cluster Kubenetes.

Nous utilisons Weave Net pour la gestion du réseau de ports

Weave Net peut être installé sur votre cluster Kubernetes compatible CNI avec une seule commande sur le nœud master :

kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"

Maintenant que nous avons initialisé notre nœud master avec succès nous allons procédé à l’ajout des nœud Worker.

  • Ajout des nœuds worker au cluster

Pour ajouter les noeud worker au cluster nous utiliserons la commande donné après l’initialisation du noeud master.

kubeadm join 192.1XX.XXX.XX.X:6443 --token ad1qyb.eljsrfn7jz23s278 --discovery-token-ca-cert-hash sha256:ba04792bda149715eadc9d5548cf134ced558c10293591d0dc7c16a61542b6a6

Après l’exécution de cette commande sur vos different noeud de travail, vous pouvez constater que vos worker on été ajouter à notre cluster kubernetes. On exécute kubectl get nodes pour voir

Kubectl get nodes nous affiche les noeuds existant dans notre cluster k8s . localhost.localdomain est notre master et worker-k8s-1 est l’un de nos noeuds de travail.

Solution aux erreurs que vous pouvez rencontrer. lors de l’initialisation du nœud master.

Lors de l’initialisation du node master vous pouvez rencontrer de petit soucis.

[ERROR CRI]: container runtime is not running: output:

rm /etc/containerd/config.toml
systemctl restart containerd

[preflight] If you know what you are doing, you can make a check non-fatal with `–ignore-preflight-errors=…`

--ignore-preflight-errors=all

error execution phase kubelet-start: a Node with name “localhost.localdomain” and status “Ready” already exists in the cluster.

Cette peux subvenir quand vous essayer de joindre un nœud worker au nœud maitre. En réalité vous devez lancer la commande en assignant un nom à votre nœud avec le flag –node-name . Ici par exemple je lui ai donné le nom Worker1.

--node-name "Worker1"

The connection to the server localhost:8080 was refused – did you specify the right host or port?.

Vous pouvez avoir cette erreur par exemple en exécutant kubectl get node. Pour résoudre ce problème retaper les 3 commandes lister ici . Cette erreur s’affiche quand le kubctl ne trouve pas le fichier de configuration ~/.kube/config.


0 Comments

Leave a Reply

Avatar placeholder

Your email address will not be published. Required fields are marked *