Recherche de site Web

Comment installer un cluster Kubernetes sur CentOS 7


Offert par Google à la communauté Opensource, Kubernetes est désormais devenu l'outil de gestion de conteneurs de choix. Il peut gérer et orchestrer non seulement les environnements d'exécution Docker, mais également les environnements d'exécution Containers et Rkt.

Un cluster Kubernetes typique possède généralement un nœud maître et plusieurs nœuds de travail ou serviteurs. Les nœuds de travail sont ensuite gérés depuis le nœud maître, garantissant ainsi que le cluster est géré depuis un point central.

Il est également important de mentionner que vous pouvez également déployer un cluster Kubernetes à nœud unique, généralement recommandé pour les charges de travail très légères hors production. Pour cela, vous pouvez utiliser Minikube, qui est un outil qui exécute un cluster Kubernetes à nœud unique dans une machine virtuelle sur votre nœud.

Lecture recommandée : Comment installer un cluster Kubernetes sur CentOS 8

Pour ce didacticiel, nous allons parcourir une installation de cluster Kubernetes multi-nœuds sur CentOS 7 Linux. Ce didacticiel est basé sur la ligne de commande, vous devrez donc accéder à la fenêtre de votre terminal.

Conditions préalables

  1. Plusieurs serveurs exécutant Centos 7 (1 nœud principal, 2 nœuds de travail). Il est recommandé que votre Nœud maître dispose d'au moins 2 processeurs, bien que ce ne soit pas une exigence stricte.
  2. Connectivité Internet sur tous vos nœuds. Nous allons récupérer les packages Kubernetes et docker depuis le référentiel. De même, vous devrez vous assurer que le gestionnaire de packages yum est installé par défaut et peut récupérer les packages à distance.
  3. Vous aurez également besoin d'accéder à un compte avec les privilèges sudo ou root. Dans ce tutoriel, j'utiliserai mon compte root.

Notre cluster à 3 nœuds ressemblera à ceci :

Installation du cluster Kubernetes sur Master-Node

Pour que Kubernetes fonctionne, vous aurez besoin d'un moteur de conteneurisation. Pour cette installation, nous utiliserons docker car c'est le plus populaire.

Les étapes suivantes s'exécuteront sur le Master-Node.

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

Sur votre nœud maître, définissez le nom d'hôte et si vous n'avez pas de serveur DNS, mettez également à jour votre fichier /etc/hosts.

hostnamectl set-hostname master-node
cat <<EOF>> /etc/hosts
10.128.0.27 master-node
10.128.0.29 node-1 worker-node-1
10.128.0.30 node-2 worker-node-2
EOF

Vous pouvez envoyer une requête ping à worker-node-1 et worker-node-2 pour tester si votre fichier hôte mis à jour fonctionne correctement à l'aide de la commande ping.

ping 10.128.0.29
ping 10.128.0.30

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

setenforce 0
sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
reboot

Définissez les règles de pare-feu suivantes sur les ports. Assurez-vous que chaque commande firewall-cmd renvoie un succès.

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/bridge/bridge-nf-call-iptables

Étape 2 : configurer le dépôt Kubernetes

Vous devrez ajouter manuellement les référentiels Kubernetes car ils ne sont pas installés par défaut sur CentOS 7.

cat <<EOF > /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 et Docker

Le référentiel de packages étant maintenant prêt, vous pouvez continuer et installer les packages kubeadm et docker.

yum install kubeadm docker -y 

Une fois l'installation terminée avec succès, activez et démarrez les deux services.

systemctl enable kubelet
systemctl start kubelet
systemctl enable docker
systemctl start docker

Étape 4 : initialiser le maître Kubernetes et configurer l'utilisateur par défaut

Nous sommes maintenant prêts à initialiser Kubernetes Master, mais avant cela, vous devez désactiver le swap afin d'exécuter la commande « kubeadm init ».

swapoff -a

L'initialisation du maître Kubernetes est un processus entièrement automatisé qui est géré par la commande « kubeadm init » que vous exécuterez.

kubeadm init

Vous souhaiterez peut-être copier la dernière ligne et l'enregistrer quelque part car vous devrez l'exécuter sur les nœuds de travail.

kubeadm join 10.128.0.27:6443 --token nu06lu.xrsux0ss0ixtnms5  \ --discovery-token-ca-cert-hash sha256:f996ea3564e6a07fdea2997a1cf8caeddafd6d4360d606dbc82314688425cd41 

Astuce : Parfois, cette commande peut se plaindre des arguments (args) transmis, alors modifiez-la pour éviter tout les erreurs. Ainsi, vous supprimerez le caractère '\' accompagnant le --token et votre commande finale ressemblera à ceci.

kubeadm join 10.128.0.27:6443 --token nu06lu.xrsux0ss0ixtnms5  --discovery-token-ca-cert-hash sha256:f996ea3564e6a07fdea2997a1cf8caeddafd6d4360d606dbc82314688425cd41

Après avoir initialisé Kubernetes avec succès, vous devrez autoriser votre utilisateur à commencer à utiliser le cluster. Dans notre cas, nous souhaitons exécuter cette installation en tant qu'utilisateur root, nous allons donc exécuter ces commandes en tant qu'utilisateur root. Vous pouvez changer pour un utilisateur activé par sudo que vous préférez et exécuter ce qui suit en utilisant sudo.

Pour utiliser root, exécutez :

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 activé par Sudo, exécutez :

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

Vérifiez maintenant si la commande kubectl est activée.

kubectl get nodes

À ce stade, vous remarquerez également que l'état du nœud maître est « NotReady ». En effet, nous n'avons pas encore déployé le réseau de pods sur le cluster.

Le réseau de pods 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 pods

Le déploiement du cluster réseau est un processus très flexible en fonction de vos besoins et de nombreuses options sont disponibles. Puisque nous souhaitons garder notre installation aussi simple que possible, nous utiliserons le plugin Weavenet qui ne nécessite aucune configuration ni code supplémentaire et 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 du pod.

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

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

kubectl get nodes

Ensuite, nous ajoutons les nœuds de travail au cluster.

Configuration des nœuds de travail pour rejoindre le cluster Kubernetes

Les étapes suivantes s'exécuteront sur les nœuds de travail. Ces étapes doivent être exécutées sur chaque nœud de travail lorsque vous rejoignez le cluster Kubernetes.

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

Sur vos worker-node-1 et worker-node-2, définissez le nom d'hôte et si vous n'avez pas de serveur DNS, mettez également à jour votre maître et votre travailleur. nœuds sur le fichier /etc/hosts.

hostnamectl set-hostname 'node-1'
cat <<EOF>> /etc/hosts
10.128.0.27 master-node
10.128.0.29 node-1 worker-node-1
10.128.0.30 node-2 worker-node-2
EOF

Vous pouvez envoyer une requête ping au nœud maître pour tester si votre fichier hôte mis à jour fonctionne correctement.

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

setenforce 0
sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux

Définissez les règles de pare-feu suivantes sur les ports. Assurez-vous que toutes les commandes pare-feu-cmd renvoient un succès.

firewall-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 : configurer le dépôt Kubernetes

Vous devrez ajouter manuellement les référentiels Kubernetes, car ils ne sont pas préinstallés sur CentOS 7.

cat <<EOF > /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 et Docker

Le référentiel de packages étant maintenant prêt, vous pouvez continuer et installer les packages kubeadm et docker.

yum install kubeadm docker -y 

Démarrez et activez les deux services.

systemctl enable docker
systemctl start docker
systemctl enable kubelet
systemctl start kubelet

Étape 4 : Rejoignez le nœud de travail au cluster Kubernetes

Nous avons maintenant besoin du jeton généré par kubeadm init pour rejoindre le cluster. Vous pouvez le copier et le coller dans vos node-1 et node-2 si vous l'avez copié quelque part.

kubeadm join 10.128.0.27:6443 --token nu06lu.xrsux0ss0ixtnms5  --discovery-token-ca-cert-hash sha256:f996ea3564e6a07fdea2997a1cf8caeddafd6d4360d606dbc82314688425cd41 

Comme suggéré sur la dernière ligne, retournez à votre nœud-maître et vérifiez si le nœud de travail-1 et le nœud de travail-2 ont rejoint le cluster à l’aide de la commande suivante.

kubectl get nodes

Si toutes les étapes se déroulent correctement, vous devriez voir node-1 et node-2 à l'état prêt sur le nœud maître.

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

À ce stade, nous avons terminé avec succès l'installation d'un cluster Kubernetes sur Centos 7 et nous avons intégré avec succès deux nœuds de travail. Vous pouvez maintenant commencer à créer vos pods et déployer vos services.