Si vous être un développeur, vous avez sûrement donc utiliser docker, qui vous permet de déployer et gérer vos applications sous forme des conteneurs et ainsi vous facilite la vie.
Par contre avec plusieurs conteneurs, la gestion des conteneurs se complique de plus en plus.
Dans cet article nous allons parler de Kubernetes, les étapes d’installation et un exemple de déployer un serveur Web Nginx.
Qu’est ce que Kubernetes et kubeadm
Kubernetes est une solution d’orchestration des conteneurs. Il permet de faciliter la gestion des applications conteneurisés.
Kubernetes permet de faciliter le déploiement des applications, de mettre à l’échelle facilement les applications en fonction de la charge de travail des utilisateurs (Workloads), assure la Haute disponibilité et d’autre avantages.
kubeadm est l’outil qui va nous permettre de créer notre cluster Kubernetes et le gérer.
Prérequis pour installer Kubernetes
Nous allons passer maintenant aux étapes pour installer Kubernetes.
Avant de commencer, voici les prérequis à préparer :
- Les machine qui vont construite le cluster avec un OS compatible Linux comme Ubuntu et CentOS ( Dans mon cas j’utilise CentOS 7.9).
- Vous devez avoir au minimum 2 machines pour construire un cluster( 1 master et 1 Node). Vous pouvez avoir plusieurs Nodes, l’essentiel et d’avoir un master et au moins un Node.
- Configuration réseau: Chaque machine du cluster doit être configuré avec une adresse IP fix.
- 2 Go de la RAM ou plus
- 2 CPU ou plus
-Une connexion active entre les Nodes et master, dans mon cas mon cluster comporte un master et 2 Nodes :
Les étape à suivre pour créer un cluster Kubernetes
Etape 1: installer un container runtime
Kubernetes nécessite un container runtime pour fonctionner et docker est un choix largement utilisé.
Je ne vais pas expliquer les détails d’installation de docker dans ce guide, par contre vous pouvez jeter un coup d’œil ici.
Docker doit être installé sur tous les membres du cluster ( master + Nodes)
Etape 2: Installation de kubeadm, kubelet et kubectl
Ces outils sont essentiels pour configurer et gérer votre cluster Kubernetes.
-kubeadm : comme expliqué déjà, c’est l’outil qui gère le cluster
-kubelet: est le coposant avec lequel on va gérer nos pods. Il doit être installé sur toutes les machines du cluster.
-kubectl: C’est l’outil de ligne de commande qu’on va utiliser pour communiquer avec le clsuter.
L’installation de ces composants diffère d’un OS à l’autre, dans ce guide j’utilise Rocky Linux. C’est la même manip si vous utiliser un système RHEL ou CentOS Stream.
1- Désactiver SElinux sur toutes les machines du cluster. Je ne vais entrer dans les détails, Tous ce que vous devez savoir c’est que jusqu’à présent le support de SELinux n’est pas encore amélioré dans Kubelet. Donc il vaut mieux le désactiver.
2- Ajouter le dépôt de kubernetes :
Les actions ci-dessous à faire les 3 machines
Afin d’installer kubeadm, kubelet et kubectl nous avons besoin de créer le dépôt de kubernetes, pour cela, au niveau du répertoire /etc/yum.repos.d, créer le fichier « kubernetes.repo » avec le contenu ci-dessous :
#vi kuberenetes.repo
[root@master yum.repos.d]# cat kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://pkgs.k8s.io/core:/stable:/v1.28/rpm/ enabled=1 gpgcheck=1 gpgkey=https://pkgs.k8s.io/core:/stable:/v1.28/rpm/repodata/repomd.xml.key exclude=kubelet kubeadm kubectl cri-tools kubernetes-cni [root@master yum.repos.d]#
Sauvegarder le fichier et taper la commander ci-dessous pour s’assurer que le dépôt est bien accessbile :
Comme vous pouvez le constater, le dépîot kubernets est bien accessible. Nous pouvons installer donc kubeadm ( l’installation est à faire sur les 3 machines ) :
[root@node1]# yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
[root@node2]# yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
[root@node1 master]# yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
Ensuite démarrer le service kubelet :
#systemctl enable kubelet #systemctl start kubelet
Initialiser le cluster Kubernetes
L’initialisation du cluster kuberenetes permet d’exécuter des vérification pour s’assurer que le master est prête à fonctionner Kubernetes. Des erreurs seront affichées s’il y a un blocage.
voici la commander à démarrer ( Cela peut prendre plusieurs minutes ) :
#kubeadm init --pod-network-cidr=10.244.0.0/16
Si tous se passe bien, vous aurez à la fin l’output ci-dessous :
Your Kubernetes master has initialized successfully! To start using your cluster, you need to run the following as a regular user: mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config You should now deploy a pod network to the cluster. Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at: https://kubernetes.io/fr/docs/concepts/cluster-administration/addons/ You can now join any number of machines by running the following on each node as root: kubeadm join <master-ip>:<master-port> --token <token> --discovery-token-ca-cert-hash sha256:<hash>
Si vous souhaitez gérer votre cluster (via kubectl) avec un utilisateur no root, connectez-vous avec l’utilisateur concerné et exécutez les commandes ci-dessous, ces commandes donneles droits nécéssaire à l’utilisateur conerné.
Alternativement, si vous êtes root, il vous suffit d’exécuter la commande suivants :
export KUBECONFIG=/etc/kubernetes/admin.conf
3- Ajouter un add-on réseau :
Pour que les pods puisse communiquer, il faut leur affecter des adresses IP. Cependant nous vous inquiétez pas, vous n’avez pas à le faire à chaque création d’un pods, un add-on réseau prendra en charge la partie réseau des pods.
Pour devez choisir l’un des add-on lister ici.
Pour moi j’ai choisie Flannel, du coup je tape la commande ci-dessous comme demandé :
# kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml
Rejoindre les nodes au cluster
Maintenant il ne reste que d’ajouter mes nodes au clsuter. pour cela je me connectrer au nodes et je tape la commande ci-dessous :
# kubeadm join --token <token> <master-ip>:6443 --discovery-token-ca-cert-hash sha256:<hash>
Pour récupéré le « token » il suffit de taper la commande suivante au niveau du master :
# kubeadm token list
Quant au « hash », toujours au niveau du master, vous pouvez l’obtenir en exécutant la suite des commandes ci-dessous :
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | \
openssl dgst -sha256 -hex | awk '{print $2}'
Maintenant que j’ai tous les éléments je peux ajouter mes nodes avec la commande ci-dessous :
# kubeadm join --token t5o4iv.2fpvtco15pq2ailf <master-ip>:6443 --discovery-token-ca-cert-hash sha256:8cb2de97839780a412b93877f8507ad6c94f73add17d5d7058e91741c9d5ec78
Migrer CentOS 7 vers Rocky Linux 9
7zip: 9 Commandes utiles de les plus utilisés
Comment installer Docker sur Rocky Linux 9
mkfs : Création des systèmes de fichier
Fail2Ban : How to protect Linux services