Komma igång med Kubernetes: En introduktion för nybörjare

Kubernetes är den mest populära programvaran med öppen källkod som automatiserar processer för containerutveckling.

Enligt den årliga studien av Cloud Native Computing Foundation (CNCF) använder 96 % av organisationerna antingen K8 eller överväger att använda dem. Om du följer noga använder 5,8 miljoner utvecklare världen över Kubernetes, och det är 31 % av backend-utvecklarna över hela världen.

Det är att föredra för sin förmåga att utnyttja teknik genom förbättrad skalbarhet, tillgänglighet och kort implementeringstid. Medan många utvecklare kickstartar sin containerbana med Docker (ett omfattande verktyg som förlitar sig på CLI för att interagera med containrar, en i taget), ger K8s dig abstraktioner på hög nivå för dig att definiera applikationer och deras infrastruktur genom scheman som du kan samarbeta om.

Om du är ny på Kubernetes är den här artikeln speciellt skräddarsydd för att hjälpa dig genom dina introduktionsbitar och dela insikter för att komma igång. Du får lära dig hur K8s kan hjälpa dig som utvecklare att överladda dina digitala produkter.

Vad är Kubernetes och varför behöver du det?

Kubernetes är en koordineringsmotor med öppen källkod (framework) som används för att automatisera distribution, skalning och hantering av containeriserade applikationer; detta inkluderar hantering av förutsägbarhet och tillgänglighet.

Enkelt uttryckt, låt oss tänka på en applikation som du har containeriserat. För att betjäna dina applikationsanvändare måste du köra flera behållare. Oron börjar när du behöver hantera dessa containrar. Behållarna behöver inte nödvändigtvis vara på samma maskin, vilket gör det mer komplicerat. Så vad är lösningen på detta problem?

Kubernetes kommer till din räddning genom att tillhandahålla ett effektivt sätt att hantera alla dessa processer sömlöst. Även om du kanske liknar K8s vid en containermotor som Docker, är det en containerorkestrator. Som utvecklare som börjar behöver du inte oroa dig för hur K8s gör orkestreringen. Du kommer sannolikt inte att skapa ett K8s-kluster för din applikation; mer om detta inom kort.

Du kommer dock att interagera med kluster som ditt infrastrukturteam har satt upp. Att bekanta dig med de föremål du kommer att interagera med är avgörande. Men innan du gör det behöver du en hög nivå förståelse för dess arkitektur för att förstå vad som händer under den.

Funktioner hos Kubernetes

Kubernetes har flera funktioner med ett brett spektrum av möjligheter för att köra containrar och annan tillhörande infrastruktur. Här är en lista:

  • Automatiserade utrullningar, skalning och återställning – K8s robotiserar att skapa ditt specificerade antal repliker, distribuera dem över lämplig (mest lämplig) hårdvara och omschemalägga containrar om en nod är på driftstopp. Du kan omedelbart skala dina repliker baserat på efterfrågan eller ändrade behov som din CPU-användning.
  • Serviceupptäckt, belastningsstabilisering och nätverksinträde – Kubernetes erbjuder en unik nätverkslösning, inklusive intern serviceupptäckt och exponering av offentliga behållare.
  • Applikationer med och utan stat – I början fokuserade K8s främst på tillståndslösa containrar. Eftersom tekniken utvecklas över många fronter, rymmer den nu inbyggda objekt som representerar tillståndsfulla tillämpningar. Godkänd, alla program kan köras på Kubernetes.
  • Lagringsreglering – Oavsett om du är på ett lokalt filsystem, nätverksresurs eller i molnet, tillhandahåller Kubernetes (abstrakt) beständig lagring till applikationer som körs på behållare. Och abstraktionen låter dig definiera lagringskrav oavsett den underliggande infrastrukturen. Även om det ligger utanför ramen för den här artikeln, fungerar det genom principer som persistent volym (PV), persistent volym claim (PVC), lagringsklasser och volym plugins.
  • Deklarativt tillstånd – K8s använder Yet Ain’t Markup Language-filer (YAML), som kallas objektmanifest, för att specificera önskade tillstånd för ditt kluster. Manifesten dikterar hur ditt kluster ser ut, inklusive men inte begränsat till de önskade applikationsinstanserna och nätverksreglerna, bland andra konfigurationer. När du applicerar manifest hanterar K8s automatiskt alla tillståndsövergångar – du behöver inte skriva skripten för att göra detta.
  • Flera arbetsmiljöer – Du är inte begränsad till att använda Kubernetes i molnet eller din utvecklararbetsstation. Nästan varje distribution är tillgänglig för att matcha ditt specifika användningsfall. Håll utkik efter de stora molnteknikleverantörerna som Amazon Web Services, Google Cloud och Microsoft Azure. Du kommer att inse att de alla erbjuder hanterade Kubernetes-tjänster medan enstaka noddistributioner som Minikube och K3s är tillgängliga för lokal användning.
  • Super Extensivity – K8s är en samling av många funktioner. Som om det inte är nog kan du accelerera dess kapacitet med tillägg. Du kan bygga anpassade objekttyper, operatorer och kontroller för att effektivisera dina arbetsbelastningar.
  • Kubernetes arkitektur

    Kärnan består Kubernetes-arkitekturen av en enda huvudnod och två arbetarnoder. Masternoden anropar bilderna i klustret, medan arbetarnoderna (slav) kör applikationerna enligt beslut av mastern.

    Källa: kubernetes.io

    Här är en ytterligare uppdelning.

    Masternod(erna)

    Masternoden dikterar klustertillstånden och bestämmer varje speciell nods handlingar. Flera processer krävs för att ställa in masternoden.

  • API-server
    All klusterkommunikation är baserad här. Det är gatewayen som gör att alla klusterkomponenter kan utbyta information. Det exponerar Kubernetes API. Här spelas två huvudroller. Den första är en ingångspunkt som tillåter användare att interagera med klustret. Till exempel att skicka förfrågningar när du använder Kubectl. För det andra, gatekeeping för att autentisera och validera förfrågningar. I det här fallet kan endast vissa användare utföra förfrågningar.
  • Schemaläggare
    Schemaläggaren tilldelar applikationer eller Kubernetes-arbetsbelastningsobjekt till arbetarnoden. Här placerar schemaläggaren poddar på noder baserat på resurskrav. Och när du pratar om poddar, är det bara en liten enhet för distribution i Kubernetes.
  • Controller Manager
    Den här enheten underhåller kluster som nodfel för att upprätthålla det korrekta antalet pods. Den upptäcker klustertillståndsförändringar som att pods dör och försöker återställa poden till dess ursprungliga tillstånd. Till exempel, om en pod av misstag dör, ber styrenhetshanteraren schemaläggaren att ratificera vilken nod som snurrar upp en ny pod som ersättning, och kubelet snurrar upp en ny pod.
  • etcd
    Det kallas också för klusterhjärnan. Enheten är ett nyckelvärdeslager för klusterkonfigurationen. Det betyder att alla klusterändringar görs här. Du kan säkerhetskopiera ett kluster genom att spara det distribuerade nyckelvärdet. Observera dock att endast klustertillståndsdata lagras här, inte applikationsdata. Denna enhet är speciellt avsedd för att hålla information om klustertillstånd och använda den för de föregående processerna för att skapa medvetenhet till dem om klustret.
  • Slavnod(erna)

    Varje slavnod är installerad med tre nodprocesser som gör att K8s kan interagera med den och separat snurra upp pods inom varje nod. De nödvändiga processerna är:

  • Kubelet
    Detta är Kubernetes primära tjänst som kör exekvering för containerexekveringsskiktet. Om du tar bort den här enheten är Kubernetes inget annat än ett REST-API som stöds med ett nyckel-värdelager. Som standard kör K8s containerapplikationen. Behållare är alltid isolerade från varandra och det underliggande värdsystemet. Detta har visat sig vara analytiskt för att frigöra individuell applikationshantering från varandra och den fysiska eller virtuella infrastrukturen.

    Medan API-tillträdeskontrollen kan avvisa pods eller lägga till ytterligare begränsningar, är kubelet den sista ratifieraren av vilka pods som körs på en viss nod, inte schemaläggare eller Daemonsets. För att sammanfatta det, kubelets interagerar med noden och behållaren. Det tar också konfigurationsfiler och snurrar upp pods med containerruntime.

  • Behållarens körtid
    Denna sektion kör containrar. Till exempel kan du använda Docker, rkt eller conatinered lite mer om hur containrar fungerar avsnitt.
  • Kube-proxy
    Den här enheten tillhandahåller ett abstraktionslager för nodpodgrupper under vanliga policyer som fallet med lastbalansering. Alla noder använder Kube-proxy för att tillhandahålla en virtuell IP-adress för klienter som kommer åt dynamiska pods. Den här strukturen är lösningen för lastbalansering samtidigt som den håller en lågpresterande overhead.
  • Hur containerisering fungerar

    Containerisering innebär att virtualisera alla nödvändiga delar av en mjukvaruapplikation till en enhet. Under behållare finns en samling bibliotek, binärer och alla nödvändiga applikationskonfigurationer. Men de inkluderar inte kärnresurser eller virtualiserad hårdvara.

    I slutändan, kör ”on top” containerkörningstider som beskriver resurserna. Eftersom behållare endast innehåller de grundläggande komponenterna och appberoendena är de lätta och därmed snabbare, till skillnad från andra virtuella maskiner.

    Läs också: Containers vs. Virtual Machines: Explaining the Differences

    Hur man installerar och ställer in Kubernetes

    Jag har ägnat så mycket tid åt att vara teoretisk; den överlappande sektionen kommer att vara taktisk och involvera lite praktisk containererfarenhet. Denna handledning täcker särskilt installation på Windows-operativsystemet.

    Det finns flera sätt att göra installationer när du använder Windows; du kan välja kommandoraden eller det grafiska användargränssnittet. Du bör dock se till att du uppfyller följande obligatoriska specifikationer.

    Din hårdvara behöver en masternod med minst 2 GB minne och 700 MB för arbetarnoden. För programvarukraven, Hype-v, Docker för stationära datorer, unik Mac-adress och en unik produkt-UUID för varje nod. Här är steg-för-steg-metoden.

    Installera och konfigurera Hyper-V

    Hyper-V är Windows standardprogramvara för virtualisering. I huvudsak är det en VirtalBox på steroider. Det låter dig hantera virtuella maskiner på antingen Microsoft GUI eller kommandoraden. Följ dessa steg för att aktivera Hyper-V.

  • Öppna kontrollpanelen.
  • Klicka på program från den vänstra panelen.
  • Under program- och funktionersidan klickar du på `Slå på eller av Windows-funktioner.`
  • Välj Hyper-V och Hypervisor-funktioner för Windows.
  • Välj sedan OK i detta steg; din maskin bör starta om för att aktivera de nya inställningarna.
  • Ibland kan din dator starta om separat för att säkerställa att allt är korrekt konfigurerat. Du kan verifiera installationens framgång genom att skriva in följande kommando i Power Shell.

    Get-WindowsOptionalFeature -Online -Funktionsnamn Microsoft-Hyper-V

    Bekräfta att din skärm är fylld med ett ”aktiverat” tillstånd.

    Installerar Docker

    Som du har lärt dig är K8s ett containerorkestreringsverktyg byggt ovanpå containrar; i det här fallet är Docker ett bra val. K8s kommunicerar med Docker och hanterar allt på företagsnivå. Kom igång genom att ladda ner Docker för Windows. Om du undrar varför det är nödvändigt att använda Docker Desktop, är det att föredra för att förenkla utvecklingen, frakten och körningen av dockariserade (containeriserade) applikationer.

    Det är också det snabbaste sättet att bygga Docker-appar på Windows med Hyper-V och nätverk. Efter en lyckad installation är Docker alltid tillgänglig på vilken terminal som helst så länge den är igång. För en detaljerad installationsguide kan du kolla in den officiella Docker-dokumentationen. Om du stöter på några problem som dolda ikoner efter installationen kan problemet lösas genom att starta om din maskin.

    Installerar Kubernetes

    Docker GUI låter dig konfigurera inställningar, installera och aktivera Kubernetes. Följ dessa steg för att installera K8s.

  • Högerklicka på Docker-ikonen och välj egenskaper.
  • Välj ”Inställningar” från rullgardinsmenyn efter att ha klickat på ”Egenskaper”.
  • På den vänstra panelen väljer du ”Kubernetes” och klickar på ”Apply”.
  • Docker kommer sedan att installera några ytterligare paket och beroenden. Processen tar cirka fem till tio minuter, baserat på din internethastighet. Du kan använda Docker-appen för att hävda att allt fungerar korrekt.

    Eftersom Kubernetes-appar kan distribueras med hjälp av CLI, kan du behöva installera K8s instrumentpanel, eftersom den inte är installerad som standard. Installera instrumentpanelen med följande steg.

  • Ladda ner YAML-konfigurationen.
  • Distribuera programmet med den här koden: . Kubectl tillämpa -f .recommended.yaml.
  • Bekräfta att allt är bra genom att: kubectl.exe hämta -f .recommended.yaml.txt.
  • För att komma åt instrumentpanelen, kör följande kommando på 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 tagit dig hit, bravo bör din skärm fyllas med K8s instrumentpanel. Nu kan du hantera dina appar utan att behöva göra det hårda arbetet med CLI.

    Läs också: Hur man installerar Kubernetes på Ubuntu 18

    Hur man skapar och hanterar Kubernetes Cluster

    Om du har följt upp här bör du ha lyckats installera Kubernetes på din värd. Följ sedan dessa steg för att skapa och utföra enkel hantering av ditt kluster:

  • Konfigurera nätverk – Här måste du ställa in nätverk mellan klusternoder; låta dem kommunicera med varandra.
  • Ställ in klusterautentisering – Skapa autentiserings- och auktoriseringsmekanismer för klusteråtkomst.
  • Installera huvudkomponenter; involverar API-server, schemaläggare och controller manager.
  • Anslut arbetarnoder – Anslut arbetarnoder till klustret med hjälp av konfigurationsfiler som tillhandahålls av klusterinställningsprocessen.
  • Distribuera tillägg – Du kan installera tillägg för att förbättra klustrets funktionalitet.
  • Hantera arbetsbelastningar – Det är dags för dig att distribuera dina appar.
  • Även om detta bara är en översikt över processen för att skapa kluster, innefattar den många steg som involverar flera kommandon. Här är den officiella dokumentationsguiden om hur du skapar kluster före distribution. Det borde vara din vägledande hand.

    Så här distribuerar du din första applikation med Kubernetes

    Det vanligaste kommandot när du använder K8s är kubectl action resource, som låter dig utföra specifika åtgärder som att skapa eller ta bort en specificerad resurs.

    Om du har fastnat kan du använda –help efter ett visst underkommando för att få ytterligare information.

    Till exempel får Kubernetes noder – hjälp. Distribuera din första K8s-app med kommandot kubectl create deployment Kubernetes-bootcamp –image=gcr.io/google-samples/Kubernetes-bootcamp:v1.

    Slutord

    Den här guiden har varit en ingång till Kubernetes-teknik. Du har lärt dig fördelarna, funktionerna och arkitekturen med Kubernetes. Som tur är kan du ha behövt hänvisa till några tips (externa resurser) för att komma igång; den har förklarat hur saker och ting fungerar under huven.

    Även om det kan verka överväldigande att förstå hela teknikstacken som nybörjare, har det här inlägget varit en smidig riktlinje för att komma igång med K8s. Du behöver lite övning för att bli säker på att använda den här tekniken, så jag hänvisar dig till den officiella Kubernetes-dokumentationen som referens sida vid sida. Ju mer övning du har, desto snabbare blir du expert på K8:or.

    Kolla sedan in Kubernetes tutorials för nybörjare att bemästra.