Kubernetes is een term die een draagbaar open-source containerorkestratiesysteem of -platform beschrijft voor het beheer van toepassingen in containers.
Om Kubernetes (ook wel K8's of 'Kube' genoemd) te begrijpen, is het belangrijk om eerst inzicht te krijgen in de orkestratie van containers. Containerarchitectuur deelt de verschillende services van een toepassing op in pakketcontainers en afzonderlijke containers die in een cluster van fysieke of virtuele machines worden geïmplementeerd. Door de opkomst van containerarchitectuur is er behoefte aan containerorkestratie. Containerorkestratie is een tool waarmee de implementatie, schaling, netwerken en beschikbaarheid van deze containers worden beheerd en geautomatiseerd.
Kubernetes is een containerorkestratiesysteem dat de organisatie en implementatie van containerprocessen beheert en automatiseert. Kubernetes is bij Google begonnen en in 2014 open-source geworden. Sindsdien kan Kubernetes door iedereen worden gebruikt en heeft zeer weinig beperkingen wat betreft de manier waarop het kan worden gebruikt.
Kubernetes is een populaire tool voor veel bedrijven vanwege de voordelen die het kan bieden. Dit zijn drie voordelen van Kubernetes.
Automatisering wordt een steeds belangrijker onderdeel van bedrijfsprocessen. De automatisering van meer processen verhoogt de efficiëntie en productiviteit, waardoor mensen in het bedrijf zich kunnen concentreren op belangrijkere taken. Kubernetes stelt bedrijven in staat om dagelijkse activiteiten voor containerarchitectuur te automatiseren, zodat ze hun tijd zo efficiënt mogelijk kunnen besteden. Geautomatiseerde bewerkingen zijn ook nauwkeuriger omdat er geen kans is op menselijke fouten. Geautomatiseerde bewerkingen zijn een krachtige tool.
De tijd van ontwikkelaars is waardevol. Bedrijven profiteren als ontwikkelaars zich kunnen richten op de belangrijkste taken, terwijl de tools de lagere prioriteiten afhandelen. Dankzij abstractie van de infrastructuur met Kubernetes kan Kubernetes het computergebruik, de netwerken en de opslag beheren. Kubernetes beheert deze taken en de architectuur, waardoor tijd wordt vrijgemaakt voor ontwikkelaars, zodat ze zich op de toepassingen zelf kunnen richten.
Kubernetes voert statuscontroles uit voor ontwikkelaars om ervoor te zorgen dat elke container goed werkt. Het systeem kan ook containers die vastlopen of defect raken opnieuw starten. Het beheren van de status van de containers is belangrijk, maar Kubernetes zorgt er ook voor dat alleen volledig functionele en actieve services beschikbaar zijn voor gebruikers. Als iets niet werkt, zien gebruikers dat pas als het door Kubernetes wordt gereset.
Kubernetes gebruikt verschillende architectuurelementen die bekend zijn bij vele ontwikkelaars en vele elementen die uniek zijn voor Kubernetes. Dit zijn enkele van de algemene Kubernetes-termen die je moet kennen.
Het hoogste niveau van de organisatie in Kubernetes is de cluster. Een cluster is de groep machines die Kubernetes uitvoert en alle containers die erdoor worden beheerd. Met Kubernetes heeft de cluster een master of een machine die alle andere machines in de cluster bestuurt. De planner en controller-manager kunnen door slechts één master tegelijk worden gebruikt.
Elk Kubernetes-cluster bevat knooppunten, het volgende organisatieniveau. Knooppunten kunnen de fysieke machines zelf of VM's zijn. Kubernetes handelt de implementatie van een toepassing af, ongeacht waarop deze draait, binnen deze knooppunten.
Binnen de knooppunten zijn er pods. Knooppunten voeren pods uit. Pods zijn de meest elementaire objecten die in Kubernetes kunnen worden gemaakt en beheerd. Elke pod vertegenwoordigt één instantie van een toepassing die in Kubernetes wordt uitgevoerd, en heeft een of meer containers. Binnen de pods worden alle processen in de containers gestart, gestopt en gerepliceerd door Kubernetes. Met pods kunnen gebruikers alleen de toepassing zelf zien in plaats van de containers.
Afhankelijk van de gebruikersaanvragen worden pods binnen knooppunten gemaakt en vernietigd om aan aanvragen te voldoen. Vanwege de complexiteit van het beheer van de pods gebruikt Kubernetes een controller om pods te maken, weg te draaien en te vernietigen.
De Kubernetes-services maken het mogelijk om de back-end pods voortdurend te laten veranderen, terwijl de front-end deze niet volgt en de gebruikerservaring blijft bieden. Een service beschrijft hoe een groep pods toegankelijk is via het netwerk. Door te regelen hoe pods worden geopend, kan de toepassing consistent blijven voor de gebruiker, zelfs met pods die aan de back-end worden gemaakt en vernietigd.
Het beleid bepaalt wat een pod wel en niet binnen het systeem kan doen. Met een Kubernetesbeleid kan worden beperkt hoeveel CPU, geheugen of schijfruimte een pod inneemt en kan worden voorkomen dat de pod te veel gebruikt. De limieten in het beleid zijn afhankelijk van de beperkingen. Voor het geheugen worden absolute termen, zoals 100 MB, gebruikt in het beleid. Voor CPU's gelden de beperkingen in relatieve termen, zoals 50%.
Het opzetten en laten functioneren van Kubernetes is een belangrijke taak. Zodra een ontwikkelaar het heeft opgezet, moet hij/zij extern toegang krijgen tot clusters. Er zijn verschillende tools die dat kunnen, maar de meest flexibele tool is Ingress. Ingress is een API die externe toegang tot een cluster via HTTP beheert. Ingress kan complex zijn om op te zetten, maar als het eenmaal is geïnstalleerd, biedt het een eenvoudige maar robuuste manier voor externe toegang tot de services van een cluster.
Zodra alle andere Kubernetes-componenten zijn ingesteld, is het belangrijk om ze allemaal te kunnen beheren. Het Kubernetes-dashboard is een webgebaseerde gebruikersinterface waarmee ontwikkelaars alle clusterresources kunnen beheren en problemen met clusterresources kunnen oplossen. Het dashboard moet wel afzonderlijk worden geïnstalleerd (dit gebeurt niet automatisch), maar het is eenvoudig in te stellen en te gebruiken als het eenmaal is geïnstalleerd.
Soms hebben bedrijven informatie die veilig moet blijven. Kubernetes heeft een functie die is ontworpen om een extra beveiligingslaag voor gevoelige informatie te bieden. Een Kubernetes Secret is een speciaal type container met beperkte toegankelijkheid en waarvan Kubernetes begrijpt dat hij gevoelig is.
Een Secret is toegankelijk wanneer dit nodig is voor pods in het cluster, maar is beschermd tegen alle andere zichtbaarheid die de beveiligingsrisico's kan verhogen. In wezen beperkt een Secret niet welke gebruikers toegang hebben tot informatie. In plaats daarvan voorziet hij de toepassingen alleen van gegevens die ze nodig hebben om te functioneren zonder onbeperkte toegang tot die gegevens.
Een kubectl is een opdrachtregelinterface voor het beheren van bewerkingen in clusters. Deze CLI communiceert met de Kubernetes API. Er is een gestandaardiseerde syntaxis voor het gebruik van kubectl: kubectl [opdracht] [TYPE] [NAAM] [markeringen].
Sommige mensen hebben toegang nodig tot Kubernetes op een kleiner apparaat. Dat is mogelijk met Minikube. Minikube is een open-source tool waarmee iemand Kubernetes kan uitvoeren op een laptop of een andere lokale computer. Minikube neemt de grootte en complexiteit van Kubernetes en verkleint deze tot een cluster met één knooppunt. Met Minikube beschikken ontwikkelaars, IT-werknemers en C-suite-managers over krachtige Kubernetes-functionaliteit op een handig apparaat. Minikube werkt het beste als ook kubectl is geïnstalleerd.
Kubernetes is voornamelijk ontworpen voor het maken, beheren en implementeren van toepassingen. Hoe werkt Kubernetes om dat te doen? Ontwikkelaars stellen Kubernetes in, definiëren een cluster en maken knooppunten. Zodra deze zijn geïnstalleerd, maakt en verwijdert Kubernetes indien nodig pods om ervoor te zorgen dat de toepassingen goed blijven werken voor gebruikers. Voor toegang tot en beheer van Kubernetes kunnen ontwikkelaars Minikube gebruiken voor toegang op een lokale computer, Ingress voor externe toegang of het dashboard voor toegang tot andere tools.
Welke mogelijkheden creëert Kubernetes voor bedrijven? Dit zijn enkele van de belangrijkste doelen die met Kubernetes kunnen worden bereikt:
- Containers orkestreren op meerdere hosts
- Toepassingen schalen
- De status van toepassingen controleren
- Implementatie beheren en automatiseren
- Opslag beheren en toevoegen om processen uit te voeren
- Hardwareruimte maximaliseren om bedrijfstoepassingen uit te voeren
- Toepassingen overal implementeren
- De ontwikkelingssnelheid verhogen
Er wordt vaak over andere projecten gesproken met Kubernetes. Elk van deze projecten is een afzonderlijk project dat verschillende taken voor ontwikkelaars kan uitvoeren. Deze andere projecten worden vaak verward met Kubernetes of voorgesteld als de tegenovergestelde keuze. Maar deze projecten zijn compatibel met Kubernetes.
Docker kwam voor Kubernetes en droeg zelfs bij aan de creatie van Kubernetes. Docker is een tool waarmee ontwikkelaars alle benodigdheden voor het uitvoeren van een toepassing kunnen scheiden in 'dozen' die kunnen worden opgeslagen en geopend wanneer dat nodig is. Docker is een manier om containers te maken. Maar zodra toepassingen zijn opgeslagen in ‘dozen’, moet er een manier zijn om die containers te beheren en ervoor te zorgen dat de juiste containers worden opgeslagen en geopend.
Daarom is Kubernetes gecreëerd. Kubernetes is ontworpen als tool voor het organiseren en beheren van containertoepassingen, zoals de toepassingen die door Docker worden gemaakt. Kubernetes is ontworpen om containers naar de juiste plekken te leiden. Daarom is het systeem vernoemd naar het Griekse woord voor ‘kapitein’.
Kubernetes en Docker zijn geen concurrenten. Kubernetes kan met of zonder Docker worden gebruikt, omdat ze beide verschillende rollen bieden voor het beheer van containertoepassingen. Maar ze kunnen ook samen worden gebruikt voor een krachtige impact. Kubernetes kan Docker gebruiken om containertoepassingen te implementeren en te beheren.
Mesos is een ander project waarover vaak wordt gesproken met Kubernetes. Mesos is een Apache-project dat is gecreëerd als reactie op Google Borg. Mesos biedt ook containerorkestratieservices, maar is ook ontworpen als programma dat niet-containercomponenten kan uitvoeren, naast de containercomponenten. Vanwege het brede toepassingsgebied van Mesos kunnen er veel programma's in worden uitgevoerd, waaronder ook Kubernetes
De invoering van Kubernetes is over het algemeen een onderdeel van een groter programma om de toepassingsomgeving van een bedrijf naar de cloud te transformeren of om meer 'cloudeigen' te worden door nieuwe toepassingen en services te bieden. ServiceNow heeft meerdere banden om hulp te bieden bij deze transformatie. Deze kunnen je bedrijf helpen de juiste Kubernetes-benadering te vinden, bijvoorbeeld veranderingsbeheer, waarneming en cloudbeheer.
Het gebruik van Kubernetes gaat hand in hand met moderne ontwikkelingsmethoden zoals DevOps. Grote en gereguleerde organisaties moeten zich nog steeds richten op governance als onderdeel van het releaseproces voor updates in de cloud. Maar er zijn nog meer complicaties: een breed scala aan ongelijksoortige componenten en de snelheid en tijdelijke aard van codelevering in een containerarchitectuur.
We verbinden het werk en de services die in ServiceNow worden beheerd met het ontwikkelingsproces. Zodoende worden geautomatiseerd veranderingsbeheer, inzichten in end-to-end KPI's en Flow-meetwaarden en audits mogelijk gemaakt. We hebben ook een specifiek component van ITSM Pro, DevOps Config genaamd, dat controles en inzichten toevoegt die specifiek betrekking hebben op het brede scala aan configuratieactiviteiten die plaatsvinden als onderdeel van het leveren van een service in de cloud waarbij je bedrijf baat kan hebben bij de implementatie van Kubernetes.
Kubernetes werkt aan het verbeteren van de werking van een toepassing en de manier waarop een bedrijf containertoepassingen beheert. Maar er zijn uitdagingen waarmee organisaties te maken krijgen om de waarneming te krijgen die nodig is om succesvol te kunnen werken. ServiceNow Cloud Observability biedt de waarneming en inzichten in processen en configuraties die de implementatie van Kubernetes voor je organisatie kunnen vereenvoudigen.
Naarmate je organisatie de cloud meer gebruikt, is het belangrijk om cloudbeheer te implementeren. IT Operations Management van ServiceNow kan dit mogelijk maken terwijl ook Kubernetes wordt geïmplementeerd.
Lees meer over ITOM en hoe het je bedrijf kan helpen bij de implementatie en het gebruik van Kubernetes voor het beheer van je toepassingen.