GKE Autopilot, enfin du kubernetes serverless ?
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
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 y a quoi sous le capot ?
Et bien 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é. On peut donc le résumer à un ensemble de fonctionnalités de GKE standard avec des valeurs par défaut (d’ailleurs la liste est disponible ici)
En revanche, Autopilot vient avec son lot de nouvelles contraintes dont vous allez devoir tenir compte dans le déploiement de vos solutions. Mais ces dernières sont principalement issues de bonnes pratiques de déploiement sur kubernetes, avec entre autre, la mise en place de limites et de requêtes sur vos charges de travail, 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 nœuds, sur du GKE Autopilot, vous n’êtes facturé que pour la consommation de ressources de vos pods (toujours processeur, mémoire et disque). Vous n’aurez donc pas à payer pour les ressources consommées par les OS ou les composants système de chacun des nœuds. 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’élasticité 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 ?
A titre personnel, 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 ?”. Et même si comme on l’a vu, techniquement il n’y a pas de nouveautés dans cette offre de Google. Elle viens quand compléter parfaitement la gamme de service de calcul de Google et permettre de développer de nouveaux usages de kubernetes sur le Cloud, avec la première offre de “Kubernetes serverless”. Je ne serais pas surpris de voir ce type d’offre ce multiplier dans les mois et années à venir
Si vous voulez en apprendre encore d’avantage sur la fonctionnalités, sachez que Google organise un webinar le 11 mars prochain (en anglais), le lien d’inscription est ici : https://cloudonair.withgoogle.com/events/build-with-gke
Edit : le webinar est passé, mais disponible en vidéo ci-dessous