Kubernetes, även känd som K8s, byggdes av Google. Det är nu ett projekt med öppen källkod och är utan tvekan en av de bästa och mest populära containerorkestreringsteknikerna som finns tillgängliga.
Behållare är helt isolerade miljöer, vilket innebär att de kan ha sina egna processer eller tjänster, sina egna nätverksgränssnitt och sina egna monteringar, precis som virtuella maskiner, förutom att alla behållare delar samma operativsystemkärna.
Vi kan helt enkelt säga att en behållare är som en mjukvaruenhet eller omslag som paketerar allt – din applikationskod, apprelaterade beroenden och så vidare – tillsammans.
Föreställ dig att du behöver köra 10 separata applikationer (mikrotjänster) samtidigt. För att göra det behöver du cirka 10 behållare som innehåller varje applikations filer och verktyg. Nu, för att se till att varje applikation fungerar smidigt, kan du skapa 2 kopior av varje behållare, vilket gör 20 behållare totalt. Att hantera alla 20 containrar kan vara mycket jobb!
Ett containerorkestreringsverktyg eller ramverk kan hjälpa dig i dessa situationer. Hela denna process med att automatiskt distribuera och hantera containrar kallas Container Orchestration.
1.Docker Swarm — från Docker — Riktigt lätt att installera och komma igång med, men det saknar några av de avancerade autoskalningsfunktionerna som krävs för komplexa applikationer.
2.Kubernetes – från Google – utan tvekan den mest populära av allt – är lite svår att konfigurera och komma igång med, men ger många alternativ för att anpassa implementeringar och stöder implementering av komplexa arkitekturer.
3.MESOS — från Apache — Ganska svår att installera och komma igång med, men stöder många avancerade funktioner.
Kubernetes är en plattform för orkestrering av containers med öppen källkod utformad för att automatisera distributionen, skalningen och hanteringen av containeriserade applikationer över ett kluster värdar.
Den tillhandahåller en uppsättning abstraktioner och API:er för hantering av behållare, så att du kan fokusera på att bygga din applikation utan att oroa dig för den underliggande infrastrukturen.
Med Kubernetes kan du hantera flera behållare på flera maskiner. Detta förenklar och automatiserar distributionen och hanteringen av din applikationsinfrastruktur.
Kubernetes stöds nu av alla offentliga molntjänstleverantörer som GCP, Azure och AWS.
Låt oss utforska den vanliga terminologin som används i Kubernetes.
En nod är en maskin, antingen fysisk eller virtuell, där Kubernetes är installerad. Noder fungerar som arbetsmaskiner och är där Kubernetes lanserar containrar.
Ett kluster är en uppsättning noder grupperade tillsammans. Detta säkerställer att din applikation förblir tillgänglig även om en nod misslyckas. Flera noder hjälper också till att fördela belastningen, vilket förbättrar prestandan.
Huvudnoden är en annan nod med Kubernetes installerad på den. Den är konfigurerad som en master och vakar över noderna i klustret. Huvudnoden är ansvarig för att orkestrera containrar på arbetarnoderna.
När du installerar Kubernetes på ett system, installerar du faktiskt följande komponenter.
En API-server
En etcd tjänst
En kubelettjänst
En Container Runtime
Styrenheter
Schemaläggare
API-servern fungerar som frontend för Kubernetes. Användare, hanteringsenheter och kommandoradsgränssnitt kommunicerar alla med API-servern för att interagera med Kubernetes-klustret. etcd är ett distribuerat, pålitligt nyckel-värdelager som används av Kubernetes för att lagra all data som används för att hantera klustret. Tänk på det så här: när du har flera noder och flera masters i ditt kluster, lagrar etcd all information på alla noder i klustret på ett distribuerat sätt. etcd ansvarar för att implementera lås inom klustret för att säkerställa att det inte finns några konflikter mellan masterna.
Schemaläggaren ansvarar för att distribuera arbete eller behållare över flera noder. Den letar efter nyskapade behållare och tilldelar dem till noder. Controllerna är hjärnan bakom orkestrering. De är ansvariga för att märka och svara när noder, behållare eller slutpunkter går ner. Kontrollanterna fattar beslut om att ta upp nya containrar i sådana fall.
Container Runtime är den underliggande programvaran som används för att köra containrar (t.ex. Docker). Slutligen är kubelet agenten som körs på varje nod i klustret. Agenten ansvarar för att behållarna körs på noderna som förväntat.
Kontrollplan: Detta är hjärnan i Kubernetes-klustret och hanterar systemets övergripande tillstånd. Det inkluderar API Server, etcd, Controller Manager och Scheduler.
kube-proxy: Denna komponent hanterar nätverksrouting för tjänster inom klustret.
pod: En pod är den minsta driftsättningsbara enheten i Kubernetes. Den representerar en enda instans av en pågående process och kan innehålla en eller flera behållare.
ReplicaSet: Detta säkerställer att ett visst antal repliker av en pod körs hela tiden. Den skalar automatiskt replikerna baserat på efterfrågan.
Implementering: Ett objekt på högre nivå som hanterar ReplicaSets och tillhandahåller deklarativa uppdateringar av poddarna och ReplicaSets i klustret.
ConfigMap: Det här konfigurationsarkivet innehåller konfigurationsdata i nyckel-värdepar och ger ett bekvämt sätt att hantera konfigurationsdata för applikationer.
Hemlighet: Ett säkert sätt att lagra och hantera känslig information som lösenord, API-nycklar och certifikat.
Volym: Denna katalog är tillgänglig för alla behållare som körs i en pod. Volymer kan användas för att lagra data eller dela filer mellan behållare.
Föreställ dig Kubernetes som en klassisk "Master–Worker"-klusteruppställning. Masternoden har ansvaret att utföra absolut nödvändiga processer för att köra/hantera klustret, medan Worker-noderna faktiskt kör dina applikationer.
I huvudsak instruerar du Kubernetes om programmets önskade tillstånd, och sedan är det Kubernetes ansvar att uppnå och underhålla det tillståndet. För att ge instruktioner måste du använda YAML- eller JSON-manifest-/konfigurationsfiler.