Wat is Kubernetes?

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.

Kubernetes 101: kernbegrippen

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.

Cluster

Een set machines die nodes worden genoemd en die worden gebruikt om containerapplicaties uit te voeren die door Kubernetes worden beheerd.

Node

Een virtuele of fysieke machine. Een cluster bestaat uit een hoofdnode en een aantal workernodes.

Cloudcontainer

Een installatiekopie met software en alle afhankelijkheden.

Pod

Eén container of een set containers die wordt uitgevoerd in uw Kubernetes-cluster.

Implementatie

Een object dat gerepliceerde applicaties beheert die worden vertegenwoordigd door pods. Pods worden geïmplementeerd op de nodes van een cluster.

Replicaset

Zorgt ervoor dat een opgegeven aantal podreplica's tegelijk wordt uitgevoerd.

Service

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.

Wat is KubeCon?

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.

Wat zijn Kubernetes-containers?

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.

Kubernetes versus Docker

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.

Uit welke componenten bestaat Kubernetes?

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.

wat is kubernetes

Het besturingsvlak bevat het volgende:

  • Kubernetes API-server: biedt de programmeerinterface (API) voor het besturen van Kubernetes
  • etcd: een sleutelwaardeopslag voor clusterdata
  • Kubernetes-planner: vergelijkt nieuwe pods met beschikbare nodes
  • Kubernetes-controllermanager: voert een aantal processen uit om nodestoringen te beheren, replicatie te controleren, services en pods via eindpunten samen te voegen en accounts en toegangstokens te controleren
  • Cloud-controllermanager: helpt bij het beheren van API's van specifieke cloudproviders rond aspecten als specifieke infrastructuurroutes en taakverdeling

De nodecomponenten zijn onder meer:

  • Kubelet: een agent die controleert of containers in een pod worden uitgevoerd
  • Kubernetes-netwerkproxy: onderhoudt de netwerkregels
  • Docker, in een container of een ander type containerruntime

Wat zijn de voordelen van Kubernetes?

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

Wat zijn de uitdagingen van het gebruik van Kubernetes?

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.

Wat is beheerde Kubernetes?

Cloud Native en Kubernetes veranderen de manier waarop AgroScout boeren ondersteunt

Onze Cloud Infrastructure Container Engine for Kubernetes is een ontwikkelaarsvriendelijke beheerde service waarmee u uw containerapplicaties in de cloud kunt implementeren. Gebruik Container Engine for Kubernetes wanneer uw ontwikkelteam op betrouwbare wijze cloud-native applicaties wil bouwen, implementeren en beheren. U geeft de compute-resources op die voor uw applicaties nodig zijn. Deze worden vervolgens door Container Engine for Kubernetes in Oracle Cloud Infrastructure binnen een bestaande Cloud Infrastructure tenancy ingericht.

Hoewel u geen beheerde Kubernetes-service op onze Cloud Infrastructure hoeft te gebruiken, is Container Engine for Kubernetes een gemakkelijke manier om clusters met hoge beschikbaarheid uit te voeren met de controle, beveiliging en voorspelbare prestaties van Oracle Cloud Infrastructure. Container Engine for Kubernetes ondersteunt zowel Bare Metal- 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.


Het Kubernetes-ecosysteem en de Kubernetes-community

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.

Aan de slag met Kubernetes

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:

  • Een lokale ontwikkelomgeving opzet met Docker en Kubernetes
  • Een eenvoudige Java-microservice maakt met Helidon
  • De microservice in een containerimage bouwt met Docker
  • De microservice op een lokale Kubernetes-cluster implementeert
  • De microservice op- en afschaalt in de cluster

Kubernetes voor ontwikkelaars

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.


Inleiding tot Kubernetes op OCI (8:32)