KubeCon 2019: Plotseling besefte ik hoe complex een cluster is

Joe Beda is principal engineer bij Heptio, een bedrijf dat recent is overgenomen door VMWare. Beda weet veel van Kubernetes, want was voor het oprichten van Heptio werkzaam bij Google als een van de breinen achter de orkestratielaag.

Beda geeft in slechts een paar minuten een kort doorkijkje naar een recente ontwikkeling binnen een van de special interest groups van Kubernetes, de plek waar ontwikkelaars aan bepaalde thema’s samenwerken. Het gaat nu specifiek om het beschrijven van de staat van een cluster, de manier waarop in de containerwereld wordt gewerkt met installatie en configuratie. Een declaratie bevat de uiteindelijke status van het platform, die altijd exact hetzelfde is als in die declaratie aangegeven. Dit is een groot verschil met een meer traditionele manier van installatie en configuratie, waarbij het resultaat nooit helemaal voorspelbaar is. Het is, zeer gesimplificeerd, het verschil tussen “start 3 clusters en rapporteer hoeveel je er hebt” en “start 3 clusters en rapporteer als ze er zijn”.

Die declaratieve manier van werken hoort bij de wereld van containers, maar Beda geeft aan dat de ontwikkelaars van Kubernetes ernstig hebben onderschat hoe complex het is om clusters in de lucht te krijgen. Het tool dat hiervoor ooit is bedacht, kube-up.sh, voldoet eigenlijk niet. Het resultaat hiervan is dat er veel installers zijn gemaakt – door allerhande derden – die allemaal een opiniated aanpak hebben: kortweg betekent dit dat iedere installer zo zijn eigen mening heeft over wat een actief en werkend cluster is. Er zijn keuzes gemaakt, verticals ontstaan, afhankelijkheden gecreëerd.

Het tool kubeadm, toegepast voor het bootstrappen van clusters, is een stap in de goede richting. De volgende stap is de introductie van cluster-api als een standaard manier om clusters te provisionen. In cluster-api, “a declarative idea of what you want a cluster to be”, zit de definitie van cluster, machine, machineset (replicating autoscaling) en machinedeployment (updates). Het is een goed initiatief en een mooie stap in de richting van verdere standaardisatie, maar Beda geeft aan dat het super-early is en alpha 1. In een wereld die zich continu in beta bevindt, wil dat wel iets zeggen.

Het uiteindelijke doel van cluster-api is “democratize how we build and manage clusters”. En democratize duidt op een samenwerking, niet op voorschrijven.