Host jij je WordPress-website op een traditionele (virtuele) server of op een Shared Hosting-omgeving? Dan kan je in veel gevallen meer uit je hostingomgeving halen door je website in containers te draaien met Kubernetes. Een omgeving die nooit meer down gaat bij veel bezoekers, bij technisch falen van je server, of tijdens het upgraden van je website. Het is binnen handbereik met Kubernetes. In dit artikel gaan we in op de basis van Kubernetes en de voordelen van het draaien van WordPress in Kubernetes.

Kubernetes: de basis

Met Kubernetes kan je je volledige WordPress-omgeving in containers draaien. Een container is een minimale omgeving die alleen de noodzakelijke toepassing bevat om één taak te kunnen vervullen, bijvoorbeeld het serveren van webpagina’s, het uitvoeren van PHP-code of het opbouwen van een cache. De containers bevatten zelf geen unieke data, maar bewaren de data op een externe lokatie. Daardoor kan iedere container snel gedupliceerd of vervangen worden. Kubernetes verzorgt het opschalen van je containers bij hoge belasting, regelt het vervangen van containers die niet stabiel zijn en zorgt voor high-availability.

Kubernetes is een platform waarop je je containers kunt draaien. Je hebt geen omkijken meer naar het onderhoud zoals je dat bij een VPS hebt, maar je hebt ook niet de beperkingen die je kent van een shared hosting omgeving. Het enige dat je nodig hebt is een Kubernetes omgeving. Kies je voor Managed Kubernetes van Cloudlets, dan wordt het operationele deel volledig voor je verzorgd en kan je direct aan de slag met het uitrollen van container-applicaties zoals WordPress. Onderstaand een sterk vereenvoudigde weergave van de Kubernetes-infrastructuur:

Je containers draaien op Kubernetes. Kubernetes draait op (virtuele) servers, waar je geen omkijken naar hebt.

Waarom WordPress op Kubernetes draaien?

WordPress is een applicatie die zich er goed voor leent om in containers gedraaid te worden. Doordat je de core van WordPress prima kunt scheiden van de gebruikersdata (wp-content) en de database onafhankelijk van WordPress zelf kunt draaien, stelt Kubernetes je in staat om met weinig moeite en kosten een schaalbare, high-available en enorm stabiele omgeving neer te zetten

  • Resource efficient: Doordat een container met WordPress heel klein blijft en ingesteld kan worden om bijvoorbeeld 512MB geheugen en 1 CPU te te gebruiken, realiseer je een situatie waarbij je website een minimale hoeveelheid geheugen en CPU-kracht gebruikt op momenten dat het rustig is op je website. Op momenten dat WordPress meer wordt belast, start Kubernetes automatisch extra containers op om te belasting op te vangen. Iedere extra container claimt de vooraf gedefinieerde resources. Daardoor heb je alleen de resources in gebruik die je daadwerkelijk nodig hebt, in tegenstelling tot de situatie bij een (virtuele) server waar je altijd veel geheugen en CPU hebt gereserveerd, ook op de momenten dat je ze niet nodig hebt.
  • High available: Omdat een container eenvoudig gedupliceerd kan, is het mogelijk om meerdere replicates van WordPress te draaien. Kubernetes zorgt ervoor dat deze replica’s over de verschillende onderliggende nodes (‘servers’) worden verdeeld, zodat een hardwaredefect bij een van de nodes in de onderliggende infrastructuur de bereikbaarheid van je website niet beinvloedt.
  • Schaalbaar: Kubernetes biedt een autoscale-functie die out-of-the-box werkt. Perfect voor websites die pieken in de bezoekersaantallen hebben. Bij de woorden ‘schaalbaarheid’ en ‘bezoekerspiek’ denk je wellicht aan een grote website met plotseling heel hoge bezoekersaantallen, maar het verschil in bezoekersaantallen tussen dag en nacht is in veel gevallen al dermate relevant dat de autoscaling-functie je voordelen kan opleveren. Waarom zou je in de nacht immers resources claimen die je dan niet nodig hebt?

Wij zien dat websites dankzij Kubernetes aanzienlijk stabieler draaien, een betere performance hebben en tegelijkertijd veel minder resources gebruiken en daardoor voordeliger gehost kunnen worden. Zeker als je meerdere websites draait is dat een groot voordeel. Zowel op het gebied van geheugen- en CPU-verbruik neemt het voordeel snel toe als je meerdere websites op Kubernetes draait, maar het gaat je ook veel tijd schelen doordat je geen (virtuele) servers meer hoeft te onderhouden. Als je WordPress eenmaal hebt draaien, hoef je je niet meer te bekommeren om de operationele kant maar kan je je bezighouden met de daadwerkelijke applicatie .

WordPress en Kubernetes in de praktijk

Wil je WordPress op Kubernetes gaan draaien, dan zijn er twee voordehandliggende opties:

  • Je kiest ervoor om een container met de applicatie WordPress te draaien en die te koppelen aan een volume met daarin alle gebruikersdata (doorgaans alleen de map wp-content). Naast je WordPress-applicatie bevat je container met WordPress een minimaal noodzakelijke webserver die ook PHP-code kan uitvoeren. De container met WordPress kan je gewoon dupliceren en schalen en je profiteert ook van alle andere opties die Kubernetes te bieden heeft. In onderstaande afbeelding zie je twee containers die beiden een identieke versie van WordPress draaien en een container met de MySQL database. Valt één van beide WordPress-containers weg, dan start Kubernetes direct weer een nieuwe container op. In de tussentijd komen alle bezoekers terecht op de ‘gezonde’ WordPress-container. Neemt je bezoekersstroom plotseling toe, dan start Kubernetes een aantal extra containers op om de extra belasting op te vangen. Schematisch en heel erg vereenvoudigd krijg je dan de volgende opzet:

  • Je kunt er ook voor kiezen om aparte containers te draaien voor de webserver en PHP, waarbij je de volledige WordPress-installatie op een gekoppeld volume plaatst. Deze optie biedt als voordeel dat je de applicatie PHP of de webserver apart van elkaar kunt opschalen. Dat is interessant voor websites met erg hoge bezoekersaantallen, maar ook voor websites waarbij het niet wenselijk is om wp-content en de WordPress-core van elkaar te scheiden. Dit laatste kan bijvoorbeeld het geval zijn als je je volledige WordPress-installatie onder versiebeheer hebt gebracht.

Welk van beide opties je kiest maakt voor het functioneren van WordPress niet uit, maar het kan wel een belangrijke operationele keuze zijn. Houd bij het bepalen van de keuze rekening met je deploymentproces en de manier waarop je je applicatie wilt schalen. Wij adviseren je graag over de beste oplossing in je situatie.

Aan de slag met WordPress in Kubernetes

Overtuigd van het voordeel van Kubernetes voor je WordPress-omgeving? In ons artikel WordPress & Kubernetes: Docker image maken lees je hoe je direct aan de slag kunt.

Wij kunnen een Kubernetes cluster voor je verzorgen dat al is geconfigureerd om direct aan de slag te gaan. De afhandeling van je storage, monitoring en inrichten van het netwerk kunnen wij ook voor je verzorgen. Interesse? Bel ons op 0314-794522 of laat je contactgegevens achter en we nemen zo spoedig mogelijk contact met je op.