GKE Autopilot, enfin du kubernetes serverless ?


Cet article a été écrit pour le compte de Sfeir et d’abord publié sur medium


Google et Kubernetes, une longue histoire

L’histoire de Kubernetes est fortement liée à Google, la firme est à l’origine du projet même s’il est géré par la Cloud Native Computing Foundation depuis 2015, Google reste très actif dans l’écosystème Kubernetes.

Aujourd’hui tous les fournisseurs de solutions cloud proposent un service d’infrastructure kubernetes managée (avec notamment OVH, ou Scaleway en France). Il n’en reste pas moins que Google a de l’avance et continue d’ajouter de nouveaux produits et services à son offre (avec notamment Anthos, le kubernetes multi-cloud, qui est sorti en 2019).

Aujourd’hui Google nous propose une nouvelle solution avec Autopilot, faisons un petit tour d’horizon de la solution.

Autopilot, c’est quoi ?

Autopilot est un nouveau mode de fonctionnement dans Google Kubernetes Engine (GKE), conçu pour réduire les coûts opérationnels liés à la gestion des clusters, optimiser vos clusters pour la production et accroître la disponibilité de vos charges de travail. — Présentation d’Autopilot par Google

Techniquement il y a quoi sous le capot ?

Google décrit donc Autopilot comme étant une option sur GKE vous permettant de ne plus avoir à gérer la partie infrastructure de votre cluster Kubernetes pour vous concentrer sur la partie déploiement et utilisation de ce cluster.

Techniquement il n’y a pas de nouveautés, toutes les fonctionnalités techniques, ou presque, sont déjà présentes aujourd’hui dans l’offre GKE standard. Avec notamment l’auto-scaling, les mises à jour automatiques, la gestion de la sécurité. Techniquement Autopilot se résume donc à un ensemble de fonctionnalités de GKE standard avec des valeurs par défaut (d’ailleurs la liste est disponible ici)

Autopilot vient aussi avec son lot de nouvelles contraintes dont vous allez devoir tenir compte dans le déploiement de vos solutions. Mais ces contraintes sont principalement issues de bonnes pratiques de déploiement en termes de résilience (mise en place de limites et de requêtes sur vos charges de travail) et de sécurité (limitation des fonctionnalités Linux utilisables par les pods pour limiter la surface d’attaque, pas de pods privilégiés, etc…).

Et donc ça change quoi finalement ?

La grosse nouveauté qu’apporte GKE Autopilot c’est d’avoir une approche serverless pour gérer et déployer des solutions sur Kubernetes.

Avec un cluster GKE autopilot Google gère la partie infrastructure pour vous et donc s’engage à vous fournir une infrastructure disponible pour déployer vos pods et services. Alors que sur une offre standard l’engagement de Google ne porte que sur la fourniture des composants système du cluster.

“Autopilot Pods in Multiple Zones” means the compute capacity provisioned by the Google Kubernetes Engine Autopilot Service to schedule user pods, where pods are scheduled across two or more Zones in the same Region. — SLA GKE Autopilot

Et l’autre nouveauté clef, qui va potentiellement changer les usages de GKE aujourd’hui, c’est l’évolution du prix. En effet, avec Autopilot vous serez toujours facturés pour les composants du control plane kubernetes (comme sur du GKE standard), à raison de 0.10$/h.

En revanche, concernant la facturation des noeuds, sur du GKE Autopilot, vous n’êtes facturé que pour la consommation de ressources de vos pods (toujours processeur, mémoire et disque). Vous ne payez pas pour les ressources des noeuds qui ne sont pas utilisées, ou pour les ressources OS de chacun de ses noeuds ! Attention toutefois, il ne s’agit pas de la consommation réelle du pod, mais des ressources que le pod a demandé dans sa spécification (CPU/memory requests dans kubernetes).

Alors, certes le prix au vCPU ou au Go de RAM est plus important que sur du GKE standard, mais comme tout les produits dits “serverless”, les cas d’usage ne sont pas les mêmes et Autopilot sera financièrement plus intéressant si vous avez besoin d’elasticité et de scalabilité.

Positionnement dans l’offre cloud de Google

Aujourd’hui dans l’offre de Google il est déjà possible de déployer des conteneurs en “mode serverless” avec Cloud Run et AppEngine flexible. Mais ces deux produits ont des contraintes fortes (notamment l’exposition en HTTP/HTTPS) qui peuvent amener à devoir basculer sur du GKE pour certains cas d’usage (hébergement de base de données, ou de service en TCP/UDP)

L’offre qui permettait aujourd’hui de lever ses contraintes tout en restant dans un monde de conteneur est GKE. Seulement passer de Cloud Run/App engine à GKE, n’est pas anodin, non seulement cela représente un coût supplémentaire, mais il faut aussi les compétences capables de gérer un parc de machines. L’offre GKE Autopilot se positionne parfaitement dans ce créneau et permet de continuer de déployer des pods (et non pas des conteneurs) en “mode serverless”, sans pour autant devoir administrer et gérer un cluster kubernetes complet.

Alors finalement c’est une révolution ?

Au final, même si comme on l’a vu techniquement il n’y a pas de grandes nouveautés dans l’offre Autopilot. Je pense que dans les usages Autopilot pourrait développer de nouveaux usages de kubernetes.

J’ai souvent été confronté à ce dilemme du “Cloud run c’est un peu trop limitant, mais on va quand même pas devoir gérer une cluster GKE pour ça ?”, du coup je pense que la demande pour cette offre est présente et je ne serais pas surpris de voir ce type d’offres accessibles chez d’autres fournisseurs cloud dans les mois et années à venir.