Waarom je best je Kubernetes omgeving extern laat beheren
Kubernetes is de snelste en meest eenvoudige manier om containers te beheren. Je kan bij ons terecht voor het hele plaatje, aangezien dit beheer meer voeten in de aarde heeft dan je zou denken.
Kubernetes, een beetje achtergrond
Kubernetes is een open source platform voor het beheren van gecontaineriseerde workloads en services, dat zowel configuratie als automatisering mogelijk maakt. Het heeft een groot, snel groeiend ecosysteem.
De naam Kubernetes is afkomstig uit het Grieks en betekent stuurman of piloot.
Google heeft het Kubernetes-project in 2014 open source gemaakt. Kubernetes combineert op die manier meer dan 15 jaar ervaring van Google-kennis omtrent enorme productieworkloads met de best practices van de open source community, waar we bij Hosted Power uiteraard grote fan van zijn.
K8S als afkorting is het resultaat van het tellen van de acht letters tussen de "K" en de "s".
De evolutie tot aan het K8S-tijdperk
Traditionele deployment
In het begin draaiden organisaties applicaties op fysieke servers. Er was geen manier om resourcegrenzen te definiëren voor applicaties of een fysieke server, en dit veroorzaakte potentieel problemen met de toewijzing van resources. Als er bijvoorbeeld meerdere applicaties op een fysieke server draaien, kan het voorkomen dat één applicatie de meeste resources in beslag neemt, waardoor de andere applicaties ondermaats presteren.
Een oplossing hiervoor zou zijn om elke applicatie op een andere fysieke server te laten draaien. Aangezien deze oplossing niet schaalbaar is, werd het voor organisaties een dure oplossing. Als iets te duur wordt, wordt er geïnnoveerd. Enter virtualisatie.
Virtualisatie
Als oplossing werd dus virtualisatie geïntroduceerd. Hiermee kan je meerdere virtuele machines (VM's) uitvoeren op de CPU van één enkele fysieke server. Met virtualisatie kunnen de applicaties worden geïsoleerd tussen VM's en wordt een beveiligingsniveau geboden omdat de informatie van de ene applicatie niet vrij toegankelijk is voor een andere applicatie.
Virtualisatie maakt beter gebruik van de resources van een fysieke server en maakt een betere schaalbaarheid mogelijk, omdat een applicatie eenvoudig kan worden toegevoegd of bijgewerkt. Op deze manier worden de hardwarekosten verlaagd. Met virtualisatie kan je een set fysieke resources presenteren als een cluster van virtuele machines.
Bekende "hypervisors" voor het beheren van virtuele systemen zijn o.a. VmWare, Openstack en KVM.
Elke VM is een volledige, zelfstandige machine waarop alle componenten worden uitgevoerd, inclusief het eigen besturingssysteem, bovenop de gevirtualiseerde hardware. Zoals je aanvoelt in de laatste zin, is hier nog ruimte voor het optimaliseren van gebruikte resources. Dat is mogelijk geworden met de introductie van containers.
Containers
Containers zijn vergelijkbaar met VM's, maar ze hebben versoepelde eigenschappen die het mogelijk maken om het besturingssysteem (OS, bv. Windows of Linux) tussen de applicaties te delen. Daarom worden containers als lichtgewicht beschouwd. Net als een VM heeft een container zijn eigen bestandssysteem, CPU-aandeel, geheugen, procesruimte en meer. Omdat ze zijn losgekoppeld van de onderliggende infrastructuur zijn ze overdraagbaar tussen Clouds en OS'en.
Hoe werkt een Kubernetes-cluster?
Hier kunnen we uren over uitwijden, maar laat ons alvast kort toelichten. Een kubernetes-cluster bestaat in essentie uit:
- Een controle element dat globale beslissingen neemt over het cluster, clustergebeurtenissen detecteert en erop reageert. Dit besturingsvlak is samengesteld uit meerdere hoofdcomponenten.
- Een set nodes, worker-instanties die de services bevatten die nodig zijn om pods uit te voeren, actieve pods onderhouden en de Kubernetes-runtimeomgeving bieden.
"Het gebruik van Kubernetes is een geweldige ervaring, het is veel minder eenvoudig om het in productie te gebruiken. En het bouwen van een beheerd Kubernetes-platform is nog ingewikkelder"
Het implementeren van het Kubernetes-cluster is nog maar het begin, om het al product gereed te beschouwen, moet u er ook voor zorgen dat:
- Het installatieproces is automatiseerbaar en herhaalbaar
- Het upgrade-/terugdraaiproces veilig is
- Er een herstelprocedure bestaat; deze dient gedocumenteerd en getest te worden
- De prestaties voorspelbaar zijn en consistent, vooral bij het gebruik van persistente volumes
- Het cluster bruikbaar is, met voldoende support, metrieken en logboeken om fouten en problemen te detecteren en te debuggen
- De service veilig en beschikbaar is
Als je dacht dat het opzetten van je nieuwe Kubernetes-cluster je dit hele operationele vrijheid zou geven, lijkt het erop dat je het mis had. Kubernetes zelf is namelijk een niet te onderschatten beheerstool waar je al snel veel tijd en moeite stopt in deployment en onderhoud.
Dus, zoals veel krachtige technologieën, gaat de schijnbare eenvoud en veelzijdigheid van Kubernetes aan de kant van Dev gepaard met een hoge complexiteit aan de kant van de Ops. Reden genoeg voor Hosted Power om een managed Kubernetes oplossing in het leven te roepen. Gecombineerd met onze TurboStack® technologie kunnen we op maat een totaaloplossing uitwerken voor uw containerapplicatie, totaal beheerd door Hosted Power, maar aangezien we transparantie belangrijk vinden, is het zeker mogelijk om zelf ook inzicht te krijgen.
Onze managed Kubernetes is helemaal gebaseerd op open source, vendorlock-vrij en 100% compatibel met elke andere Kubernetes-oplossing. Ons doel is om onze partners een volledig beheerde out-of-the-box Kubernetes-cluster te bieden, gebruiksklaar, zonder gedoe met installatie of bediening. Daar staan we voor!