Recherche de site Web

Installer le cluster Kubernetes à l'aide de Kubeadm dans RHEL


Configurer le cluster Kubernetes à l'aide de Kubeadm sous Linux

Dans cet article, nous allons découvrir l'installation d'un cluster Kubernetes à l'aide de Kubeadm dans RHEL 8 et ses clones comme AlmaLinux 8, CentOS 8 et Rocky Linux 8.

Avant de vous lancer, vous devez avoir une compréhension de base des concepts et de l'architecture de Kubernetes. Dans cet article, nous allons démontrer un cluster à deux nœuds.

Pour procéder à l’installation, nous avons besoin des exigences de base mentionnées ci-dessous.

  • Minimum 2 hôtes.
  • 2 processeurs.
  • 2 Go de mémoire physique (RAM).
  • 20 Go d'espace disque.
  • Connexion Internet pour télécharger les packages.

1. Configurez le nom d'hôte et l'adresse IP

Définissez le nom d'hôte et configurez les hôtes dans Master et Workers. Le fichier hosts du système d'exploitation est utilisé pour convertir les noms d'hôte ou les noms de domaine en adresses IP.

Ici, nous allons avoir deux hôtes :

  • ostechmaster - Maître
  • ostechworker - Ouvrier

Utilisez la commande ci-dessous pour définir le nom d'hôte, le redémarrage est requis après la définition du nom d'hôte.

hostnamectl set-hostname ostechmaster

Editez le fichier /etc/hosts :

vi /etc/hosts

Ajoutez le nom d'hôte et l'adresse IP du serveur et du client dans le fichier /etc/hosts :

Configurer le nom d'hôte et l'adresse IP

Effectuez un test ping pour garantir la connectivité :

[root@ostechmaster ~]# ping ostechworker
PING ostechworker (172.31.5.141) 56(84) bytes of data.
64 bytes from ostechworker (172.31.5.141): icmp_seq=1 ttl=64 time=0.472 ms
64 bytes from ostechworker (172.31.5.141): icmp_seq=2 ttl=64 time=0.492 ms
64 bytes from ostechworker (172.31.5.141): icmp_seq=3 ttl=64 time=1.43 ms
64 bytes from ostechworker (172.31.5.141): icmp_seq=4 ttl=64 time=0.425 ms

2. Désactivez SElinux

Désactivez SElinux dans Master et Workers, afin que tous les conteneurs puissent accéder facilement au système de fichiers hôte si SElinux est désactivé.
Créez 'SELINUX=disabled' dans le fichier de configuration /etc/selinux/config en utilisant l'éditeur vi. Le redémarrage est nécessaire pour refléter le changement SElinux.

[root@ostechmaster ~]# vi /etc/selinux/config

Désactiver SElinux

Assurez-vous de l'état de SElinux à l'aide de la commande ci-dessous.

[root@ostechmaster ~]# sestatus
SELinux status: disabled

3. Désactivez l'échange dans Master et Worker

Swap doit être désactivé sur tous les hôtes Kubernetes (Maître et Travailleurs). Il s'agit de la méthode de déploiement privilégiée par la communauté Kubernetes. Le service kubelet ne démarrera pas sur le maître et les nœuds de calcul si le swap n'est pas désactivé.

Exécutez la commande ci-dessous pour désactiver SWAP :

[root@ostechmaster ~]# swapoff -a && sed -i '/swap/d' /etc/fstab

4. Autoriser les ports requis dans le pare-feu

Pour que les composants Kubernetes interagissent entre eux, certains ports essentiels doivent être disponibles. Vous trouverez ci-dessous les ports à ouvrir pour bénéficier de la connectivité entre les composants Kubernetes.

Plan de contrôle/serveur maître :

ProtocolDirectionPort RangePurposeUsed By
TCPInbound6443Kubernetes API serverAll
TCPInbound2379-2380etcd server client APIkube-apiserver, etcd
TCPInbound10250Kubelet APISelf, Control plane
TCPInbound10259kube-schedulerSelf
TCPInbound10257kube-controller-managerSelf

Nœuds de travail :

ProtocolDirection Port RangePurposeUsed By
TCPInbound10250Kubelet APISelf, Control plane
TCPInbound30000-32767NodePort ServicesAll

Pour autoriser les ports requis via le pare-feu, exécutez les commandes suivantes.

Nœud maître :

[root@ostechmaster ~]# firewall-cmd --permanent --add-port=6443/tcp
[root@ostechmaster ~]# firewall-cmd --permanent --add-port=2379-2380/tcp
[root@ostechmaster ~]# firewall-cmd --permanent --add-port=10250/tcp
[root@ostechmaster ~]# firewall-cmd --permanent --add-port=10251/tcp
[root@ostechmaster ~]# firewall-cmd --permanent --add-port=10259/tcp
[root@ostechmaster ~]# firewall-cmd --permanent --add-port=10257/tcp
[root@ostechmaster ~]# firewall-cmd --reload

Nœud Worker :

[root@ostechworker ~]# firewall-cmd --permanent --add-port=10250/tcp
[root@ostechworker ~]# firewall-cmd --permanent --add-port=30000-32767/tcp
[root@ostechworker ~]# firewall-cmd --reload

Nous désactivons le pare-feu dans Master et Worker, à des fins de démonstration. Cependant, cela n’est pas recommandé pour la pratique de production en temps réel.

Utilisez les commandes ci-dessous pour arrêter et désactiver le pare-feu.

[root@ostechmaster ~]# systemctl stop firewalld
[root@ostechmaster ~]# systemctl disable firewalld

5. Installez Docker

Docker facilite la « construction » de conteneurs, tandis que Kubernetes permet de les « gérer » en temps réel. Pour empaqueter et expédier le logiciel, utilisez Docker. Pour lancer et faire évoluer votre application, utilisez Kubernetes.

Ajoutez un référentiel Docker sur toutes les machines du cluster.

Créez le fichier nommé docker.repo dans le répertoire /etc/yum.repos.d/ :

[root@ostechmaster ~]# vi /etc/yum.repos.d/docker.repo

Ajoutez-y les lignes suivantes :

[docker]
baseurl=https://download.docker.com/linux/centos/8/x86_64/stable/
gpgcheck=0

Appuyez sur la touche ESC et tapez :wq pour enregistrer le fichier et le fermer.

Installez Docker dans les nœuds maître et travailleur :

yum -y install docker-ce

Une fois installé, activez et démarrez le Docker sur les deux nœuds :

systemctl enable docker
systemctl start docker

Vérifiez et assurez-vous que Docker fonctionne sur les deux machines.

systemctl status docker

Vérifier l'état de Docker

6. Installez Kubernetes

Ajoutez le référentiel Kubernetes dans Master et Worker.

Créez le fichier kubernetes.repo dans le maître et le travailleur sous le répertoire /etc/yum.repos.d/ :

vi /etc/yum.repos.d/kubernetes.repo

Ajoutez les lignes suivantes :

[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg

Appuyez sur ESC et tapez :wq pour enregistrer le fichier et le fermer.

Installez kubeadm, kubelet, kubectl dans les nœuds Master et Worker à l'aide de la commande ci-dessous :

yum install -y kubelet kubeadm kubectl --disableexcludes=Kubernetes

Activez et démarrez le service kubelet sur les deux machines :

systemctl enable kubelet
systemctl start kubelet

Vérifiez l'état du service Kubelet et assurez-vous qu'il fonctionne correctement sur les deux machines.

systemctl status kubelet

Vérifier l'état du service Kubelet

7. Initialisez Kubernetes

Utilisez la commande ci-dessous pour initialiser Kubernetes dans le serveur maître

[root@ostechmaster ~]# kubeadm init

Vous obtiendrez le résultat ci-dessous indiquant que le plan de contrôle Kubernetes s'est initialisé avec succès. Et certaines étapes seront mentionnées pour commencer à utiliser le cluster, suivez cela.

Copiez et enregistrez également la commande 'kubeadm join' à partir de la sortie, elle sera utilisée pour rejoindre le nœud de travail dans le cluster.

Exemple de résultat :

Your Kubernetes control-plane 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

Alternatively, if you are the root user, you can run:

  export KUBECONFIG=/etc/kubernetes/admin.conf

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/docs/concepts/cluster-administration/addons/

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join 172.31.10.29:6443 --token 220tvj.051bkeyj5tg6v55r \
        --discovery-token-ca-cert-hash sha256:434c49c7969256a7fae3880b340202cadd4fd29d3d381ab37e1cb8b1d05e86f2

Initialiser Kubernetes

Puisque nous procédons avec l'utilisateur root, exécutez la commande ci-dessous sur le serveur maître comme mentionné dans le résultat ci-dessus.

[root@ostechmaster ~]#  export KUBECONFIG=/etc/kubernetes/admin.conf

8. Configurer le réseau POD

Un réseau Kubernetes Pod est un réseau de composants interconnectés dans Kubernetes. Ce concept de réseau peut être mis en œuvre de plusieurs manières différentes. Dans notre démonstration, nous allons utiliser 'Weave Net'.

Exécutez les commandes ci-dessous sur le serveur maître pour configurer le réseau POD.

[root@ostechmaster ~]# export kubever=$(kubectl version | base64 | tr -d '\n')
[root@ostechmaster ~]# kubectl apply -f https://cloud.weave.works/k8s/net?k8s-version=$kubever

Exemple de résultat :

serviceaccount/weave-net created
clusterrole.rbac.authorization.k8s.io/weave-net created
clusterrolebinding.rbac.authorization.k8s.io/weave-net created
role.rbac.authorization.k8s.io/weave-net created
rolebinding.rbac.authorization.k8s.io/weave-net created
daemonset.apps/weave-net created
[root@ostechmaster ~]#

9. Rejoignez le nœud de travail

Exécutez la commande « kubeadm join » pour joindre le nœud de travail au cluster. Il s'agit de la commande que nous avons copiée à partir de la sortie 'kubeadm init'.

[root@ostechworker ~]# kubeadm join 172.31.10.29:6443 --token 220tvj.051bkeyj5tg6v55r         --discovery-token-ca-cert-hash sha256:434c49c7969256a7fae3880b340202cadd4fd29d3d381ab37e1cb8b1d05e86f2

Rejoignez le nœud de travail dans le cluster

Vous pouvez vérifier le nœud sur le serveur maître à l'aide de la commande ci-dessous

kubectl get nodes

Exemple de résultat :

NAME           STATUS     ROLES                  AGE   VERSION
ostechmaster   Ready      control-plane,master   32m   v1.23.1
ostechworker   Ready   <none>                 30m   v1.23.1

Conclusion

Dans cet article, nous avons vu les étapes détaillées pour installer et configurer le cluster Kubernetes à l'aide de Kubeadm. Reportez-vous à nos précédents articles de la série Kubernetes pour avoir une compréhension détaillée de l'architecture et des concepts de Kubernetes. Nous verrons les opérations de Kubernetes dans les prochains articles.

Lire ensuite :

  • Comment créer et gérer des pods Kubernetes sous Linux

Ressource :

  • https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/

Articles connexes