Dans cet article, nous allons en savoir plus sur l'installation du 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. Configurer 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, un redémarrage est nécessaire après la définition du nom d'hôte.
# hostnamectl set-hostname ostechmaster
Modifier /etc/hosts
fichier :
# vi /etc/hosts
Ajoutez le nom d'hôte et l'adresse IP du serveur et du client dans le /etc/hosts
fichier :
Faites un test ping pour vous assurer de la connectivité :
[[email protected] ~]# ping ostechworkerPING 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 ms64 bytes from ostechworker (172.31.5.141):icmp_seq=2 ttl=64 time=0.492 ms64 bytes de ostechworker (172.31.5.141):icmp_seq=3 ttl=64 time=1.43 ms64 bytes de ostechworker (172.31.5.141):icmp_seq=4 ttl=64 temps=0.425 ms
2. Désactiver 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é.
Faire 'SELINUX=disabled
' dans le fichier de configuration /etc/selinux/config
en utilisant l'éditeur vi. Un redémarrage est nécessaire pour refléter le changement de SElinux.
[[email protected] ~]# vi /etc/selinux/config
Assurez-vous de l'état de SElinux à l'aide de la commande ci-dessous.
[[email protected] ~]# sestatusStatut SELinux :désactivé
3. Désactiver 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 préférée de la communauté Kubernetes. Le service kubelet ne démarrera pas sur le maître et les nœuds de calcul si l'échange n'est pas désactivé.
Exécutez la commande ci-dessous pour désactiver SWAP :
[[email protected] ~]# 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 :
Protocole | Direction | Plage de ports | Objectif | Utilisé par |
TCP | Entrant | 6443 | Serveur d'API Kubernetes | Tous |
TCP | Entrant | 2379-2380 | API client du serveur etcd | kube-apiserver, etcd |
TCP | Entrant | 10250 | API Kubelet | Soi, plan de contrôle |
TCP | Entrant | 10259 | kube-scheduler | Moi |
TCP | Entrant | 10257 | kube-controller-manager | Moi |
Nœuds de travail :
Protocole | Direction | Plage de ports | Objectif | Utilisé par |
TCP | Entrant | 10250 | API Kubelet | Soi, plan de contrôle |
TCP | Entrant | 30000-32767 | Services NodePort | Tous |
Pour autoriser les ports requis via le pare-feu, exécutez les commandes suivantes.
Nœud maître :
[[email protected] ~]# firewall-cmd --permanent --add-port=6443/tcp
[[email protected] ~]# firewall-cmd --permanent --add-port=2379-2380/tcp
[[email protected] ~]# firewall-cmd --permanent --add-port=10250/tcp
[[email protected] ~]# firewall-cmd --permanent --add-port=10251/tcp
[[email protected] ~]# firewall-cmd --permanent --add-port=10259/tcp
[[email protected] ~]# firewall-cmd --permanent --add-port=10257/tcp
[[email protected] ~]# firewall-cmd --reload
Nœud de travail :
[[email protected] ~]# firewall-cmd --permanent --add-port=10250/tcp
[[email protected] ~]# firewall-cmd --permanent --add-port=30000-32767/tcp
[[email protected] ~]# firewall-cmd --reload
Nous désactivons le pare-feu dans Master et Worker car c'est à des fins de démonstration. Cependant, il n'est pas recommandé pour les pratiques de production en temps réel.
Utilisez les commandes ci-dessous pour arrêter et désactiver le pare-feu.
[[email protected] ~]# systemctl stop firewalld
[[email protected] ~]# systemctl désactiver le pare-feu
5. Installer Docker
Docker permet de "construire" plus facilement des conteneurs, alors 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 dans toutes les machines du cluster.
Créez le fichier nommé docker.repo
sous /etc/yum.repos.d/
répertoire :
[[email protected] ~]# 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 est en cours d'exécution sur les deux machines.
# menu fixe d'état systemctl
6. Installer Kubernetes
Ajoutez le référentiel Kubernetes dans Master et Worker.
Créez le fichier kubernetes.repo
dans Master et worker sous /etc/yum.repos.d/
répertoire :
# vi /etc/yum.repos.d/kubernetes.repo
Ajoutez les lignes suivantes :
[kubernetes]name=Kubernetesbaseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64enabled=1gpgcheck=1repo_gpgcheck=1gpgkey=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 maître et travailleur à l'aide de la commande ci-dessous :
# yum install -y kubelet kubeadm kubectl --disableexcludes=Kubernetes
Activer et démarrer le kubelet
service dans 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.
# kubelet d'état systemctl
7. Initialiser le Kubernetes
Utilisez la commande ci-dessous pour initialiser Kubernetes dans le serveur maître
[[email protected] ~]# kubeadm init
Vous obtiendrez la sortie ci-dessous indiquant que le plan de contrôle Kubernetes a été initialisé avec succès. Et certaines étapes seront mentionnées pour commencer à utiliser le cluster, suivez cela.
Copiez et enregistrez également le 'kubeadm join'
commande à partir de la sortie, elle sera utilisée pour joindre le nœud de travail dans le cluster.
Exemple de résultat :
Votre plan de contrôle Kubernetes a été initialisé avec succès ! Pour commencer à utiliser votre cluster, vous devez exécuter ce qui suit en tant qu'utilisateur normal :mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id - u):$(id -g) $HOME/.kube/configAlternativement, si vous êtes l'utilisateur root, vous pouvez exécuter : export KUBECONFIG=/etc/kubernetes/admin.conf Vous devez maintenant déployer un réseau de pods sur le cluster. Exécutez "kubectl apply -f [podnetwork].yaml" avec l'une des options répertoriées sur :https://kubernetes.io/docs/concepts/cluster-administration/addons/Then Vous pouvez rejoindre n'importe quel nombre de nœuds de travailleurs en exécutant ce qui suit sur chacun comme racine: kubeadm rejoignez 172.31.10.29:6443 --Token 220TVJ.051BKEYJ5TG6V55R \ --DISCOVERY-TOKKE-CA-CER-HASH SHA256:434C49C7969256A7FAE38880B340202CDDDDDDDDDDDDDDDDDDDDDDIC31 fort>
Puisque nous procédons avec root
utilisateur, exécutez la commande ci-dessous dans le serveur maître comme mentionné dans la sortie ci-dessus.
[[email protected] ~]# 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 dans le serveur maître pour configurer le réseau POD.
[[email protected] ~]# export kubever=$(kubectl version | base64 | tr -d '\n')
[[email protected] ~]# kubectl apply -f https://cloud.weave.works/k8s/net?k8s-version=$kubever
Exemple de résultat :
serviceaccount/weave-net createdclusterrole.rbac.authorization.k8s.io/weave-net createdclusterrolebinding.rbac.authorization.k8s.io/weave-net createdrole.rbac.authorization.k8s.io/weave-net createdrolebinding.rbac .authorization.k8s.io/weave-net créédaemonset.apps/weave-net créé[[email protected] ~]#
9. Rejoignez le nœud de travail
Exécutez le 'kubeadm join
' pour joindre le noeud worker dans le cluster. C'est la commande que nous avons copiée de 'kubeadm init
' sortie.
[[email protected] ~]# kubeadm join 172.31.10.29:6443 --token 220tvj.051bkeyj5tg6v55r --discovery-token-ca-cert-hash sha256:434c49c7969256a7fae3880b340202cadd4fd6e29d3d381ab3Vous pouvez vérifier le nœud dans le serveur maître à l'aide de la commande ci-dessous
# kubectl get nodesExemple de résultat :
NOM STATUT RÔLES ÂGE VERSIONostechmaster Ready control-plane,master 32m v1.23.1ostechworker Ready30m v1.23.1 Conclusion
Dans cet article, nous avons vu les étapes détaillées pour installer et configurer Kubernetes Cluster à l'aide de Kubeadm. Reportez-vous à notre précédente série kubernetes articles pour avoir une compréhension détaillée de l'architecture et des concepts de Kubernetes. Nous verrons les opérations Kubernetes dans les prochains articles.
Lire la suite :
- Comment créer et gérer des pods Kubernetes sous Linux
Ressource :
- https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/