Comment installer un cluster Docker Kubernetes sur CentOS 7

Kubernetes est une plateforme open source de gestion des applications conteneurisées développée par Google. Elle te permet de gérer, mettre à l’échelle et déployer automatiquement tes applications conteneurisées dans l’environnement en cluster. Avec Kubernetes, nous pouvons orchestrer nos conteneurs sur plusieurs hôtes, mettre à l’échelle les applications conteneurisées avec toutes les ressources à la volée et avoir un environnement de gestion des conteneurs centralisé.

Dans ce tutoriel, je vais te montrer, étape par étape, comment installer et configurer Kubernetes sur CentOS 7. Nous utiliserons 1 serveur ‘k8s-master’ comme maître hôte Kubernetes, et 2 serveurs comme nœuds Kubernetes, ‘node01’ et ‘node02’.

Conditions préalables

  • 3 serveurs CentOS 7
    • 10.0.15.10 k8s-master
    • 10.0.15.21 node01
    • 10.0.15.22 node02
  • Privilèges de racine

Ce que nous allons faire ?

  1. Installation de Kubernetes
  2. Initialisation du cluster Kubernetes
  3. Ajout de node01 et node02 au Cluster
  4. Test – Créer le premier pod

Étape 1 – Installation de Kubernetes

Dans cette première étape, nous allons préparer ces 3 serveurs pour l’installation de Kubernetes, donc exécute toutes les commandes sur les serveurs maître et nœud.

Nous allons préparer tous les serveurs pour l’installation de Kubernetes en modifiant la configuration existante sur les serveurs, et en installant également certains paquets, notamment docker-ce et kubernetes lui-même.

– Configurer les hôtes

Modifie le fichier hosts sur tous les serveurs à l’aide de l’éditeur vim.

vim /etc/hosts

Colle la liste des hôtes ci-dessous.

10.0.15.10      k8s-master
10.0.15.21      node01
10.0.15.22      node02

Sauvegarde et quitte.

– Désactiver SELinux

Dans ce tutoriel, nous ne parlerons pas de la configuration de SELinux pour Docker, nous allons donc le désactiver.

Exécute la commande ci-dessous pour désactiver SELinux.

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

– Active le module du noyau br_netfilter

Le module br_netfilter est nécessaire pour l’installation de kubernetes. Active ce module de noyau pour que les paquets traversant le pont soient traités par iptables pour le filtrage et pour la redirection de port, et que les pods kubernetes à travers le cluster puissent communiquer entre eux.

Exécute la commande ci-dessous pour activer le module de noyau br_netfilter.

modprobe br_netfilter
echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables

– Désactiver SWAP

Désactive SWAP pour l’installation de kubernetes en exécutant les commandes suivantes.

swapoff -a

Désactiver le swap

Puis modifie le fichier ‘/etc/fstab’.

vim /etc/fstab

Commente l’UUID de la ligne de swap comme ci-dessous.

Modifier /etc/fstab

– Installe Docker CE

Installe la dernière version de Docker-ce à partir du dépôt de docker.

Installe les dépendances du paquet pour docker-ce.

yum install -y yum-utils device-mapper-persistent-data lvm2

Ajoute le référentiel docker au système et installe docker-ce à l’aide de la commande yum.

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce

Attends l’installation de docker-ce.

Installe Docker

– Installe Kubernetes

Ajoute le référentiel kubernetes au système centos 7 en exécutant la commande suivante.

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

Installe maintenant les paquets kubernetes kubeadm, kubelet et kubectl à l’aide de la commande yum ci-dessous.

yum install -y kubelet kubeadm kubectl

Installe Kubernetes

Une fois l’installation terminée, redémarre tous ces serveurs.

sudo reboot

Connecte-toi à nouveau au serveur et démarre les services, docker et kubelet.

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

– Change le pilote de groupe

Nous devons nous assurer que le docker-ce et kubernetes utilisent le même ‘cgroup’.

Vérifie le cgroup de docker à l’aide de la commande docker info.

docker info | grep -i cgroup

Et tu vois que le docker utilise‘cgroupfs‘ comme pilote de groupe.

Exécute maintenant la commande ci-dessous pour changer le pilote de groupe de kuberetes en ‘cgroupfs’.

sed -i 's/cgroup-driver=systemd/cgroup-driver=cgroupfs/g' /etc/systemd/system/kubelet.service.d/10-kubeadm.conf

Recharge le système systemd et redémarre le service kubelet.

systemctl daemon-reload
systemctl restart kubelet

Nous sommes maintenant prêts à configurer le cluster Kubernetes.

Configurer le cluster Kubernetes

Étape 2 – Initialisation du cluster Kubernetes

Dans cette étape, nous allons initialiser la configuration du cluster maître de Kubernetes.

Déplace le shell vers le serveur maître ‘k8s-master’ et exécute la commande ci-dessous pour configurer le maître kubernetes.

kubeadm init --apiserver-advertise-address=10.0.15.10 --pod-network-cidr=10.244.0.0/16

Initialisation du cluster Kubernetes

Remarque :

–apiserver-advertise-address = détermine l’adresse IP sur laquelle Kubernetes doit annoncer son serveur API.

–pod-network-cidr = indique la plage d’adresses IP pour le réseau de pods. Nous utilisons le réseau virtuel ‘flannel’. Si tu veux utiliser un autre réseau de pods comme weave-net ou calico, modifie l’adresse IP de la plage.

Lorsque l’initialisation de Kubernetes est terminée, tu obtiendras le résultat ci-dessous.

L'initialisation de Kubernetes est terminée

Remarque :

Copie la commande‘kubeadm join … ... … ‘ dans ton éditeur de texte. Cette commande sera utilisée pour enregistrer de nouveaux nœuds dans le cluster Kubernetes.

Maintenant, pour utiliser Kubernetes, nous devons exécuter certaines commandes comme sur le résultat.

Crée un nouveau répertoire de configuration ‘.kube’ et copie la configuration ‘admin.conf’.

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

Ensuite, déploie le réseau flanelle sur le cluster kubernetes à l’aide de la commande kubectl.

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

Rejoindre Kubernetes

Le réseau flanelle a été déployé sur le cluster Kubernetes.

Attends une minute, puis vérifie le nœud et les pods de Kubernetes à l’aide des commandes ci-dessous.

kubectl get nodes
kubectl get pods --all-namespaces

Tu verras que le nœud ‘k8s-master’ fonctionne en tant que cluster ‘master’ avec le statut ‘ready’, et tu obtiendras tous les pods nécessaires au cluster, y compris ‘kube-flannel-ds’ pour la configuration du pod réseau.

Assure-toi que le statut de tous les pods de kube-system est ‘running’.

Vérifier le nœud Kubernetes

L’initialisation et la configuration du maître du cluster Kubernetes sont terminées.

Étape 3 – Ajout de node01 et node02 au cluster

Dans cette étape, nous allons ajouter le nœud01 et le nœud02 pour qu’ils rejoignent le cluster ‘k8s’.

Connecte-toi au serveur node01 et exécute la commande kubeadm join comme nous l’avons copié en haut.

kubeadm join 10.0.15.10:6443 --token vzau5v.vjiqyxq26lzsf28e --discovery-token-ca-cert-hash sha256:e6d046ba34ee03e7d55e1f5ac6d2de09fd6d7e6959d16782ef0778794b94c61e

Ajouter le nœud01 et le nœud02 au Cluster

Connecte-toi au serveur node02 et exécute la commande kubeadm join comme nous l’avons copié en haut.

kubeadm join 10.0.15.10:6443 --token vzau5v.vjiqyxq26lzsf28e --discovery-token-ca-cert-hash sha256:e6d046ba34ee03e7d55e1f5ac6d2de09fd6d7e6959d16782ef0778794b94c61e

Connecter les nœuds Docker

Attends quelques minutes et retourne sur le serveur cluster maître ‘k8s-master’ pour vérifier les nœuds et les pods à l’aide de la commande suivante.

kubectl get nodes
kubectl get pods --all-namespaces

Tu obtiendras maintenant que le nœud01 et le nœud02 ont été ajoutés au cluster avec le statut ‘ready’.

kubctl command

node01 et node02 ont été ajoutés au cluster kubernetes.

Étape 4 – Test de création du premier pod

Dans cette étape, nous allons faire un test en déployant le pod Nginx sur le cluster kubernetes. Un pod est un groupe d’un ou plusieurs conteneurs avec un stockage et un réseau partagés qui fonctionne sous Kubernetes. Un pod contient un ou plusieurs conteneurs, comme un conteneur Docker.

Connecte-toi au serveur ‘k8s-master’ et crée un nouveau déploiement nommé ‘nginx’ à l’aide de la commande kubectl.

kubectl create deployment nginx --image=nginx

Pour voir les détails de la spécification du déploiement ‘nginx’, exécute la commande suivante.

kubectl describe deployment nginx

Et tu obtiendras la spécification de déploiement du pod nginx.

Ensuite, nous allons exposer le pod nginx accessible via Internet. Et nous devons créer un nouveau service NodePort pour cela.

Exécute la commande kubectl ci-dessous.

kubectl create service nodeport nginx --tcp=80:80

Créer le premier pod

Assure-toi qu’il n’y a pas d’erreur. Vérifie maintenant le nodeport et l’IP du service nginx à l’aide de la commande kubectl ci-dessous.

kubectl get pods
kubectl get svc

Obtiens la liste des pods

Tu verras que le pod nginx fonctionne maintenant sous l’adresse IP du cluster ‘10.160.60.38’ port 80, et l’adresse IP principale du nœud ‘10.0.15.x’ sur le port ‘30691’.

Depuis le serveur ‘k8s-master’, exécute la commande curl ci-dessous.

curl node01:30691

Test avec curl

curl node02:30691

Teste le nœud 2 avec curl

Le Pod Nginx a maintenant été déployé sous le cluster Kubernetes et il est accessible via Internet.

Accède maintenant au Pod à partir du navigateur Web.

http://10.0.15.10:30691/

Et tu obtiendras la page par défaut de Nginx.

Page sur le nœud 1

Sur le serveur node02 – http://10.0.15.11:30691/

Page sur le nœud 2

L’installation et la configuration du cluster Kubernetes sur CentOS 7 ont été effectuées avec succès.

Référence

Vous aimerez aussi...