Kubernetes

Wat is Kubernetes?

Wat is Kubernetes?

Wat is Kubernetes? En wat is de architectuur??

Containerisatie heeft de band tussen softwareontwikkelaars en de productieomgeving doorgesneden. Niet in de zin dat je helemaal geen productiesysteem nodig hebt, maar je hoeft je geen zorgen te maken over de specificiteit van de productieomgeving.

De apps zijn nu gebundeld met de afhankelijkheden die ze nodig hebben, in een lichtgewicht container in plaats van een VM. Dat is geweldig! Het biedt echter geen immuniteit tegen systeemstoringen, netwerkstoringen of schijfstoringen. Als er bijvoorbeeld onderhoud wordt gepleegd aan het datacenter, waar uw servers draaien, gaat uw applicatie offline.

Kubernetes komt in beeld om deze problemen op te lossen. Het neemt het idee van containers en breidt het uit om over meerdere rekenknooppunten te werken (dit kan een door de cloud gehoste virtuele machine of bare-metal servers zijn). Het idee is om een ​​gedistribueerd systeem te hebben waarop gecontaineriseerde applicaties kunnen draaien.

Waarom Kubernetes?

Waarom zou u in de eerste plaats een gedistribueerde omgeving moeten hebben??

Om meerdere redenen is in de eerste plaats hoge beschikbaarheid. Je wilt dat je e-commerce website 24/7 online blijft, anders verlies je omzet, gebruik daarvoor Kubernetes. Ten tweede is schaalbaarheid, waar u 'uit' wilt schalen. Hier uitschalen omvat het toevoegen van meer rekenknooppunten om uw groeiende applicatie meer beenruimte te geven om te werken.

Ontwerp en architectuur

Zoals elk gedistribueerd systeem heeft een Kubernetes-cluster een hoofdknooppunt en vervolgens een heleboel werkknooppunten, waar uw applicaties daadwerkelijk zouden worden uitgevoerd. De master is verantwoordelijk voor het plannen van taken, het beheren van workloads en het veilig toevoegen van nieuwe nodes aan het cluster.

Nu kan het hoofdknooppunt zelf natuurlijk falen en het hele cluster meenemen, dus Kubernetes stelt u in feite in staat om meerdere hoofdknooppunten te hebben omwille van de redundantie.

Een overzicht in vogelvlucht van een typische Kubernetes-implementatie

Kubernetes Meester

De Kubernetes-master is wat het DevOps-team gebruikt en gebruikt voor het inrichten van nieuwe nodes, het implementeren van nieuwe apps en het bewaken en beheren van bronnen. De meest elementaire taak van het hoofdknooppunt is om: schema de werklast efficiënt tussen alle werkknooppunten om het gebruik van middelen te maximaliseren, de prestaties te verbeteren en verschillende beleidsregels te volgen die door het DevOps-team zijn gekozen voor hun specifieke werklast.

Een ander belangrijk onderdeel is de enz dat is een daemon die werkknooppunten bijhoudt en een database bijhoudt waarin de status van het hele cluster wordt opgeslagen. Het is een gegevensarchief met sleutelwaarden, dat ook kan worden uitgevoerd in een gedistribueerde omgeving over meerdere hoofdknooppunten. De inhoud van etcd geeft alle relevante gegevens over het hele cluster. Een werkknooppunt zou van tijd tot tijd naar de inhoud van etcd kijken om te bepalen hoe het zich zou moeten gedragen.

Controller is de entiteit die instructies opvolgt van de API-server (die we later zullen bespreken) en de nodige acties uitvoert, zoals het maken, verwijderen en bijwerken van applicaties en pakketten.

De API-server stelt de Kubernetes-API bloot, die JSON-payloads via HTTPS gebruikt, om te communiceren met de gebruikersinterface waarmee de ontwikkelaarsteams of DevOps-personeel uiteindelijk zouden communiceren. Zowel de web-UI als de CLI gebruiken deze API voor interactie met het Kubernetes-cluster.

De API-server is ook verantwoordelijk voor de communicatie tussen de werkknooppunten en verschillende hoofdknooppuntcomponenten zoals etcd.

Het hoofdknooppunt wordt nooit blootgesteld aan de eindgebruiker, omdat dit de beveiliging van het hele cluster in gevaar zou brengen.

Kubernetes-knooppunten

Een machine (fysiek of virtueel) heeft een paar belangrijke componenten nodig die, eenmaal correct geïnstalleerd en ingesteld, die server vervolgens kunnen veranderen in een lid van uw Kubernetes-cluster.

Het eerste dat u nodig hebt, is een containerruntime, zoals Docker, die erop is geïnstalleerd en erop draait. Het zal uiteraard verantwoordelijk zijn voor het opstarten en beheren van containers.

Naast de Docker-runtime hebben we ook de Kubelet demon. Het communiceert met de hoofdknooppunten, via de API-server en bevraagt ​​de etcd, en geeft gezondheids- en gebruiksinformatie terug over de pods die op dat knooppunt draaien.

Containers zijn echter op zichzelf behoorlijk beperkt, dus Kubernetes heeft een hogere abstractie gebouwd bovenop een verzameling containers, bekend als Pods.

Waarom kom je met pods??

Docker heeft een beleid om één applicatie per container uit te voeren. Vaak omschreven als de “één proces per container” het beleid. Dit betekent dat als je een WordPress-site nodig hebt, je wordt aangemoedigd om twee containers te hebben, één voor de database om op te draaien en een andere voor de webserver om op te draaien. Door dergelijke gerelateerde componenten van een applicatie in een pod te bundelen, zorgt u ervoor dat wanneer u uitschaalt, de twee onderling afhankelijke containers altijd naast elkaar bestaan ​​op hetzelfde knooppunt en dus snel en gemakkelijk met elkaar praten.

Pods zijn de fundamentele eenheid van implementatie in Kubernetes. Wanneer u uitschaalt, voegt u meer pods toe aan het cluster. Elke pod krijgt zijn eigen unieke IP-adres binnen het interne netwerk van het cluster.

Terug naar het Kubernetes-knooppunt

Nu kan een knooppunt meerdere pods uitvoeren en er kunnen veel van dergelijke knooppunten zijn. Dit is allemaal prima totdat je erover nadenkt om te proberen te communiceren met de buitenwereld. Als u een eenvoudige webgebaseerde service heeft, hoe zou u uw domeinnaam dan verwijzen naar deze verzameling pods met veel IP-adressen??

Dat kan en hoeft ook niet! Kube-proxy is het laatste stukje van de puzzel waarmee operators bepaalde pods op internet kunnen plaatsen. Uw front-end kan bijvoorbeeld openbaar toegankelijk worden gemaakt en de kube-proxy verdeelt het verkeer over alle verschillende pods die verantwoordelijk zijn voor het hosten van de front-end. Uw database hoeft echter niet openbaar te worden gemaakt en kube-proxy zou alleen interne communicatie toestaan ​​voor dergelijke back-end gerelateerde workloads.

Heb je dit allemaal nodig??

Als je net begint als hobbyist of student, zou het gebruik van Kubernetes voor een eenvoudige applicatie eigenlijk inefficiënt zijn. De hele rompslomp zou meer middelen verbruiken dan uw daadwerkelijke toepassing en zou meer verwarring veroorzaken voor een enkel individu.

Als u echter met een groot team gaat werken en uw apps voor serieus commercieel gebruik gaat inzetten, is Kubernetes de extra overhead waard. Je kunt voorkomen dat dingen chaotisch worden. Maak ruimte voor onderhoud zonder enige uitvaltijd. Stel handige A/B-testvoorwaarden in en schaal geleidelijk uit zonder vooraf al te veel uit te geven aan de infrastructuur.

Sid Meier's Civilization VI downloaden en spelen op Linux and
Inleiding tot het spel Civilization 6 is een moderne versie van het klassieke concept dat werd geïntroduceerd in de serie Age of Empires-games. Het id...
Doom installeren en spelen op Linux
Inleiding tot Doom De Doom-serie is ontstaan ​​in de jaren 90 na de release van de originele Doom. Het was meteen een hit en vanaf die tijd heeft de g...
Vulkan voor Linux-gebruikers
Met elke nieuwe generatie grafische kaarten zien we game-ontwikkelaars de grenzen van grafische betrouwbaarheid verleggen en een stap dichter bij foto...