Container : Les applications conteneurisées sont plus faciles à déplacer d’un environnement à un autre (développement, test, production, etc.). Dans une approche Microservices votre application est subdivisée en plusieurs containers et chaque container représente une partie de votre application qu’on peut dorénavant considérer comme une sous-application
Pod : représente un ou plusieurs conteneurs qui sont étroitement liés et qui partagent des ressources (liés à la même sous-application)
Container engine : gère le container et lui donne accès aux ressources souhaités ( Docker , CRI-O , containerd , podman , frakti … )
Orchestration : dans une entreprise , nous sommes face à un ocean d’application. nous avons besoin d’orchestrateur afin d’automatiser le déploiement, le management, le networking, le scaling et la disponibilité des applications conteneurisées. on peut citer Nomad , Apache MESOS , Docker SWARM et bien sur Kubernetes
les composants de kubernetes seront alors télécharger entant qu’image lors du preflight et déployer sur le master entant que POD (containers) :
API Server
etcd
scheduller
controller-manager
kube-proxy
coredns
copie du fichier admin.conf (API)
afin d’interoger l’API de votre cluster Kubernetes depuis cette VM , vous devez copier, dans le répertoire de travail de l’utilisateur courant ( root dans cet example ) , le fichier /etc/kubernetes/admin.conf
il est obligatoire d’installer une solution réseau CNI afin de permettre aux PODs (containers) de communiquer entre eux. ClusterDNS (coredns) ne démarre pas tant que le réseau n’est pas installer
calico est une solution inventer par l’entreprise tigera et sélectionner par la cncf comme l’une des solutions réseau à utiliser avec kubernetes.
Avant de commencer à déployer nos PODs (containers) , il faut s’assurer avoir une solution réseau prête sur notre kubemaster.
Nous allons installer la solution réseau calico avec la commande suivante :
les images et PODs de la solution réseau calico seront alors télécharger puis déployer , d’abords sur le master , puis automatiquement sur chauque worker des la jonction au cluster.
génération du token join cluster
Tout est prêt pour commencer la jonction des workers au cluster ❤️
Pour cela nous devons générer un token et l’utiliser sur chaque worker que nous souhaitons ajouter à notre cluster
1
kubeadm token create --print-join-command
voila que notre commande de génération du token vient de nous fournir une nouvelle commande à exécuter sur chaque worker
jonction des workers au cluster
désormais sur chaque worker , vous pouvez coller / exécuter la commande fournit précédement lors de la génération du token
une fois que vous joignez les worker au cluster, les PODs necessaires seront déployer automatiquement dans chauqe worker
Soyez patient, le temps que tout les PODs passe en READY 1/1 vous pouvez vérifier l’état des PODs avec la commande
1
kubectl get pods -n kube-system
et voila notre cluster Kubernetes est enfin prêt ❤️
1
kubectl get nodes
déployer votre 1er POD
Apres tous ce magnifique travail, vous méritez bien de déployer votre premier POD
création d’un manifest
nous mettons à votre disposition ce manifest sur github (nginx.yaml)
une fois que vous avez créer le fichier manifest en language YAML (n’utiliser pas de tabulation) afin de décrire votre desired state , vous pouvez désormais créer votre premier avec la commande suivante :
1
kubectl create -f nginx.yaml
Et voici la vidéo démo déploiment d'un POD 😉
Automate with vagrant
pour votre confort, nous mettons à votre disposition sur github le repository
(kubernetes-init-join-vagrant) permetant d’automatiser le processus de bout en bout ❤️ :
création des 04 VMs
configuration des 04 VMs
installation des prérequis
construction d’un serveur / client NFS (pour l’échange de token de jonction)
initiation du cluster Kubernetes sur le master
installation de calico sur le master
generation du token dans un fichier /root/.kube/join-kube-cluster.sh
envoie du token vers les workers en utilisant le serveur NFS
jonction automatique des workers au cluster Kubernetes
tout cela en 03 commandes :
1
2
3
git clone https://github.com/Bahlat87/kubernetes-init-join-vagrant.git
cd kubernetes-init-join-vagrant
vagrant up
à votre service ❤️
Si cet article vous a plu, je vous invite à contacter notre entreprise integrateur open source pour vous aider à mettre en place cette solution et la faire évoluer selon vos besoins.
Aussi, je vous invites à vous abonner à nos réseaux sociaux: