Un guide sur l’orchestration de conteneurs avec Kubernetes


  • FrançaisFrançais



  • Le terme orchestration est relativement nouveau dans l’industrie informatique, et il a encore des nuances qui échappent ou déroutent les personnes qui ne passent pas toute la journée à orchestrer. Lorsque je décris l’orchestration à quelqu’un, cela donne généralement l’impression que je ne fais que décrire l’automatisation. Ce n’est pas tout à fait juste. En fait, j’ai écrit tout un article différenciant l’automatisation et l’orchestration.

    Une façon simple d’y penser est que l’orchestration n’est qu’une forme d’automatisation. Pour comprendre comment vous pouvez bénéficier de l’orchestration, il est utile de comprendre ce qu’elle automatise spécifiquement.

    Comprendre les conteneurs

    Un conteneur est une image d’un système de fichiers contenant uniquement ce qui est nécessaire pour exécuter une tâche spécifique. La plupart des gens ne construisent pas de conteneurs à partir de zéro, bien que lire comment cela se fasse peut être éclairant. Au lieu de cela, il est plus courant d’extraire une image existante d’un hub de conteneur public.

    Un moteur de conteneur est une application qui exécute un conteneur. Lorsqu’un conteneur est exécuté, il est lancé avec un mécanisme de noyau appelé un cgroupqui sépare les processus à l’intérieur du conteneur des processus exécutés à l’extérieur du conteneur.

    Exécuter un conteneur

    Vous pouvez facilement exécuter un conteneur sur votre propre ordinateur Linux avec Podman, Docker ou LXC. Ils utilisent tous des commandes similaires. Je recommande Podman, car il est sans démon, ce qui signifie qu’un processus n’a pas besoin de s’exécuter tout le temps pour qu’un conteneur se lance. Avec Podman, votre moteur de conteneur ne fonctionne que lorsque cela est nécessaire. En supposant qu’un moteur de conteneur est installé, vous pouvez exécuter un conteneur simplement en vous référant à une image de conteneur dont vous savez qu’elle existe sur un hub de conteneur public.

    Par exemple, pour exécuter un serveur Web Nginx :

    $ podman run -p 8080:80 nginx
    10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
    10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
    [...]

    Ouvrez un terminal séparé pour le tester à l’aide de curl :

    $ curl --no-progress-meter localhost:8080 | html2text
    # Welcome to nginx!

    If you see this page, the nginx web server is successfully installed and
    working. Further configuration is required.

    For online documentation and support please refer to
    [nginx.org](http://nginx.org/).  
    Commercial support is available at [nginx.com](http://nginx.com/).

    _Thank you for using nginx._

    Au fur et à mesure des installations de serveur Web, c’est assez facile.

    Imaginez maintenant que le site Web que vous venez de déployer enregistre un pic de trafic inattendu. Vous n’aviez pas prévu cela, et même si Nginx est un serveur Web très résistant, tout a ses limites. Avec suffisamment de trafic simultané, même Nginx peut planter. Maintenant quoi?

    Conteneurs de soutien

    Les conteneurs sont bon marché. En d’autres termes, comme vous venez de le constater, ils sont triviaux à lancer.

    Vous pouvez également utiliser systemd pour rendre un conteneur résilient, afin qu’un conteneur se relance automatiquement même en cas de plantage. C’est là que l’utilisation de Podman est utile. Podman a une commande pour générer un fichier de service systemd basé sur un conteneur existant :

    $ podman create --name mynginx -p 8080:80 nginx
    $ podman generate systemd mynginx \
    --restart-policy=always -t 5 -f -n

    Vous pouvez lancer votre service de conteneur en tant qu’utilisateur standard :

    $ mkdir -p ~/.config/systemd/user
    $ mv ./container-mynginx.service ~/.config/systemd/user/
    $ systemctl enable --now --user container-mynginx.service
    $ curl --head localhost:8080 | head -n1
    HTTP/1.1 200 OK

    Exécuter des pods de conteneurs

    Parce que les conteneurs sont bon marché, vous pouvez facilement lancer plus d’un conteneur pour répondre à la demande de votre service. Avec deux conteneurs (ou plus) offrant le même service, vous augmentez la probabilité qu’une meilleure répartition du travail permette de gérer avec succès les demandes entrantes.

    Vous pouvez regrouper des conteneurs dans des pods, que Podman (comme son nom l’indique) peut créer :

    $ systemctl stop --user container-myngnix
    $ podman run -dt --pod new:mypod -p 8080:80 nginx
    $ podman pod ps
    POD ID     NAME   STATUS  CREATED  INFRA ID  # OF CONTAINERS
    26424cc... mypod  Running 22m ago  e25b3...   2

    Cela peut également être automatisé en utilisant systemd :

    $ podman generate systemd mypod \
    --restart-policy=always -t 5 -f -n

    Grappes de gousses et conteneurs

    Il est probablement clair que les conteneurs offrent diverses options de déploiement d’applications et de services en réseau, en particulier lorsque vous utilisez les bons outils pour les gérer. Podman et systemd s’intègrent très efficacement aux conteneurs, et ils peuvent aider à garantir que vos conteneurs sont disponibles quand ils sont nécessaires.

    Mais vous ne voulez pas vraiment rester assis devant vos serveurs toute la journée et toute la nuit, juste pour pouvoir ajouter manuellement des conteneurs aux pods chaque fois que tout Internet décide de vous rendre visite. Même si vous pouviez le faire, les conteneurs ne sont aussi robustes que l’ordinateur sur lequel ils s’exécutent. Finalement, les conteneurs exécutés sur un seul serveur épuisent la bande passante et la mémoire de ce serveur.

    La solution est un cluster Kubernetes : de nombreux serveurs, l’un agissant comme un “plan de contrôle” où toute la configuration est entrée et de très nombreux autres agissant comme des nœuds de calcul pour s’assurer que vos conteneurs disposent de toutes les ressources dont ils ont besoin. Kubernetes est un grand projet, et il existe de nombreux autres projets, comme Terraform, Helm et Ansible, qui s’interfacent avec Kubernetes pour rendre les tâches courantes scriptables et faciles. C’est un sujet important pour tous les niveaux d’administrateurs système, d’architectes et de développeurs.

    Pour tout savoir sur l’orchestration de conteneurs avec Kubernetes, téléchargez notre eBook gratuit : Un guide pour l’orchestration avec Kubernetes. Le guide vous apprend à configurer un cluster virtuel local, à déployer une application, à configurer une interface graphique, à comprendre les fichiers YAML utilisés pour configurer Kubernetes, etc.

    Source

    N'oubliez pas de voter pour cet article !
    1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
    Loading...

    La Rédaction

    L'équipe rédactionnnelle du site

    Pour contacter personnellement le taulier :

    Laisser un commentaire

    Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *