Vergemakkelijk Kubernetes Cluster-updates met automation

Thomas Kooi

Platform Architect

Published: 29 March, 2022


Bij Avisi Cloud werken wij al meerdere jaren met Kubernetes. Onze eerste aanraking met Kubernetes was op de Private Cloud. Hierdoor moesten wij gelijk al beginnen met self-hosted Kubernetes.

Als jij net als wij zelf je Kubernetes-clusters uitrolt, zul je er vast bekend mee zijn dat het ecosysteem extreem snel gaat en je continue bezig bent met het bijwerken van systemen. Je kan al snel achterlopen met Kubernetes zelf, de container runtime of andere kritische systeem componenten. Zonder goede automation zal je dit nooit bij kunnen houden.

In deze blog vertellen wij het verhaal van hoe een routine maintenance ronde voor onze Private Cloud-clusters erin resulteerde dat wij twee dagen na het onderhoud ineens overal 50% extra CPU load hadden en wat wij hiervan hebben geleerd en toegepast in onze automation voor Avisi Managed Environments.

Wat doen wij met regulier onderhoud?

Voor onze Private Cloud-clusters doen wij eens per kwartaal een groot regulier onderhoud. Om de onderliggende infrastructuur en de clusterversies te onderhouden reserveren wij één dag per cluster. Een deel van de taken is het installeren van nieuwe updates voor systeem packages (zoals: de yum update en apt-get upgrade), het uitvoeren van machine reboots én natuurlijk het bijwerken van Kubernetes-componenten.

Voor dit proces gebruiken wij Ansible in combinatie met Kubespray. Kubespray is een project waarmee, via een Ansible Playbook, een self-hosted Kubernetes installatie neergezet wordt op Virtual Machines. Naast onze eigen playbooks voor het automatiseren van verschillende workflows tijdens het regulier onderhoud, gebruiken wij Kubespray om Kubernetes te upgraden.

Verhoogde CPU gebruik

Op 17 augustus 2020 hebben wij regulier onderhoud uitgevoerd zonder enig probleem. Hetzelfde onderhoud hadden wij al op meerdere, andere clusters onder ons beheer doorgevoerd en de monitoringsystemen gaven groen licht. Het onderhoud was uitgevoerd tijdens de daluren, waardoor er bijna geen gebruikers gebruik maakten van de applicaties die draaiden op dit cluster.

De volgende werkdag rond 08:00 uur liep het aantal gebruikers op. Dit is normaal, aangezien ons piekmoment tijdens kantooruren op deze omgeving rond dit tijdstip plaatsvindt. Wat echter opvallend was, is dat tegelijkertijd onze monitoringsystemen meldingen maakten dat de performance van de omgeving op alle niveaus achteruit was gegaan.

Na het ontvangen van deze meldingen, zijn onze Avisi Cloud Performance-engineers een incidentenprocedure en performance-analyses gestart. Vrij snel kwamen we erachter dat de CPU-load ruim 50% hoger was dan gebruikelijk! Dit zorgde ervoor dat gebruikers hinder ervaarden in de vorm van langzaam reagerende applicaties.

De combinatie van de cgroup-driver (systemd) met de container runtime (Docker) en de healthchecks (via kubectl exec) veroorzaakte een 20% tot 50% hogere load dan voorheen. Uit onderzoek is gebleken dat dit door een bug in de werking van Runc, in combinatie met systemd en het monitoren van cgroups komt.

Het terugdraaien van de Cgroup-driver naar Cgroupfs zorgde ervoor dat de bug in Runc niet meer optrad. Hierdoor werd het CPU-gebruik op de VM's verminderd, met als gevolg ook het CPU-gebruik op de hardware. Hierdoor keerden alle loads op de systemen terug naar het oorspronkelijke niveau.

Zodra de bug gevonden was, hebben wij dankzij onze automation alle omgevingen bijgewerkt, via Ansible, naar een stabiele configuratie en versie van de container runtime. 

Avisi Managed Environments

Ondertussen hebben wij alle omgevingen vervangen door Avisi Managed Environments (AME). Via AME kan je eenvoudig en gecontroleerd Kubernetes-clusters beheren en upgraden. Hierin hebben wij de automation van upgrades verder geautomatiseerd, waardoor dit nóg stabieler en sneller verloopt. Om stabiliteitsproblemen te voorkomen, gebruiken wij AME met een volledig immutable infrastructuur.

Hierdoor zijn de combinaties van versies, software en componenten altijd gegarandeerd en getest door Avisi Cloud Engineers. Hoe het upgrade proces van een AME Kubernetes Cluster werkt? Je leest het in deze blog.

Conclusie

Door de State-mindset van Cloud Provider Hosts kost het developers veel tijd en handwerk om softwarereleases te doen. Wij van Avisi Cloud vinden dat het uitrollen van software geautomatiseerd moet worden en dat vanuit de Change-mindset gehandeld moet worden. Daarom hebben wij Avisi Managed Environments gecreëerd, waarmee jij 20% extra ontwikkelcapaciteit kan behalen. Wil jij ook 20% extra ontwikkelcapaciteit? Neem dan contact met ons op.

Related blogs

Did you enjoy reading?

Share this blog with your audience!