4 raisons pour lesquelles vous devriez utiliser Kubernetes

Sirish Raghuram est co-fondateur et PDG de Platform9 Systems.

Comme la plupart des développeurs de logiciels modernes peuvent en témoigner, les conteneurs nous ont fourni une plus grande flexibilité pour exécuter des applications cloud natives sur une infrastructure physique et virtuelle. Les conteneurs regroupent les services d'une application et les rendent portables dans différents environnements de calcul, à la fois pour une utilisation en développement / test et en production. Avec les conteneurs, il est facile d'augmenter rapidement les instances d'application pour répondre aux pics de demande. Et comme les conteneurs utilisent les ressources du système d'exploitation hôte, ils sont beaucoup plus légers que les machines virtuelles. Cela signifie que les conteneurs utilisent très efficacement l'infrastructure de serveur sous-jacente.

Jusqu'ici tout va bien. Mais bien que les API d'exécution de conteneurs soient bien adaptées à la gestion de conteneurs individuels, elles sont terriblement inadéquates lorsqu'il s'agit de gérer des applications pouvant comprendre des centaines de conteneurs répartis sur plusieurs hôtes. Les conteneurs doivent être gérés et connectés au monde extérieur pour des tâches telles que la planification, l'équilibrage de charge et la distribution, et c'est là qu'un outil d'orchestration de conteneurs comme Kubernetes prend tout son sens.

Système open source pour le déploiement, la mise à l'échelle et la gestion des applications conteneurisées, Kubernetes gère le travail de planification des conteneurs sur un cluster de calcul et gère les charges de travail pour s'assurer qu'elles s'exécutent comme l'utilisateur l'a prévu. Au lieu de se concentrer sur les opérations après coup, Kubernetes associe le développement logiciel et les opérations par conception. En utilisant des constructions déclaratives indépendantes de l'infrastructure pour décrire comment les applications sont composées, comment elles interagissent et comment elles sont gérées, Kubernetes permet une augmentation d'un ordre de grandeur de l'opérabilité des systèmes logiciels modernes.

Kubernetes a été construit par Google sur la base de sa propre expérience de gestion de conteneurs en production, et il doit sûrement une grande partie de son succès à l'implication de Google. Google possède certains des développeurs de logiciels les plus talentueux de la planète et gère certains des plus grands services logiciels à l'échelle. Cette combinaison a permis à Kubernetes de devenir une plate-forme solide comme le roc, capable de répondre aux besoins d'évolutivité de pratiquement toutes les organisations. Cet article explique pourquoi Kubernetes est important et pourquoi il marque un pas en avant significatif pour les équipes devops.

Vidéo connexe: Qu'est-ce que Kubernetes?

Dans cette vidéo de 90 secondes, découvrez Kubernetes, le système open source d'automatisation des applications conteneurisées, par l'un des inventeurs de la technologie, Joe Beda, fondateur et CTO chez Heptio.

Un cadre d'infrastructure pour aujourd'hui

De nos jours, les développeurs sont appelés à écrire des applications qui s'exécutent sur plusieurs environnements d'exploitation, y compris des serveurs sur site dédiés, des clouds privés virtualisés et des clouds publics tels qu'AWS et Azure. Traditionnellement, les applications et les outils qui les prennent en charge étaient étroitement liés à l'infrastructure sous-jacente, de sorte qu'il était coûteux d'utiliser d'autres modèles de déploiement malgré leurs avantages potentiels. Cela signifiait que les applications devenaient dépendantes d'un environnement particulier à plusieurs égards, y compris des problèmes de performances liés à une architecture de réseau spécifique; l'adhésion aux constructions spécifiques aux fournisseurs de cloud, telles que les techniques d'orchestration propriétaires; et les dépendances sur un système de stockage back-end particulier.

PaaS essaie de contourner ces problèmes, mais souvent au prix d'imposer des exigences strictes dans des domaines tels que les langages de programmation et les cadres d'application. Ainsi, le PaaS est interdit à de nombreuses équipes de développement.

Kubernetes élimine le verrouillage de l'infrastructure en fournissant des fonctionnalités de base pour les conteneurs sans imposer de restrictions. Il y parvient grâce à une combinaison de fonctionnalités au sein de la plate-forme Kubernetes, notamment des pods et des services.

Meilleure gestion grâce à la modularité

Les conteneurs permettent de décomposer les applications en parties plus petites avec une séparation claire des préoccupations. La couche d'abstraction fournie pour une image de conteneur individuelle nous permet de repenser fondamentalement la façon dont les applications distribuées sont construites. Cette approche modulaire permet un développement plus rapide par des équipes plus petites et plus ciblées, chacune responsable de conteneurs spécifiques. Cela nous permet également d'isoler les dépendances et d'utiliser plus largement des composants plus petits et bien réglés.

Mais cela ne peut pas être réalisé par les seuls conteneurs; il nécessite un système d'intégration et d'orchestration de ces pièces modulaires. Kubernetes y parvient en partie à l'aide de pods, généralement un ensemble de conteneurs contrôlés comme une seule application. Les conteneurs partagent des ressources, telles que des systèmes de fichiers, des espaces de noms de noyau et une adresse IP. En permettant aux conteneurs d'être colocalisés de cette manière, Kubernetes supprime la tentation de regrouper trop de fonctionnalités dans une seule image de conteneur.

Le concept de service dans Kubernetes est utilisé pour regrouper une collection de pods qui exécutent une fonction similaire. Les services peuvent être facilement configurés pour la découverte, l'observabilité, la mise à l'échelle horizontale et l'équilibrage de charge.

Déployer et mettre à jour des logiciels à grande échelle

Devops est apparu comme une méthode pour accélérer le processus de création, de test et de publication de logiciels. Son corollaire a été un changement d'orientation de la gestion de l'infrastructure à la gestion de la façon dont les logiciels sont déployés et mis à jour à grande échelle. La plupart des frameworks d'infrastructure ne prennent pas en charge ce modèle, mais Kubernetes le fait, en partie via les contrôleurs Kubernetes. Grâce aux contrôleurs, il est facile d'utiliser l'infrastructure pour gérer le cycle de vie des applications.

Le Deployment Controller simplifie un certain nombre de tâches de gestion complexes. Par exemple:

  • Évolutivité. Les logiciels peuvent être déployés pour la première fois de manière évolutive sur les pods, et les déploiements peuvent être mis à l'échelle à tout moment.
  • Visibilité. Identifiez les déploiements terminés, en cours et en échec avec des fonctionnalités de requête d'état.
  • Gain de temps. Suspendez un déploiement à tout moment et reprenez-le plus tard.
  • Contrôle de version. Mettez à jour les pods déployés à l'aide de versions plus récentes des images d'application et revenez à un déploiement antérieur si la version actuelle n'est pas stable.

Entre autres possibilités, Kubernetes simplifie quelques opérations de déploiement spécifiques qui sont particulièrement précieuses pour les développeurs d'applications modernes. Ceux-ci comprennent les éléments suivants:

  • Mise à l'échelle automatique horizontale. Les autoscalers Kubernetes dimensionnent automatiquement le nombre de pods d'un déploiement en fonction de l'utilisation des ressources spécifiées (dans les limites définies).
  • Mises à jour progressives. Les mises à jour d'un déploiement Kubernetes sont orchestrées de manière «continue», dans les pods du déploiement. Ces mises à jour progressives sont orchestrées tout en travaillant avec des limites prédéfinies facultatives sur le nombre de pods qui peuvent être indisponibles et le nombre de pods de rechange qui peuvent exister temporairement.
  • Déploiements Canary. Un modèle utile lors du déploiement d'une nouvelle version d'un déploiement consiste à d'abord tester le nouveau déploiement en production, en parallèle avec la version précédente, et à augmenter le nouveau déploiement tout en réduisant simultanément le déploiement précédent.

Contrairement aux offres PaaS traditionnelles et tout compris, Kubernetes offre une grande latitude pour les types d'applications prises en charge. Il ne dicte pas les cadres d'application (tels que Wildfly), ne limite pas les environnements d'exécution de langage pris en charge (Java, Python, Ruby), ne s'adresse qu'aux applications à 12 facteurs ou ne distingue pas les «applications» des «services». Kubernetes prend en charge une grande variété de charges de travail, y compris les charges de travail sans état, avec état et de traitement de données. Si une application peut s'exécuter dans un conteneur, elle devrait bien s'exécuter sur Kubernetes.

Jeter les bases des applications cloud natives

Pas étonnant vu l'intérêt porté aux conteneurs, d'autres outils de gestion et d'orchestration ont vu le jour. Les alternatives populaires incluent Apache Mesos avec Marathon, Docker Swarm, AWS EC2 Container Service (ECS) et Nomad de HashiCorp.

Chacun a ses mérites. Docker Swarm est étroitement associé au runtime Docker, afin que les utilisateurs puissent facilement passer de Docker à Swarm; Mesos with Marathon ne se limite pas aux conteneurs, mais peut déployer tout type d'application; AWS ECS est plus facile d'accès pour les utilisateurs AWS actuels. Cependant, les clusters Kubernetes peuvent s'exécuter sur EC2 et s'intégrer à des services tels que Amazon Elastic Block Storage, Elastic Load Balancing, Auto Scaling Groups, etc.

Ces frameworks commencent à se dupliquer en termes de fonctionnalités et de fonctionnalités, mais Kubernetes reste extrêmement populaire en raison de son architecture, de son innovation et de la grande communauté open source qui l'entoure.

Kubernetes marque une percée pour les devops car il permet aux équipes de suivre le rythme des exigences du développement logiciel moderne. En l'absence de Kubernetes, les équipes ont souvent été obligées de créer leurs propres workflows de déploiement, de mise à l'échelle et de mise à jour de logiciels. Certaines organisations emploient de grandes équipes pour gérer ces tâches seules. Kubernetes nous permet de tirer le maximum d'utilité des conteneurs et de créer des applications cloud natives qui peuvent s'exécuter n'importe où, indépendamment des exigences spécifiques au cloud. C'est clairement le modèle efficace pour le développement d'applications et les opérations que nous attendions.

Le New Tech Forum offre un lieu pour explorer et discuter des technologies d'entreprise émergentes avec une profondeur et une ampleur sans précédent. La sélection est subjective, basée sur notre choix des technologies que nous pensons importantes et qui intéressent le plus les lecteurs. n'accepte pas les supports marketing pour la publication et se réserve le droit de modifier tout le contenu fourni. Envoyez toutes vos demandes à [email protected]