Comment installer un cluster Kubernetes sur Centos 8

Comment installer un cluster Kubernetes sur Centos 8

Le processus d'installation d'un Cluster kubernetes sur Centos 8 est presque similaire à celui de Centos 7 (que vous pouvez passer ici), mais le processus ici a quelques changements. Ces changements, principalement tournants autour de l'installation de Docker.

A partir de Centos 8 (et par extension Rhel 8), docker a maintenant été remplacé nativement par podman et buildah qui sont des outils de Chapeau rouge. En fait, le package Docker a maintenant été supprimé du référentiel de package par défaut.

Avec ce mouvement, le Chapeau rouge L'équipe vise à simplifier le processus de création et d'utilisation de conteneurs, sans avoir besoin d'autorisations spéciales, tout en maintenant la compatibilité avec les images Docker et les opérer sans avoir besoin d'un démon. Podman promet d'offrir plus de flexibilité lorsqu'il fonctionne Kubernetes environnements, mais le jury reste là-bas.

Pour cet article, nous allons parcourir le processus d'installation Kubernetes sur un Centos 8 plate-forme, en cours d'exécution Docker-ce (Edition communautaire). Dans un article ultérieur, nous allons également parcourir une installation similaire, en utilisant podman pour nos conteneurs.

Conditions préalables

  1. Trois serveurs exécutant Centos 8 - 1 nœud maître et 2 nœuds de travailleur.
  2. Il est recommandé que vos nœuds aient au moins 2 CPU avec 2 Go de RAM ou plus par machine. Ce n'est pas une exigence stricte mais est largement motivée par les besoins de l'application que vous avez l'intention d'exécuter.
  3. Connectivité Internet sur tous vos nœuds. Nous allons chercher Kubernetes et docker packages du référentiel. De même, vous devrez vous assurer que le gestionnaire de packages DNF est installé par défaut et peut récupérer les packages à distance.
  4. Tous vos nœuds devraient également être en mesure de se connecter les uns aux autres, sur un réseau privé ou public, selon la première éventualité.
  5. Vous aurez également besoin d'accéder à un compte avec sudo ou privilèges racine. Dans ce tutoriel, j'utiliserai mon compte racine.

Précaution

La plupart des nœuds sont généralement livrés avec Unique MAC les adresses, cependant, dans certains cas uniques, certains Machines virtuelles Peut avoir des adresses MAC identiques. Il est donc recommandé de confirmer que le Produit_uuid et le MAC Les adresses ne sont identiques dans aucun des nœuds.

Kubernetes utilise ces valeurs pour identifier de manière unique les nœuds du cluster. Si ces valeurs ne sont pas uniques à chaque nœud, le processus d'installation peut échouer.

Pour vérifier l'adresse MAC de l'interface réseau et la comparer.

# lien IP 

Pour vérifier le produit_uuid et comparez, exécutez la commande suivante.

# CAT / SYS / CLASS / DMI / ID / Product_uuid 

Architecture logique

Notre installation est conçue pour avoir le Maître-nœud Contrôlant le Nœuds de travailleur. À la fin de cette installation, notre architecture logique ressemblera à ceci.

Nœud maître - Cette machine agit généralement comme le plan de contrôle et exécute la base de données de cluster et le serveur API (avec lequel le Kubectl CLI communique).

Notre 3 nœuds Cluster kubernetes ressemblera à ceci:

Diagramme de cluster Kubernetes

Installation du cluster Kubernetes sur le nœud maître

Pour Kubernetes Pour travailler, vous aurez besoin d'un moteur de contenerisation. Comme mentionné, nous utiliserons Docker-ce.

Les institutions suivantes seront effectuées sur CENTOS 8-NODE.

Étape 1: Préparez le nom d'hôte, le pare-feu et SELINUX

Sur ton CENTOS 8-NODE, Définissez le nom d'hôte système et mettez à jour DNS dans votre / etc / hôtes déposer.

# hostNamectl set-hostname-node # Cat <> / etc / hôte 192.168.0.47 Master-Node 192.168.0.48 Node-1 Worker-node-1 192.168.0.49 Node-2 Worker-node-2 EOF 

Ensuite, pingz votre travailleur-node-1 et travailleur-node-2 Pour vérifier si votre fichier hôte mis à jour fonctionne correctement en utilisant la commande ping.

# ping 192.168.0.48 # ping 192.168.0.49 

Ensuite, désactiver Selinux, Comme cela est nécessaire pour permettre aux conteneurs d'accéder au système de fichiers de l'hôte, qui est nécessaire par les réseaux de pod et autres services.

# setenforce 0 

Paramètre setenforce pour 0 Définit efficacement Selinux à Permissive, qui désactive efficacement SELINUX jusqu'au prochain redémarrage. Pour le désactiver complètement, utilisez la commande ci-dessous et redémarrez.

# sed -i - SABSYMLINKS'S / SELINUX = Enforced / Selinux = Disabled / G '/ etc / Sysconfig / Selinux # Reboot 

Kubernetes utilise divers ports pour la communication et l'accès et ces ports doivent être accessibles à Kubernetes et non limités par le pare-feu.

Ports de Kubernetes

Configurer les règles du pare-feu sur les ports.

# Firewall-CMD --permanent --add-port = 6443 / TCP # Firewall-CMD --permanent --add-port = 2379-2380 / TCP # Firewall-CMD --permanent --add-port = 10250 / TCP # Firewall-CMD --permanent --add-port = 10251 / TCP # Firewall-CMD --permanent --add-port = 10252 / TCP # Firewall-CMD --permanent --Add-Port = 10255 / TCP # Firewall. -CMD - Reload # modprobe br_netfilter # echo '1'> / proc / sys / net / pont / pont-nf-call-iptables 

Étape 2: Installez Docker-Ce sur Centos 8

Vous devrez ajouter le Docker Référentiel d'abord car il n'est plus dans la liste des packages par défaut en utilisant les suivants DNF Config-Manager commande.

# dnf config-manager --add-repo = https: // télécharger.docker.com / linux / centos / docker-ce.repo 

Installer également conteneur.Io Package qui est disponible sous forme de démon qui gère le cycle de vie complet de son système hôte, du transfert d'image et du stockage à l'exécution et à la supervision du conteneur au stockage de bas niveau aux pièces jointes de réseau et au-delà.

# dnf installer https: // télécharger.docker.com / linux / centos / 7 / x86_64 / stable / packages / contenerd.io-1.2.6-3.3.EL7.x86_64.RPM 

Installez maintenant la dernière version d'un docker-ce emballer.

# DNF Installer Docker-CE 

Vous pouvez maintenant activer et démarrer le service Docker.

# systemctl activer docker # systemctl start docker 

Étape 3: Installez Kubernetes (Kubeadm) sur Centos 8

Ensuite, vous devrez ajouter Kubernetes référentiels manuellement car ils ne sont pas installés par défaut sur Centos 8.

# chat < /etc/yum.repos.d/kubernetes.repo [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 EOF 

Kubeadm Vous aide à amorcer un groupe Kubernetes minimum viable qui se conforme aux meilleures pratiques. Avec kubeadm, Votre cluster doit passer les tests de conformité de Kubernetes.

Kubeadm Prend également en charge d'autres fonctions de cycle de vie en cluster, telles que les mises à niveau, la dégradation et la gestion des jetons bootstrap. Kubeadm est également adapté à l'intégration avec d'autres outils d'orchestration comme Anable et Terraform.

Avec le package Repo maintenant prêt, vous pouvez aller de l'avant et installer kubeadm emballer.

# dnf installer kubeadm -y 

Lorsque l'installation se termine avec succès, activez et démarrez le service.

# SystemCTL Activer Kublet # SystemCTl Start Kublet 

Étape 4: Créez un maître du plan de contrôle avec kubeadm

Le maître de Kubernetes qui agit comme le avion de contrôle pour le cluster exécute quelques services critiques nécessaires au cluster. En tant que tel, le processus d'initialisation fera une série de précecks pour s'assurer que la machine est prête à exécuter Kubernetes. Ces préchèques exposent des avertissements et sortent des erreurs. Kubeadm init puis télécharge et installe les composants du plan de contrôle du cluster.

Maintenant, il est temps d'initialiser le maître de Kubernetes, mais avant cela, vous devez désactiver l'échange pour exécuter "Kubeadm init" commande.

# swapoff -a 

Initialisation Kubernetes Master est un processus entièrement automatisé qui est contrôlé par le «Kubeadm init«Commande comme indiqué.

# kubeadm init 
Initialiser le maître de Kubernetes

Ensuite, copiez la commande suivante et stockez-la quelque part, car nous devons exécuter cette commande sur les nœuds de travail plus tard.

Kubeadm rejoigne 192.168.0.47: 6443 - Nu06LU-Token.XRSUX0SS0IXTNMS5 \ --DISCOVERY-TOKING-CA-CERT-HASH HA256: F996EA35R4353D342FDEA2997A1CF8CAEDDAFD6D4360D606DBC82314683478HJMF7

Conseil: Parfois, la commande ci-dessus peut lancer des erreurs sur les arguments passés, donc pour éviter les erreurs, vous devez supprimer le '\' Le personnage et votre commande finale ressemblera à ceci.

# kubeadm rejoignez 192.168.0.47: 6443 - Nu06LU-Token.XRSUX0SS0IXTNMS5 -Discovery Token-CA-CERT-HASH SHA256: F996EA35R4353D342FDEA2997A1CF8CAEDDAFD6D4360D606DBC82314683478HJMF7 

Une fois Kubernetes initialisé avec succès, vous devez permettre à votre utilisateur de commencer à utiliser le cluster. Dans notre scénario, nous utiliserons l'utilisateur racine. Vous pouvez également démarrer le cluster à l'aide de l'utilisateur sudo comme indiqué.

Utiliser racine, courir:

# mkdir -p $ home /.kube # cp -i / etc / kubernetes / admin.Conf $ home /.kube / config # chown $ (id -u): $ (id -g) $ home /.kube / config 

Pour utiliser un utilisateur compatible Sudo, courir:

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

Confirmez maintenant que le commande kubectl est activé.

# kubectl obtenir des nœuds 
Vérifier l'état des nœuds

En ce moment, vous verrez que le statut du nœud maître est 'Pas prêt'. En effet.

Le réseau POD est le réseau de superposition du cluster, qui est déployé au-dessus du réseau de nœuds actuel. Il est conçu pour permettre la connectivité à travers le pod.

Étape 5: Configurez votre réseau de pod

Le déploiement du cluster de réseau est un processus très flexible en fonction de vos besoins et il existe de nombreuses options disponibles. Puisque nous voulons garder notre installation aussi simple que possible, nous utiliserons Tire Plugin qui ne nécessite aucune configuration ou code supplémentaire et il fournit une adresse IP par pod, ce qui est idéal pour nous. Si vous souhaitez voir plus d'options, veuillez vérifier ici.

Ces commandes seront importantes pour obtenir la configuration du réseau POD.

# Export Kubever = $ (version kubectl | Base64 | tr -d '\ n') # kubectl applique -f "https: // cloud.tisser.œuvres / k8s / net?K8S-Version = $ kubever " 
Configuration du réseau POD

Maintenant, si vous vérifiez l'état de votre maître-nœud, il devrait être 'Prêt'.

# kubectl obtenir des nœuds 
Vérifier l'état des nœuds maîtres

Ensuite, nous ajoutons le nœuds de travailleur au cluster.

Ajout de nœuds de travail au cluster Kubernetes

Les instructions suivantes seront effectuées sur chaque nœud de travailleur Lorsque vous rejoignez le cluster Kubernetes.

Étape 1: Préparez le nom d'hôte, le pare-feu et SELINUX

Définissez d'abord le nom d'hôte sur votre travailleur-node-1 et travailleur-node-2, puis ajouter les entrées de l'hôte au / etc / hôtes déposer.

# hostnamectl set-hostname 'node-1' # chat <> / etc / hôte 192.168.0.47 Master-Node 192.168.0.48 Node-1 Worker-node-1 192.168.0.49 Node-2 Worker-node-2 EOF 

Ensuite, pingz votre nœud maître de ton nœuds de travailleur Pour confirmer que votre fichier hôte mis à jour fonctionne bien à l'aide de la commande ping.

# 192.168.0.47 

Ensuite, désactiver Selinux et mettez à jour vos règles de pare-feu.

# setenForce 0 # sed -i --to-symLinks's / selinux = application / selinux = handicap / g '/ etc / sysconfig / selinux # foyer-all-cmd --permanent --add-port = 6783 / tcp # Firewall- cmd --permanent --add-port = 10250 / tcp # Firewall-cmd --permanent --Add-port = 10255 / tcp # Firewall-cmd --permanent --add-port = 30000-32767 / tcp # Firewall- CMD - Reload # Echo '1'> / Proc / Sys / Net / Bridge / Bridge-NF-Call-Iptables 

Étape 2: Configuration du repo Docker-Ce et Kubernetes

Ajouter d'abord le référentiel Docker à l'aide de DNF Config-Manager.

# dnf config-manager --add-repo = https: // télécharger.docker.com / linux / centos / docker-ce.repo 

Ensuite, ajoutez le conteneur.Io emballer.

# dnf installer https: // télécharger.docker.com / linux / centos / 7 / x86_64 / stable / packages / contenerd.io-1.2.6-3.3.EL7.x86_64.RPM 

Avec ces deux packages installés, installez la dernière version de docker-ce.

# DNF Installer Docker-CE 

Activer et démarrer le service Docker.

# systemctl activer docker # systemctl start docker 

Vous devrez ajouter Kubernetes les référentiels manuellement car ils ne sont pas préinstallés Centos 8.

# chat < /etc/yum.repos.d/kubernetes.repo [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 EOF 

Étape 3: Installez Kubeadm sur Centos 8

Avec le package Repo maintenant prêt, vous pouvez aller de l'avant et installer kubeadm.

# dnf installer kubeadm -y 

Démarrer et activer le service.

# SystemCTL Activer Kublet # SystemCTl Start Kublet 

Étape 4: Rejoignez le nœud des travailleurs au cluster Kubernetes

Nous avons maintenant besoin du jeton qui Kubeadm init généré, pour rejoindre le cluster. Vous pouvez le copier et le coller à votre nœud-1 et nœud-2 Si tu l'avais copié quelque part.

# kubeadm rejoignez 192.168.0.47: 6443 - Nu06LU-Token.XRSUX0SS0IXTNMS5 - Discovery-Token-CA-CERT-HASH SHA256: F996EA35R4353D342FDEA2997A1CF8CAEDDAFD6D4360D606DBC82314683478HJMF78 

Comme suggéré sur la dernière ligne, retournez à votre maître-nœud et vérifier si le travailleur nœud-1 et Node de travailleur-2 ont rejoint le cluster en utilisant la commande suivante.

# kubectl obtenir des nœuds 
Vérifiez l'état de tous les nœuds dans le cluster de Kubernetes

Si toutes les étapes fonctionnent avec succès, alors, vous devriez voir nœud-1 et nœud-2 en statut prêt sur le maître-nœud. À ce stade, vous avez maintenant déployé un cluster Kubernetes sur Centos 8.

Lecture recommandée: Comment déployer Nginx sur un cluster Kubernetes

Certaines limitations

Le cluster que nous avons créé ici a un seul Nœud maître, Et en tant que tel, si le Nœud maître échoue, votre cluster peut perdre des données et peut avoir besoin d'être recréé à partir de zéro.

Pour cette raison, je recommande une configuration très disponible.