Kubernetes, dat vaak wordt vaak omschreven als het ‘besturingssysteem voor de cloud’, is een open-source platform voor het beheren van clusters van containerapplicaties en services. Kubernetes werd in 2014 ontwikkeld door Google-engineers Joe Beda, Brendan Burns en Craig McLuckie en werd kort daarna open-source, waarna het al snel een bloeiend, cloud-native ecosysteem op zich werd. Tegenwoordig wordt Kubernetes, wat 'stuurman' of 'piloot' betekent in het Oudgrieks, beheerd door de Cloud Native Computing Foundation (CNCF), een tak van de Linux Foundation.
Kubernetes was het eerste geslaagde project voor de CNCF en werd een van de snelst groeiende open-source projecten in de geschiedenis. Kubernetes heeft inmiddels meer dan 2300 bijdragers en wordt op grote schaal gebruikt door grote en kleine bedrijven, waaronder de helft van de bedrijven uit de Fortune 100.
Allereerst volgen hier een paar belangrijke begrippen met betrekking tot Kubernetes. Er is een uitgebreidere lijst beschikbaar op de Kubernetes-pagina met de gestandaardiseerde woordenlijst. U kunt ook de Kubernetes-cheatsheet raadplegen, die een lijst met veelgebruikte kubectl-commando's en -vlaggen bevat.
Een set machines die nodes worden genoemd en die worden gebruikt om containerapplicaties uit te voeren die door Kubernetes worden beheerd.
Een virtuele of fysieke machine. Een cluster bestaat uit een hoofdnode en een aantal workernodes.
Een installatiekopie met software en alle afhankelijkheden.
Eén container of een set containers die wordt uitgevoerd in uw Kubernetes-cluster.
Een object dat gerepliceerde applicaties beheert die worden vertegenwoordigd door pods. Pods worden geïmplementeerd op de nodes van een cluster.
Zorgt ervoor dat een opgegeven aantal podreplica's tegelijk wordt uitgevoerd.
Beschrijft hoe u toegang krijgt tot applicaties die worden vertegenwoordigd door een set pods. Services beschrijven doorgaans poorten en lastverdelers en kunnen worden gebruikt om interne en externe toegang tot een cluster te regelen.
KubeCon is de jaarlijkse conferentie voor ontwikkelaars en gebruikers van Kubernetes. Sinds de eerste KubeCon in 2015 met 500 bezoekers is KubeCon uitgegroeid tot een belangrijk evenement voor de cloud-native community. In 2019 trok de KubeCon-editie in San Diego, Californië, 12.000 ontwikkelaars en site-betrouwbaarheidstechnici die lyrisch waren over het open-source ecosysteem dat zijn bloei beleefde rond het Kubernetes-cloudorkestratieplatform.
Aangezien ontwikkelaars steeds vaker software inzetten voor een diverse reeks computeromgevingen met verschillende clouds, testomgevingen, laptops, apparaten, besturingssystemen en platforms, is het van cruciaal belang dat deze software betrouwbaar werkt. Hier komen containers om de hoek kijken. Containers bundelen een applicatie met de volledige runtime-omgeving van de applicatie. In die zin zijn containers een vorm van virtualisatie omdat ze een 'bubbel' bieden waarin de applicatie kan draaien door de juiste bibliotheken, afhankelijkheden en besturingssystemen op te nemen. Maar containers zijn kleiner dan virtuele machines omdat ze alleen de bronnen bevatten die een applicatie nodig heeft, en verder niets.
Linux-containers zijn er al sinds 2008, maar het duurde tot de komst van Docker-containers in 2013 voordat ze algemeen werden geaccepteerd. Evenzo zorgde de enorme belangstelling voor het implementeren van containerapplicaties (applicaties die alles bevatten wat ze nodig hadden om te kunnen worden uitgevoerd) uiteindelijk voor een nieuw probleem: het beheren van duizenden containers. Kubernetes orkestreert automatisch de levenscyclus van de container en verdeelt de applicatiecontainers over de hostinginfrastructuur. Kubernetes schaalt afhankelijk van de vraag bronnen op of af. De status van de containers kan zo worden aangegeven, gepland, verwijderd en gemonitord.
De belangrijkste componenten van Kubernetes zijn clusters, nodes en het besturingsvlak. Clusters bevatten nodes. Elke node bestaat uit een set van ten minste één workstation. De nodes hosten pods die elementen van de geïmplementeerde applicatie bevatten. Het besturingsvlak beheert voor hoge beschikbaarheid nodes en pods in de cluster, vaak op veel computers.
Het besturingsvlak bevat het volgende:
De nodecomponenten zijn onder meer:
Met containers kunt u erop vertrouwen dat uw applicaties worden gebundeld met alles wat ze nodig hebben om te kunnen worden uitgevoerd. Maar wanneer u containers toevoegt, die vaak microservices bevatten, kunt u ze automatisch met Kubernetes beheren en distribueren.
Met Kubernetes kunnen organisaties:
Automatisch schalen | Implementaties verhogen of verlagen, afhankelijk van de vraag |
Services verkennen | Containerservices via het DNS- of IP-adres opzoeken |
Lasten verdelen | De implementatie stabiliseren door netwerkverkeer te verdelen |
Opslag beheren | Kiezen voor lokale opslag of opslag in de cloud |
Versies beheren | De soorten containers kiezen die u wilt uitvoeren, en welke u wilt vervangen door een nieuwe image of containerbronnen |
Beveiliging onderhouden | Wachtwoorden, OAuth-tokens en SSH-sleutels met betrekking tot specifieke containerimages veilig bijwerken |
Hoewel Kubernetes in hoge mate kan worden samengesteld en elk type applicatie kan ondersteunen, is het niet eenvoudig om Kubernetes te doorgronden en te gebruiken. Kubernetes is niet altijd de juiste oplossing voor een bepaalde workload, zoals een aantal CNCF-leden hebben opgemerkt. Daarom bevat het Kubernetes-ecosysteem een aantal gerelateerde cloud-native tools die organisaties hebben ontwikkeld om specifieke workloadproblemen op te lossen.
Kubernetes implementeert containers, geen broncode, en bouwt geen applicaties. Voor logboekregistratie, middleware, monitoring, configuratie, CI/CD en vele andere productieactiviteiten hebt u extra tools nodig. Dat gezegd hebbende, is Kubernetes uitbreidbaar en heeft Kubernetes zich bewezen geschikt te zijn voor een groot aantal verschillende toepassingen, van straaljagers tot machine learning. Cloudleveranciers, waaronder Oracle, Google en Amazon Web Services, hebben de uitbreidbaarheid van Kubernetes zelfs gebruikt om beheerde Kubernetes te bouwen, die services zijn waarmee de complexiteit wordt verminderd en de productiviteit van ontwikkelaars omhoog gaat.
Onze Cloud Infrastructure Kubernetes Engine is een ontwikkelaarsvriendelijke beheerde service waarmee u uw containerapplicaties in de cloud kunt implementeren. Gebruik Kubernetes Engine als uw ontwikkelteam op betrouwbare wijze cloudnative applicaties wil bouwen, implementeren en beheren. U specificeert die compute-resources die nodig zijn voor uw applicaties. Deze worden vervolgens door Kubernetes Engine ingericht binnen een bestaande Cloud Infrastructure tenancy in Oracle Cloud Infrastructure.
Hoewel u geen beheerde Kubernetes-service op onze Cloud Infrastructure hoeft te gebruiken, is Kubernetes Engine een gemakkelijke manier om clusters met hoge beschikbaarheid uit te voeren met het beheer, de beveiliging en de voorspelbare prestaties van Oracle Cloud Infrastructure. Kubernetes Engine ondersteunt het gebruik van zowel bare metal-machines als virtuele machines als nodes en is als conform gecertificeerd door de CNCF. U krijgt ook alle Kubernetes-updates en blijft compatibel met het CNCF-ecosysteem zonder dat u daar extra tijd in hoeft te steken.
Oracle is een Platinum-lid van de Cloud Native Computing Foundation (CNCF), een open-source community die tientallen softwareontwikkelingsprojecten ondersteunt, ingedeeld op ontwikkelingsniveau. De geslaagde projecten (Kubernetes, Prometheus, Envoy, CoreDNS, containerd, Fluentd, Jaeger, Vitess, TUF en Helm) zijn alle van onschatbare waarde gebleken voor de aspecten van cloud-native ontwikkeling.
Kubernetes heeft een groot ecosysteem van ondersteunende projecten die eromheen zijn ontstaan. Dit landschap kan intimiderend zijn en bij het zoeken naar antwoorden op eenvoudige vragen kunt u verstrikt raken in alle mogelijkheden. Maar de eerste paar stappen op dit traject zijn eenvoudig, en van daaruit kunt u afhankelijk van waar u naar op zoek bent, geavanceerde concepten verkennen. Zie hoe u:
Ontwikkelaars die graag willen beginnen met hun eerste Kubernetes-project, kunnen naar onze ontwikkelaarsportal gaan om te leren hoe ze hun eerste Arm-app op Kubernetes kunnen bouwen of een Kubernetes-cluster kunnen implementeren met behulp van Cloud Shell.