Introduction à kubernetes

Qu’est ce que Kubernetes ?

C’est un orchestrateur de container, il permet de d’automatiser le déploiement des applications en container. (Architecture dynamique) Il est open source.
kubernetes va gérer le bon fonctionnement de nos applications via la déclaration d’un « état souhaité » (nombre de CPU, RAM, réplicat ext …)

Avantages :
Vitesse de déploiement, notion de micro service
Capacité à absorber rapidement les changements
Capacité à récupérer rapidement (Perte de l’état souhaité, correction rapide)
Abstraction de la complexité du cluster, charge à l’administrateur de définir l’environnement pour le développeur qui peut se concentrer sur l’application.

Principe de Kubernetes
On va définir notre application kubernetes dans une configuration déclarative (état souhaité ou manifeste). Suite à cela Kubernetes va tout mettre en œuvre pour conserver l’état inscris dans notre déclaration.(Via les objets contrôleurs, qui vont vérifier régulièrement l’état du cluster)
A l’opposé de ce mode de fonctionnement actuellement on travail de façon impérative. (Administration manuel d’un SI, ajout de ressources CPU/RAM ext …)
On va pouvoir interagir avec Kubernetes via son serveur API.

Principe de l’API Kubernetes

Kubernetes est constitué d’une collection de primitives qui représentent l’état du système.
Pour intéragir avec Kubernetes on va passer par l’API RESTful qui s’exécute en HTTP ou HTTPS via le format JSON stocké dans une BDD interne.

Quelques objets de Kubernetes

  • POD : Un seul ou plusieurs container que l’on va déployer comme une « unité »
  • Contrôleur : Permette de maintenir notre cluster dans l’état souhaité
  • Service : Fournisse un point d’accès permanent dans l’application
  • Stockage : Appelé volume, cela permet de stocker les données de façon persistantes

Détail sur les PODS
Un POD est une unité de travail élémentaire (la plus petite pour kubernetes), il peut contenir un ou plusieurs container. Kubernetes va gérer notre POD, pas le container. Il va contenir notre application. Si le container interne au pod disparait, le POD disparait avec lui, même réaction dans le cas d’un POD multi container.
Le travail de Kubernetes sera donc de garder en état de fonctionnement notre POD, il va suivre son état. On va utiliser des sondes d’activité afin de surveiller le bon fonctionnement de notre application, « Liveness Probes ». (Ping vers un serveur WEB par exemple pour vérifier la bonne réponse du serveur WEB dans le POD)

Continuer la lecture de Introduction à kubernetes

Tutorial Docker pour démarrer sous Ubuntu 16.04

Courte présentation d’une procédure permettant de déployer rapidement des containers Docker. Dans l’exemple je présente le déploiement d’un container apache2 sous Docker sans utiliser de fichier de configuration. Configurer des containers via des fichiers de configuration permet d’automatiser le déploiement et faciliter la configuration du container. L’utilisation de fichier de configuration pour Docker fera l’objet d’un future billet.

Installation du Service Docker

Version du noyau et l’architecture du système

sudo uname -rm

Version de la release

sudo lsb_release –a

Update des dépôts

sudo apt-get update

Installation des paquets supplémentaires recommandés

sudo apt-get install -y --no-install-recommends linux-image-extra-$(uname -r) linux-image-extra-virtual

Installation de Docker depuis les dépôts Ubuntu

sudo apt-get install -y docker.io

Vérification de l’installation de Docker avec le container de base

sudo docker run hello-world

Si Docker ne peut pas trouver une image dans le système local, il va la télécharger dans le hub de la communauté docker (pulling). Dans notre exemple le container hello-world n’est pas présent par défaut. Il sera donc téléchargé automatiquement.

Nettoyer une installation Docker
sudo apt-get purge docker-engine
sudo rm -rf /var/lib/docker

Si des fichiers de configuration supplémentaires ont été installés, ils doivent être supprimés manuellement.

Continuer la lecture de Tutorial Docker pour démarrer sous Ubuntu 16.04