Intro
Kubernetes (communément appelé « K8S ») est un système open source qui vise à fournir une « plate-forme permettant d'automatiser le déploiement, la montée en charge et la mise en œuvre de conteneurs d'application sur des clusters de serveurs ». Il fonctionne avec toute une série de technologies de conteneurisation, et est souvent utilisé avec Docker. Il a été conçu à l'origine par Google, puis offert à la Cloud Native Computing Foundation. (Wikipedia)
AKS (Azure Kubernete Service) est un service Kubernetes sur Azure. Il permet d’automatiser le déploiement, la mise à l’échelle et le fonctionnement de conteneurs d’application entre des clusters d’hôtes.
C'est un orchestrateur de conteneur. Cela signifie qu'il est en charge de monter des conteneurs suivant un plan que l'on fixe. Il peut par exemple automatiser la charge (monter des conteneurs supplémentaire), relancer un conteneur défaillant, prévoir une réduction ou une augmentation de charge (planification) et donc adapter des besoins suivant des critères (horraire, ponctuel, exceptionnel, CPU, Bandwidth...)
https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/
L'image ci dessous permet d'illustrer ce qu'est un cluster de conteneurs :
Un cluster Kubernetes regroupe plusieurs hôtes Docker et les expose sous la forme d’un seul hôte Docker virtuel. Vous pouvez donc déployer plusieurs conteneurs sur le cluster et effectuer un scale-out d’un nombre illimité d’instances de conteneurs. Le cluster prend en charge tous les détails complexes de la gestion, comme la scalabilité, l’intégrité,etc.
Structure et topologie
Kubernetes dispose d'une structure basée sur un Master Node et des Nodes.
Le Master Node contrôle les nodes. Ces dernières sont des machines virtuelles ou physique.
Sur une node on peut retrouver un ou des Pods.
Un namespace permet de segmenter des pods, volumes, secrets, configmap... On peut avoir deux namespaces (par exemple dev et staging) sur le même cluster. (là où d'habitude on travaillait avec des machines séparées sur une app monolithique)
kubectl est l'application en ligne de commande permettant d'interragir avec Kubernetes.
Il est possible d'utiliser Kubernetes sur votre machine locale avec Docker Desktop en cochant cet option :
Il est donc possible de travailler localement et préparer ses fichier yaml pour AKS (dev, staging, prod)
Pour cela il faut aussi préparer nos conteneurs et les déposer sur un registre (Docker Registry sur Azure) afin qu'ils puissent être utilisé par AKS.
Ressources pour se former :
Podcast Devapps.be
Introduction à Kubernetes : https://www.youtube.com/watch?v=b5vJsYR-Vbo
La doc microsoft : https://docs.microsoft.com/fr-fr/azure/aks/
Comprendre Kubernetes en 3 minutes : https://www.youtube.com/watch?v=uyiDNcSmwFw (perso j'ai rien compris...) Celle la est mieux https://www.youtube.com/watch?v=QJ4fODH6DXI
xavki : https://www.youtube.com/watch?v=vFfngcRPj9M
Web2Day 2017 : https://www.youtube.com/watch?v=zztKO0iRX_w&t=175s