Kubernetes, ofta förkortat K8s, är den mest populära mjukvaran med öppen källkod för automatisering av containerhantering. Den används i stor utsträckning för att förenkla och effektivisera utvecklingsprocesser.
Enligt en årlig studie från Cloud Native Computing Foundation (CNCF) använder hela 96% av organisationerna antingen Kubernetes eller planerar att implementera det inom en snar framtid. Det är en imponerande siffra som visar dess dominans inom containerorkestrering. Globalt sett använder cirka 5,8 miljoner utvecklare Kubernetes, vilket motsvarar ungefär 31% av alla backend-utvecklare världen över.
Kubernetes är populärt tack vare dess förmåga att förbättra skalbarhet, tillgänglighet och minska tiden för implementering av applikationer. Även om många utvecklare börjar sin resa med containrar genom Docker, som är ett kraftfullt verktyg med ett kommandoradsgränssnitt (CLI) för att hantera enskilda containrar, så erbjuder Kubernetes abstraktioner på en högre nivå. Detta gör det möjligt att definiera applikationer och deras infrastruktur genom konfigurationsfiler, vilket underlättar samarbete mellan utvecklare.
Om du är ny inom Kubernetes-världen, är den här artikeln skriven just för dig. Den syftar till att ge dig en grundläggande förståelse och dela insikter som hjälper dig att komma igång. Du kommer att upptäcka hur Kubernetes kan förbättra ditt arbete som utvecklare och öka potentialen i dina digitala produkter.
Vad är Kubernetes och varför behöver du det?
Kubernetes är en kraftfull ram med öppen källkod, en så kallad orkestrator, som används för att automatisera distribution, skalning och hantering av containerbaserade applikationer. Dessutom hanterar den aspekter som förutsägbarhet och tillgänglighet.
Tänk dig en applikation som du har paketerat i containrar. För att tillhandahålla den här applikationen till dina användare måste du köra flera containrar samtidigt. Utmaningen uppstår när du behöver hantera dessa containrar, särskilt om de inte körs på samma server. Kubernetes är svaret på den här utmaningen.
Kubernetes gör det möjligt att hantera dessa processer på ett smidigt sätt. Till skillnad från Docker, som hanterar enskilda containrar, agerar Kubernetes som en containerorkestrator. Som ny utvecklare behöver du inte i detalj oroa dig för hur Kubernetes utför orkestreringen. Du behöver sannolikt inte skapa ett eget K8s-kluster i början. Du kommer snarare interagera med befintliga kluster som ditt infrastrukturteam har satt upp. Därför är det viktigt att förstå de grundläggande komponenterna i Kubernetes. Innan vi dyker djupare, är det bra att ha en översiktlig förståelse för dess arkitektur för att se hur allt hänger ihop.
Funktioner hos Kubernetes
Kubernetes erbjuder många funktioner som gör det möjligt att köra containrar och hantera tillhörande infrastruktur på ett effektivt sätt. Här är några viktiga funktioner:
- Automatiserade utrullningar, skalning och återställning: Kubernetes automatiserar skapandet av det antal repliker du anger, distribuerar dem på lämplig hårdvara och schemalägger om containrar om en nod fallerar. Du kan enkelt skala antalet repliker baserat på behov och resursanvändning, som exempelvis CPU-användning.
- Serviceupptäckt, lastbalansering och nätverksåtkomst: Kubernetes erbjuder robusta nätverksfunktioner, inklusive intern serviceupptäckt och exponering av containrar mot omvärlden.
- Applikationer med och utan tillstånd: Initialt var Kubernetes främst avsett för tillståndslösa applikationer, men nu hanterar det även tillståndsfulla applikationer genom inbyggda objekt. Med andra ord kan du köra nästan alla typer av applikationer på Kubernetes.
- Hantering av lagring: Kubernetes tillhandahåller ett abstrakt gränssnitt för beständig lagring, oavsett om det är lokala filsystem, nätverksresurser eller molnlagring. Detta gör att du kan definiera lagringskrav utan att vara bunden till den underliggande infrastrukturen. Det fungerar via koncept som Persistent Volume (PV), Persistent Volume Claim (PVC), Storage Classes och Volume Plugins, även om detta ligger utanför ramen för den här artikeln.
- Deklarativt tillstånd: Kubernetes använder YAML-filer, så kallade objektmanifest, för att definiera det önskade tillståndet för ditt kluster. Dessa manifest anger hur klustret ska se ut, inklusive önskade applikationsinstanser och nätverksregler. Kubernetes hanterar automatiskt alla tillståndsändringar baserat på manifesten – du behöver inte skriva egna skript för det.
- Flexibla driftsmiljöer: Du kan köra Kubernetes i molnet, på din lokala utvecklingsmiljö och i nästan vilken annan miljö som helst. Stora molnleverantörer som Amazon Web Services, Google Cloud och Microsoft Azure erbjuder hanterade Kubernetes-tjänster. För lokal utveckling finns det lösningar som Minikube och K3s.
- Utökad funktionalitet: Utöver sina inbyggda funktioner är Kubernetes extremt utbyggbart. Du kan skapa egna objekttyper, operatorer och controllers för att anpassa och effektivisera dina arbetsflöden.
Kubernetes arkitektur
En typisk Kubernetes-arkitektur består av en master-nod och en eller flera arbetsnoder. Master-noden dirigerar klustrets aktiviteter medan arbetsnoderna kör applikationerna enligt instruktioner från mastern.
Källa: kubernetes.io
Låt oss titta närmare på de olika komponenterna.
Master-nod(erna)
Master-noden kontrollerar klustrets tillstånd och bestämmer hur varje nod ska agera. Det finns flera centrala processer som körs på master-noden:
- API-server: Denna server fungerar som navet för all kommunikation i klustret. Den exponerar Kubernetes API och tillåter alla klusterkomponenter att utbyta information. API-servern spelar två huvudsakliga roller: den fungerar som en ingångspunkt för användare att interagera med klustret, till exempel när du använder `kubectl`, och den autentiserar och validerar alla förfrågningar för att säkerställa att endast behöriga användare får utföra handlingar.
- Schemaläggare: Schemaläggaren ansvarar för att placera applikationer (i form av pods) på tillgängliga arbetsnoder. Den tar hänsyn till resurskrav och andra kriterier för att välja lämplig nod för varje pod. En pod är den minsta enheten för distribution i Kubernetes.
- Controller Manager: Denna enhet övervakar klustret och hanterar fel, till exempel att se till att rätt antal pods körs. Om en pod kraschar, kommer Controller Manager att be schemaläggaren att starta en ny pod.
- etcd: etcd är en nyckelvärdesdatabas som lagrar hela klustrets konfiguration, vilket gör den till ”hjärnan” i klustret. Alla klusterändringar registreras i etcd, vilket gör det möjligt att återskapa ett kluster från en säkerhetskopia. Notera att etcd endast lagrar klustrets tillstånd, inte själva applikationsdatan.
Arbetsnod(erna)
Varje arbetsnod har tre processer som tillåter Kubernetes att kommunicera med den och att köra pods på den. Dessa processer är:
- Kubelet: Kubelet är den primära tjänsten på noden och ansvarar för att köra containrar. Om Kubelet inte är aktivt, är Kubernetes inte mer än ett REST API med en nyckelvärdesdatabas. Kubelet interagerar direkt med containerhanteraren, isolerar containrarna från varandra och från det underliggande systemet, vilket ger ökad flexibilitet i hanteringen. Kubelet är den sista instansen att bekräfta vilka pods som körs på en nod.
- Container Runtime: Denna del av noden ansvarar för att faktiskt köra containrarna. Exempel på container runtime är Docker, rkt och containerd.
- Kube-proxy: Kube-proxy tillhandahåller lastbalansering mellan pods, med hjälp av virtuella IP-adresser. Detta skapar ett abstraktionslager och säkerställer att klienter alltid kan nå sina tjänster, även om pods flyttas eller startas om.
Hur containerisering fungerar
Containerisering innebär att man paketerar alla nödvändiga delar av en applikation, som bibliotek, binärer och konfigurationer, i en enhet. Containrar innehåller inte kärnresurser eller virtualiserad hårdvara, utan de körs ”ovanpå” en container runtime, vilket definierar de tillgängliga resurserna. Eftersom containrar endast innehåller de väsentliga delarna av applikationen är de lätta och snabbare att starta än virtuella maskiner.
Läs också: Containers vs. Virtual Machines: Explaining the Differences
Hur man installerar och ställer in Kubernetes
Nu går vi från teori till praktik. I den här delen får du lära dig hur du installerar Kubernetes på ett Windows-system.
Det finns flera sätt att göra installationen, antingen genom kommandoraden eller ett grafiskt gränssnitt. Men det är viktigt att du säkerställer att du uppfyller de grundläggande kraven. Din hårdvara behöver minst 2 GB RAM för master-noden och 700 MB för varje arbetsnod. Programvarukraven inkluderar Hyper-V, Docker Desktop, unika MAC-adresser och unika produkt-UUID för varje nod. Nedan följer en steg-för-steg-metod:
Installera och konfigurera Hyper-V
Hyper-V är Microsofts inbyggda mjukvara för virtualisering och ger möjligheten att hantera virtuella maskiner via ett grafiskt gränssnitt eller kommandoraden. Följ dessa steg för att aktivera Hyper-V:
- Öppna Kontrollpanelen.
- Klicka på ”Program”.
- Under ”Program och funktioner”, klicka på ”Aktivera eller inaktivera Windows-funktioner”.
- Markera ”Hyper-V” och ”Hypervisor-funktioner för Windows”.
- Klicka på ”OK”. Datorn startar om för att aktivera de nya inställningarna.
Datorn kan ibland starta om automatiskt för att slutföra konfigurationen. Du kan verifiera att installationen lyckats genom att skriva följande kommando i Power Shell:
Get-WindowsOptionalFeature -Online -Funktionsnamn Microsoft-Hyper-V
Om installationen lyckats, kommer du att se ett ”Aktiverad” tillstånd.
Installerar Docker
Som vi har gått igenom är Kubernetes ett containerorkestreringsverktyg som bygger på containrar. I det här fallet är Docker ett bra val. Kubernetes interagerar med Docker och hanterar containers på företagsnivå. Börja med att ladda ner Docker för Windows. Docker Desktop förenklar utveckling, transport och körning av dockade applikationer. Det är också det snabbaste sättet att bygga Docker-applikationer på Windows. Efter installationen är Docker tillgängligt i alla terminaler så länge det körs. Mer information hittar du i den officiella Docker-dokumentationen. Om du upplever problem som att Docker-ikonen inte visas, kan det hjälpa att starta om datorn.
Installerar Kubernetes
Docker GUI låter dig konfigurera, installera och aktivera Kubernetes. Följ dessa steg för att installera K8s:
- Högerklicka på Docker-ikonen och välj ”Inställningar”.
- Välj ”Kubernetes” i menyn och klicka på ”Apply”.
Docker installerar sedan de nödvändiga paketen och beroendena, vilket tar ca 5-10 minuter, beroende på din internetuppkoppling. Du kan använda Docker-appen för att verifiera att allt fungerar korrekt.
Eftersom Kubernetes-applikationer kan köras via CLI, kan det vara bra att installera Kubernetes Dashboard, som inte installeras automatiskt. Installera Dashboard med följande steg:
- Ladda ner YAML-konfigurationsfilen.
- Distribuera applikationen med koden:
kubectl apply -f recommended.yaml
. - Bekräfta installationen:
kubectl get -f recommended.yaml.txt
.
För att komma åt instrumentpanelen, kör följande kommando i Power Shell (inte CMD):
- Kör följande kod:
((kubectl -n kube-system describe secret default | select-string “token:”) – split “+”)[1]
- Kopiera den genererade token och kör
kubectl proxy
. - Öppna den här länken i din webbläsare.
- Klicka på ”Token” och klistra in din token här.
- Logga in.
Om du har kommit hit bör du nu se K8s instrumentpanelen. Härifrån kan du hantera dina applikationer utan att behöva arbeta direkt med CLI.
Läs också: Hur man installerar Kubernetes på Ubuntu 18
Hur man skapar och hanterar Kubernetes Cluster
Nu när du har installerat Kubernetes på din dator, kan du följa dessa steg för att skapa och hantera ett enkelt kluster:
- Konfigurera nätverk: Du behöver konfigurera nätverket mellan klusternoderna så att de kan kommunicera.
- Sätt upp klusterautentisering: Skapa mekanismer för autentisering och auktorisering för klusteråtkomst.
- Installera huvudkomponenterna: Detta inkluderar API-server, schemaläggare och controller manager.
- Anslut arbetsnoder: Anslut dina arbetsnoder till klustret med konfigurationsfiler från klusterinställningsprocessen.
- Distribuera tillägg: Du kan installera tillägg för att utöka klustrets funktionalitet.
- Hantera arbetsbelastningar: Nu kan du distribuera dina applikationer.
Detta är en översikt över processen. För en mer detaljerad guide rekommenderar vi att du läser den officiella dokumentationen.
Så här distribuerar du din första applikation med Kubernetes
Det mest grundläggande kommandot i Kubernetes är kubectl action resource
, som låter dig utföra åtgärder som att skapa eller ta bort resurser. Om du behöver mer hjälp kan du använda --help
-flaggan efter ett kommando.
Till exempel: Kubernetes nodes --help
. För att distribuera din första app med Kubernetes, använd kommandot: kubectl create deployment Kubernetes-bootcamp --image=gcr.io/google-samples/Kubernetes-bootcamp:v1
.
Slutord
Den här guiden har gett dig en introduktion till Kubernetes. Du har lärt dig om fördelarna, funktionerna och arkitekturen. Vi har också gått igenom hur du kan komma igång, inklusive några referenser till externa resurser. Även om det kan vara mycket information att ta in i början, har den här artikeln gett dig en bra grund att bygga vidare på. För att bli bekväm med tekniken, rekommenderar vi att du besöker den officiella Kubernetes-dokumentationen och övar på det du har lärt dig. Ju mer du övar, desto snabbare blir du expert på K8s.
Kolla in Kubernetes tutorials för nybörjare för att fördjupa dig ytterligare.