7 redenen om Kubernetes niet te gebruiken
Sinds de introductie in 2015, heeft Kubernetes een voorname rol verworven binnen de wereld van containerorkestratie. Volgens een rondvraag van de Cloud Native Computing Foundation (CNCF) gebruikt zo’n 83 procent van de mensen die containers in productie heeft het opensourceplatform. Kubernetes is dan inmiddels ook een begrip dat standaard deel uitmaakt van het kennisreservoir van vrijwel iedereen die applicaties ontwerpt en met containertechnologie werkt.
De populariteit van Kubernetes is eenvoudig te verklaren. Het platform biedt namelijk uitgebreide mogelijkheden voor het geautomatiseerd deployen, schalen en beheren van ‘gecontaineriseerde’ applicaties. Dit scheelt developers en securityspecialisten veel handmatig werk en extra handelingen. Toch zijn er - geloof het of niet - ook scenario’s denkbaar waarin het verstandig is om Kubernetes links te laten liggen en terug te vallen op andere technische oplossingen. In dit blogartikel tonen we je een aantal voorbeelden en geven we je redenen om Kubernetes niet te gebruiken.
Lees ook de blog: Kubernetes ready!? Dé echte checklist voor succes.
Wat Kubernetes allemaal kan
Kubernetes is een enorm krachtig en veelzijdig platform dat een uitgelezen verscheidendheid aan functionaliteiten bezit. Denk bijvoorbeeld aan:
- Uitgebreide en geavanceerde opties voor load balancing. Die zorgen voor een evenwichtige distributie van je netwerkverkeer, waardoor je altijd werkt in een stabiele ontwikkelomgeving.
- Automatische rollouts en rollbacks. Je kunt gecontroleerd containers aanpassen van een actuele staat naar de gewenste staat en de containers makkelijk terugbrengen naar de vorige staat als er iets fout gaat.
- Kubernetes is een ecosysteem met zelfhelende capaciteiten. Werkt een container niet? Dan start Kubernetes deze opnieuw op of vervangt het platform een defecte container door een nieuwe. Kubernetes kan ook containers vernietigen die niet voldoen aan een technische ‘health check’.
- Met behulp van ‘secrets’ en een uitgekiend configuratiebeleid stelt Kubernetes je in staat om gevoelige informatie (wachtwoorden, OAuth-tekens, SSH-sleutels) veilig te beheren.
Wanneer Kubernetes niet de beste optie is
Toch is Kubernetes niet voor iedere organisatie en in elke situatie een verstandige keuze. Tijd om te kijken naar de 7 belangrijkste redenen om Kubernetes niet te gebruiken.
1. Je hebt geen hoge beschikbaarheid nodig
Kubernetes is ontworpen als oplossing voor een specifieke verzameling problemen rondom het automatisch deployen, schalen en beheren van containers. Het complexe palet aan functionaliteiten en opties is gericht op één hoofddoel: het creëren van hoge beschikbaarheid (high availability). Zelfs de minimaal aanbevolen configuratie is hier helemaal voor geoptimaliseerd en uitgerust voor een ‘high availability architecture’. Voor applicaties die alleen actief zijn tijdens kantooruren en (minder dan) gemiddeld dataverkeer genereren, is Kubernetes overbodig.
2. Je applicatie is een monoliet
Kubernetes is ook niet het meest geschikte platform voor het ontwikkelen of aanpassen van monolithisch opgebouwde applicaties. Met de term monoliet bedoelen we een applicatie die tegelijkertijd verschillende taken uitvoert op basis van dezelfde uitvoerbare code. Zo’n systeem is een eenvormige en ondeelbare entiteit (denk aan de klassieke alles-in-een-softwarepakketten). Wil je codewijzigingen doorvoeren voor één onderdeel? Dan moet je gelijk de hele applicatie herontwikkelen en herbouwen.
Kubernetes maakt gebruik van een tegenovergestelde filosofie op het gebied van applicatieontwikkeling. De kern van containertechnologie is namelijk dat je grote applicaties opdeelt in kleinere diensten die met elkaar samenwerken en afzonderlijk aanpasbaar zijn. Elke container is in principe een pakketje dat alle elementen (binaries, libraries) bevat die nodig zijn om een specifiek stuk code (en dus een bepaalde functionaliteit) uit te voeren. Een monolithische applicatie onderbrengen in containers kan wel, maar brengt veel extra complexiteit en omslachtigheid met zich mee omdat elke container dan meerdere processen moet uitvoeren. De gangbare visie is dat één container slechts één proces dient te herbergen voor het waarborgen van een optimale functionaliteit.
3. Je hebt geen ervaring of feeling met agile en DevOps
Kubernetes heeft een flexibele architectuur en werkt het beste in combinatie met agile-werkwijzen en een DevOps-aanpak. Als je niet bekend bent met agile en DevOps of er geen heil in ziet om deze culturen te adopteren, haal je niet het beste uit de mogelijkheden (zowel op operationeel vlak als op het gebied van kostenbesparing) en voordelen die Kubernetes kan bieden.
Lees ook de blog: De rol van DevOps bij applicatieontwikkeling.
4. Kubernetes leren gebruiken kost (te) veel moeite en tijd
Kubernetes heeft best een steile leercurve. Je moet in korte tijd veel theorie- en praktijkkennis tot je nemen over het beheren van containers, netwerk- en veiligheidsinstellingen, configuratiemogelijkheden en de verschillende componenten van het platform. Heb je niet de noodzakelijke kennis in huis? Of beschik je niet over de middelen of ambitie om je personeel te trainen in het gebruiken en optimaal benutten van Kubernetes? Dan is het platform waarschijnlijk niet voor jouw organisatie ontworpen.
5. Je IT-landschap is niet geschikt voor Kubernetes
Kubernetes stelt stevige eisen aan je IT-landschap en -infrastructuur. Als je het platform wilt gebruiken, is het wel belangrijk om na te gaan of je digitaal volwassen genoeg bent. Matchen je capaciteit en IT-constellatie met de vereisten van Kubernetes? Of moet je nog elementen van je IT-landschap vervangen of herontwerpen om de potentie van het orkestratieplatform ten volle te benutten? Houd er ook rekening mee dat het gebruik van Kubernetes vraagt om een microservices-architectuur.
Een capaciteitsplan kan je inzicht geven in de mogelijkheden, kosten en TCO van Kubernetes voor jouw organisatie. Als de kosten en moeite die gemoeid zijn met het ‘Kubernetesproof’ maken van je IT hoger zijn dan de verwachte meerwaarde op de lange termijn, heeft het gebruik van Kubernetes niet zo gek veel zin.
6. Kubernetes is te complex
Door de vele functionaliteiten, opties en configuratiemogelijkheden is Kubernetes een complex platform dat beginnende gebruikers vaak overrompelt. Het beste uit Kubernetes halen en de onderliggende infrastructuur begrijpen, vraagt om een investering in specialistische kennis. Je hebt engineers nodig die het platform begrijpen, terwijl ook solution architects en veiligheidsspecialisten voor de infrastructuur eigenlijk onontbeerlijk zijn. Daarnaast moet je Kubernetes integreren met bestaande tools voor zaken als monitoring, logging en CI/CD.
Met Managed Kubernetes of speciale Kubernetes-diensten als EKS (Amazon), AKS (Azure) en GKE (Google) kun je wel wat van de complexiteit wegnemen, maar echt serieus aan de slag gaan met Kubernetes voegt toch altijd een extra leerdimensie toe aan je IT-gebruik. Als je dingen graag echt simpel wilt houden en niet veel wil of kan investeren in adoptie, is Kubernetes niet het geijkte platform voor jouw organisatie.
7. Er is geen organisatiebrede steun voor de adoptie
Kubernetes in gebruik nemen betekent dat er op IT-gebied het nodige verandert binnen je organisatie. Processen en dagelijkse digitale routines komen er anders uit te zien. Om iedereen mee te krijgen in de nieuwe werkwijze(en), is goed verandermanagement een must. Dat lukt alleen als er organisatiebreed, van de directie en het hoge management tot en met de mensen op de werkvloer, voldoende draagvlak is voor het gebruik van Kubernetes.
Alternatieven voor Kubernetes
Past Kubernetes om een of meerdere van de bovengenoemde redenen niet bij jou, maar wil je toch graag gebruikmaken van containertechnologie? Dan zijn er wel enkele alternatieven. Denk aan:
- Docker Swarm of Nomad. Deze twee orkestratieplatforms bieden een beperkter scala aan mogelijkheden dan Kubernetes, maar zijn wel minder ingewikkeld en dus makkelijker te beheren. Ze bieden voldoende functionaliteit voor veel applicaties en applicatietypen.
- CaaS-diensten (Container as a Service) zoals AWS Fargate en Azure Container Instances bieden de mogelijkheid om containers te beheren en schalen, maar missen veel van de uitgebreide orkestratiemogelijkheden die je wel terugvindt in Kubernetes en vaak nodig hebt voor grote en geavanceerde applicaties.
- PaaS met Kubernetes. Providers zoals OpenShift Container Platform en Rancher bieden complete computingplatforms met Kubernetes als basis. Ze herbergen echter wel ingebouwde functionaliteiten die het beheren van netwerken, infrastructuur en security in Kubernetes vereenvoudigen.
Alternatief voor kubernetes? Lees ook de blog: Azure container apps: volwaardig alternatief voor Kubernetes?
Wel of geen Kubernetes?
Of Kubernetes wel of niet geschikt is voor jouw organisatie, hangt af van diverse factoren. Met welk soort applicaties werk je? Heb je al ervaring en feeling met agile-werkwijzen en DevOps? Wegen de investering en toenemende complexiteit van je IT-landschap op tegen de extra functionaliteiten en mogelijkheden op het gebied van schaalbaarheid, flexibiliteit en innovatie die Kubernetes ontegenzeggelijk levert? En is er organisatiebrede steun voor het adopteren van Kubernetes?
Het heeft eigenlijk alleen zin om op de Kubernetestrein te springen als je het gros van de bovenstaande vragen met ‘ja’ kunt beantwoorden. Wij beschikken over voldoende kennis van en ervaring met Kubernetes om jou een goed advies te kunnen geven. We weten wat er komt kijken bij het implementeren, configureren en beheren van Kubernetes. Aan de hand van verkennende gesprekken, checklists en goed onderling overleg, onderzoeken we graag of Kubernetes een goede match vormt met jouw organisatie.
Is dat het geval? Dan is Managed Kubernetes van ACC ICT wellicht een mooie oplossing voor jou. Je profiteert dan van alle voordelen en functionaliteiten, terwijl onze gecertificeerde specialisten ontlasten op het gebied van beheer en security. We behoren tot de weinige bedrijven in Nederland die zich Kubernetes Certified Service Provider (KCSP) mogen noemen. We helpen je ook met het integreren van Kubernetes binnen je bestaande IT-landschap.