De highlights van KubeCon Kopenhagen 2018
Het Linux Foundation-event KubeCon was vorige week aanbeland in Europa. Meer dan 4.000 bezoekers reisden af naar Kopenhagen om 3 dagen lang hun honger naar meer kennis over onder andere Kubernetes, containerd, CoreDNS en Linkerd te stillen. TransIP was er natuurlijk ook bij; welke onderwerpen zijn ons het meest bijgebleven en wat hebben we ervan opgestoken?
Runtime environments: de keuze is reuze
Om containers in te zetten voor het draaien van je eigen infrastructuur heb je de keuze uit verschillende zogeheten runtimes. Dit is de software die als laatste schakel daadwerkelijk verantwoordelijk is voor het starten van de container. De keuze voor een runtime, zal mede afhangen van de gewenste snelheid en veiligheid van je platform. Wil je de meeste performance uit je container halen, dan kán dat ten koste gaan van veiligheid. Op het moment dat je een eigen applicatie draait hoeft dat geen probleem te zijn, maar als je ‘untrusted software’ gaat draaien, wordt het een ander verhaal. Tijdens KubeCon zijn we verschillende container en runtime environments tegengekomen die zowel hun voor- als nadelen hebben.
Kata Containers is een vrij nieuwe runtime environment die de security-voordelen van VM’s en het gemak van containers biedt, door containers binnen een VM te starten. De footprint van de containers wordt natuurlijk wel groter en momenteel is het opstarten van een container nog niet zo snel als bij runC van Docker zelf.
Een andere nieuwkomer is crun van Red Hat met schijnbaar ongeëvenaarde performance. Het project is nog erg jong maar veelbelovend. Het is qua security-model vergelijkbaar met runC.
Google heeft op KubeCon een nieuwe containeroplossing aangekondigd genaamd gVisor, die de voordelen van een VM-geïsoleerde container biedt. De extra grote footprint wordt vermeden door een soort minikernel met een beperkte set aan syscalls tussen de hypervisor en de container te gebruiken. Een nadeel is dat vooralsnog niet alle syscalls geëmuleerd worden en dus niet alle software probleemloos draait. Dat gezegd hebbende, een interessant project om de komende tijd in de gaten te houden.
Linkerd
Linkerd wordt gebruikt in microservice-omgevingen als slimme load balancer voor bijvoorbeeld de onderlinge communicatie tussen services, een zogeheten service mesh. Hierbij zit er een extra laag tussen alle communicatie, wat op het eerste gezicht zou zeggen dat er dus meer latency is en plekken waar dingen fout kunnen gaan.
Tijdens KubeCon is er een demo gegeven waar het tegendeel bewezen wordt. Doordat Linkerd continu meet hoe lang requests duren en of ze succesvol worden afgerond, wordt er slim gebalanceerd tussen de verschillende endpoints. Drukkere services (die langzamer reageren) zullen minder request krijgen om zo op adem te komen. Endpoints die errors aangeven worden automatisch uit de roulatie gehaald en de gefaalde requests worden opnieuw uitgevoerd bij een ander endpoint. Dit maakt over het algemeen een hogere succesrate en betere balancing mogelijk. Uiteraard zal de demo in het voordeel van Linkerd zijn ingericht; productietesten zullen moeten uitwijzen of het inderdaad beter presteert.
101 ways of breaking and recovering a Kubernetes-platform
Met Kubernetes zijn enorm schaalbare en highly-available clusters te creëren. Wanneer alles goed staat, heb je de holy grail te pakken: een perfect werkende cloud. Een nadeel is wel dat wanneer je een cluster sloopt, het failure-domein ook een stuk groter is.
In twee verschillende talks is er ingegaan op het slopen en vervolgens fixen van een Kubernetes-cluster. Zo spraken de Britse bank Monzo en Oath van Yahoo over de keren dat een van hun clusters faalde.
Uit deze talks kunnen we twee gouden tips afleiden:
Pas op met upgraden, maar tegelijkertijd; upgrade wel regelmatig. Het updaten van verschillende services kan ervoor zorgen dat ze incompatibel worden. Met name het upgraden van services als etcd of Linkerd worden gezien als ‘scary upgrades’. Dat klinkt heftig, maar uiteindelijk loont het om updates goed bij te houden. Kubernetes brengt drie keer per jaar een nieuwe release uit. Hoe langer je wacht, hoe enger het wordt.
Bouw beveiliging in met admission-controllers. Kleine fouten kunnen grote gevolgen hebben. Zo werd bij Oath ooit eens het hele cluster platgelegd door één simpele configuratie-file te verwijderen. Vervolgens was een overlap in hostnames tussen twee pods reden voor requests die gebalanced werden tussen twee totaal verschillende services. Met behulp van admission-controllers zorg je ervoor dat bepaalde aanpassingen niet gedaan kunnen worden. Bijvoorbeeld het verwijderen van een namespace met actieve services of het dubbel gebruiken van dezelfde hostname.
Storage
Zonder persistente opslag kan je uiteindelijk niets; vandaar dat er genoeg sprekers over het belang van storage hun zegje hebben gedaan. Een van de prestentaties ging over het juist omgaan met de storage-behoeften in Kubernetes. Naast een aantal algemeen bekende storage-oplossingen zoals Ceph en S3 werd er stilgestaan bij local persistent storage en de specifiek hiervoor ontwikkelde plug-in.
Hoewel local persistent storage onlogisch lijkt in een omgeving waar containers typisch op willekeurige nodes binnen het cluster gespawnd kunnen worden, zijn er wel degelijk toepassingen voor te bedenken. Een daarvan is bijvoorbeeld het draaien van een Ceph-cluster bovenop Kubernetes waarbij de OSD-containers middels node affinity op dezelfde nodes terechtkomen. Om zo’n Ceph-cluster weer in goede banen te leiden, werd Rook uit de doeken gedaan. Een kind kan de was doen!
Good(ie) times
Aan het einde van KubeCon zijn we natuurlijk niet vergeten om de verschillende goodies te inspecteren (lees: ervan te profiteren). De meeste sponsor booths deelden zoals gebruikelijk T-shirts, jojo’s, waterflessen en stickers uit. Maar sommige sponsoren hebben het creatieve pad gekozen. Zo had InfluxData bijvoorbeeld sokken en GitLab dobbelstenen in de aanbieding en deelde Red Hat rode fedora's uit. We kwamen zelfs de stand van Black Duck tegen met badeendjes. Na misselijk te zijn geworden van alle draaiende fidget spinners hebben we het event afgesloten met oer-Hollandse stroopwafels. KubeCon, bedankt voor de good times!
Bedankt voor het toelichten!