Configurer un cluster Kubernetes sur une instance EC2 d’AWS avec Ubuntu en utilisant kubeadm

Dans cet article, nous allons voir comment configurer un cluster Kubernetes avec 2 nœuds ouvriers et 1 nœud maître sur des serveurs Ubuntu 18.04 LTS. Nous utiliserons l’outil« kubeadm » pour configurer le cluster. Kubeadm est un outil construit pour fournir « kubeadm init » et « kubeadmjoin » pour créer desclusters Kubernetes. Avant de procéder à la création du cluster, comprenons brièvement quelques termes.

    1. Docker :
      Docker est une plateforme ouverte pour développer, expédier et exécuter des applications. Docker te permet de séparer tes applications de ton infrastructure afin que tu puisses livrer des logiciels rapidement. Avec Docker, tu peux gérer ton infrastructure de la même façon que tu gères tes applications.
    2. Image :
      Une image est un modèle en lecture seule contenant des instructions pour créer un conteneur Docker. Souvent, une image est basée sur une autre image, avec quelques personnalisations supplémentaires.
    3. Conteneur :
      Un conteneur est une instance exécutable d’une image. Tu peux créer, démarrer, arrêter, déplacer ou supprimer un conteneur à l’aide de l’API ou du CLI de Docker. Tu peux connecter un conteneur à un ou plusieurs réseaux, lui attacher du stockage, ou même créer une nouvelle image en fonction de son état actuel.
    4. Kubernetes :
      Kubernetes est un système d’orchestration de conteneurs open-source pour automatiser le déploiement, la mise à l’échelle et la gestion des applications.
    5. Nœuds :
      Un nœud représente une seule machine dans le cluster.
    6. Pods :
      Un conteneur est un groupe de conteneurs qui sont déployés ensemble sur le même hôte. C’est l’unité d’exécution de base d’une application Kubernetes.
    7. Déploiements :
      Un Déploiement exécute plusieurs répliques de ton application et remplace automatiquement les instances qui échouent ou ne répondent plus. Il fournit des mises à jour déclaratives pour les Pods et les ReplicaSets.
    8. Ensemble de répliques :
      Il garantit combien de répliques d’un pod doivent être en cours d’exécution. Il peut être considéré comme un remplacement du contrôleur de réplication.
  • Contrôleur de réplication :
    Il s’agit d’un superviseur pour les pods qui fonctionnent depuis longtemps. Il lance un nombre déterminé de pods appelés répliques et s’assure qu’ils continuent à fonctionner en permanence.
  1. Service :
    C’est une abstraction qui définit un ensemble logique de pods et une politique permettant d’y accéder.

API Server, etcd, Controller Manager & Scheduler, sont les composants du Master et Docker, Kubelet Service & Kubernetes Proxy Service sont les composants du Worker Node. Nous ne parlerons pas de ces composants dans ce document. Si tu veux en savoir plus sur ces composants, tu peux visiter la page officielle de Kubernetes ici.

Pré-requis

  1. 3 Serveurs Ubuntu 18.04 avec au minimum 2 Go de RAM et 2 CPU.
  2. Un utilisateur système avec un accès « sudo » sur chaque serveur.

Ce que nous allons faire

  1. Configurer un Cluster Kubernetes avec kubeadm

Configurer un cluster Kubernetes avec kubeadm

Ici,

Nous avons 3 serveurs Ubuntu 18.04 LTS.

Serveur 1= node1
Serveur 2= node2
Serveur 3= master

Avant de procéder à l’installation proprement dite, changeons le nom d’hôte des serveurs.

Tu peux utiliser les commandes suivantes pour définir un nom d’hôte sur chaque serveur. Après avoir exécuté les commandes suivantes sur chaque serveur, connecte-toi à nouveau aux serveurs pour qu’ils reçoivent un nouveau nom d’hôte.

sudo hostnamectl set-hostname "master"
sudo hostnamectl set-hostname "node1"
sudo hostnamectl set-hostname "node2"

Suis les étapes mentionnées ci-dessous pour faire fonctionner le cluster Kubernets.

Obtiens la clé gpg de Docker (Exécute la commande suivante sur tous les nœuds):

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

Ajoute le référentiel Docker(exécute la commande suivante sur tous les nœuds):

sudo add-apt-repository    "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
  stable"

Obtiens la clé gpg de Kubernetes(exécute la commande suivante sur tous les noeuds):

curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -

Ajoute le référentiel Kubernetes(exécute la commande suivante sur tous les noeuds):

cat << EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF

Mets à jour tes paquets(exécutela commande suivante sur tous les nœuds):

sudo apt-get update

Installe Docker, kubelet, kubeadm et kubectl(exécute la commande suivante sur tous les nœuds):

sudo apt-get install -y docker-ce=18.06.1~ce~3-0~ubuntu kubelet=1.15.7-00 kubeadm=1.15.7-00 kubectl=1.15.7-00

Maintiens-les à la version actuelle(Exécute la commande suivante sur Tous les Nœuds):

sudo apt-mark hold docker-ce kubelet kubeadm kubectl

Ajoute la règle iptables à sysctl.conf (Exécutela commande suivante sur tous les nœuds) :

echo "net.bridge.bridge-nf-call-iptables=1" | sudo tee -a /etc/sysctl.conf

Active iptables immédiatement(Exécute la commande suivante sur tous les nœuds:

sudo sysctl -p

Sur Master:

Initialise le cluster (Exécute la commande suivante uniquement sur le nœud Master):

sudo kubeadm init --pod-network-cidr=10.244.0.0/16

Configure la kubeconfig locale(Exécute la commande suivante uniquement sur le nœud Maître):

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

Appliquer la superposition de réseau Flannel CNI(Exécute la commande suivante uniquement sur le nœud Maître):

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

Sur Node1 et Node 2 :

Joins les nœuds ouvriers au cluster (exécutela commande suivante uniquement sur Node1 et Node2) :

sudo kubeadm join 172.31.4.161:6443 --token 0y52t6.ffsj8jkjfcl1sq8h \
   --discovery-token-ca-cert-hash sha256:7aa1825042d19d3e567f7e4b447634e942fe9ed7f18f78464a9c05f451551ed5

Vérifie que les nœuds ouvriers ont bien rejoint le clusterExécute la commande suivante sur le nœud maître):

kubectl get nodes

Conclusion :

Dans cet article, nous avons appris à configurer un cluster Kubernetes avec l’outil kubeadm. Nous avons vu avec quelle facilité un cluster peut être créé si les étapes ne sont pas manquées et si l’installation est correcte.

Vous aimerez aussi...