Vilken orkestreringsplattform att välja

Bland de mest framstående plattformarna för dynamisk orkestrering av arbetsbelastningar finner vi Nomad och Kubernetes.

Dessa orkestreringsverktyg underlättar automatiseringen av konfiguration, administration och samordning av olika applikationer som du använder.

Både Nomad och Kubernetes bidrar till att förenkla driftsättning och hantering av dina containerbaserade applikationer. En adekvat orkestreringsplattform ger dig möjlighet att effektivt administrera dina olika mikrotjänster och containrar – från upptäckt och distribution till samordning och skalning.

Innan vi bestämmer vilken plattform som passar bäst, ska vi utforska Nomad och Kubernetes närmare.

Vad är Nomad?

Nomad, utvecklat av HashiCorp, adresserar utmaningarna med att orkestrera arbetsbelastningar. Det utmärker sig genom sin flexibilitet, schemaläggningsförmåga och orkestrering av containerhantering. Plattformen fungerar både i molnet och lokalt och stöder även icke-containerbaserade arbetsbelastningar.

Med Nomad erhåller du en enkel binärfil som du behöver köra. I jämförelse med andra alternativ har den ett mycket lågt resursavtryck, vilket inte överbelastar dina servrar. Utöver containrar kan du köra olika arbetsbelastningar som Windows, Java, Virtual Machines och Docker.

Du kan driftsätta och hantera dina företagscontainrar i produktionsmiljö. Dessutom kan du köra dina icke-containeriserade applikationer på Nomad-klustret utan att behöva anpassa dem. Nomad möjliggör enkel utskalning och placering av dina applikationer närmare kunderna geografiskt. Det underlättar också effektiv körning av kortlivade batch-jobb.

Nomad erbjuds i två varianter: Community Edition och Enterprise Edition. Community Edition är kostnadsfri och låter dig själv administrera ditt Nomad-kluster. Du kan ha det i drift lokalt eller i din molnmiljö inom 15 minuter. Å andra sidan ger Enterprise Edition support och ytterligare funktioner såsom samarbete, drift och styrning.

Vad är Kubernetes?

Kubernetes är en utbyggbar, portabel och effektiv orkestreringsplattform. Den kallas även K8s och har sitt ursprung hos Google. Plattformen underhålls nu av Cloud Native Computing Foundation (CNCF) och är den mest populära inom orkestrering.

Med Kubernetes kan du effektivt flytta dina arbetsbelastningar efter behov – oavsett om det är lokalt, i publika moln eller i en hybridmiljö. Den syftar till att erbjuda alla nödvändiga verktyg för att lösa dina behov inom orkestrering och infrastrukturhantering.

Kubernetes är den absolut mest använda orkestreringsplattformen. Ledande molntjänstleverantörer som Amazon Web Service och Google Cloud Platform tillhandahåller hanterade Kubernetes-tjänster – Amazon Elastic Kubernetes Service (AWS EKS) respektive Google Kubernetes Engine (GKE).

Läs mer: Getting Started with Kubernetes: An Introduction for Beginners

Men vilken plattform är bäst för dina behov? Låt oss undersöka detta genom att jämföra de två.

Nomad vs. Kubernetes

#1. Installation

Installation är ett initialt steg för att använda de flesta programvaror och tekniker, vilket gör enkelheten avgörande. När du väljer mellan Nomad och Kubernetes, är det viktigt att bedöma hur lätt det är att komma igång.

Nomad

För Nomad får du en färdigkompilerad binärfil eller ett paket som du installerar. För manuell installation på din lokala maskin kan du ladda ner och installera den officiella binärfilen. Om du använder Linux kan du installera det officiella Linux-paketet. Efter installationen behöver du bara installera CNI (Container Network Interface) plugins direkt från kommandoraden.

Det blir ännu enklare om du installerar på MacOS eller Windows med pakethanteringsverktyg som Homebrew respektive Chocolatey. Med ett enda kommando slutförs din installation, inklusive CNI-plugins.

Kubernetes

I Kubernetes-fallet finns det olika komponenter och klienter som kan installeras efter behov. Du får binärfiler för var och en. Det finns olika behållarbilder för olika körtider och systemarkitekturer.

Du kan söka i officiellt arkiv efter den binärfil som passar din plattform (Darwin, Linux eller Windows) och systemarkitektur. När rätt behållaravbildning är installerad behöver du kubectl – kommandoradsverktyget som du använder för att interagera med containrarna.

#2. Skalbarhet

Skalbarhet är avgörande för containerbaserade arbetsbelastningar. Det definierar systemets förmåga att hantera ökande belastningar. Enkelt uttryckt, om du behöver mer datorkraft ska ditt orkestreringsramverk enkelt kunna lägga till resurser.

Nomad

Nomad har bevisats kunna köra kluster med över 10 000 noder i produktionsmiljö. År 2020 genomförde Nomad ett stresstest med 2 miljoner portcontainrar på 6 100 värdar. Detta spreds över 10 olika AWS-regioner och varade i 22 minuter. Detta överträffade deras tidigare rekord på 1 miljon containrar.

Du får också horisontell autoskalning med Nomad Autoscaler. Du kan köra det som en separat process efter behov.

Kubernetes

Från och med version 1.28 tillåter Kubernetes dig att skala ditt kluster till upp till 5 000 noder. Du kan köra totalt 150 000 pods eller totalt 300 000 containrar.

Med ökad skalbarhet blir underhållet av ett Kubernetes-kluster mer komplicerat i jämförelse med hanteringen av ett Nomad-kluster. Nomad har en fördel över Kubernetes gällande det totala antalet noder du kan köra.

#3. Prestanda

När du väljer en orkestreringsplattform bör du balansera funktioner med prestanda. Prestandan för en plattform påverkar också hur mycket systemresurser du kommer att använda.

Nomad

Nomad har ett litet resursavtryck tack vare sitt binära tillvägagångssätt. Du slipper också installationen av separata tjänster för att starta orkestreringsplattformen. Det innebär att du förbrukar mindre CPU och minne på dina noder, vilket leder till lägre omkostnader och bättre prestanda.

Det är mycket anpassningsbart och kan hantera olika arbetsbelastningar, både lokalt och i molnet. Med sin enkelhet, motståndskraft och effektivitet får du en fördel i att bibehålla prestandan när din klusterstorlek ökar.

Kubernetes

Kubernetes är högt optimerat för containerbaserade arbetsbelastningar. Om du kör en flotta av containerbaserade mikrotjänster, är Kubernetes utmärkt på att hantera dem. Med dess omfattande nätverkskapacitet och stora utbud av integrationer, kan du accelerera och finjustera dina orkestreringsbehov.

På grund av det omfattande utbudet av funktioner och konfigurationer, förbrukar Kubernetes mer av dina systemresurser. När din klusterstorlek växer, kan du möta ökade kostnader och komplexitet i att hantera det.

#4. Nätverk

Nätverk är en väsentlig aspekt av containerorkestrering. Det avgör hur dina noder kan hitta varandra och kommunicera.

Nomad

Eftersom Nomad fokuserar på orkestrering av arbetsbelastningar, minimerar plattformen sin påverkan på nätverk och försöker modifiera saker så lite som möjligt.

Nomad använder konfigurationer istället för att förlita sig på infrastruktur. Du erhåller den information du behöver direkt från konfigurationen, i stället för att köra ytterligare komponenter som DNS-servrar eller lastbalanserare. Den grundläggande enheten för schemaläggning i Nomad, kallad Allokeringar, kan begära portar med hjälp av nätverksblocket.

Kubernetes

I Kubernetes är nätverk en central pelare. Du kan styra följande aspekter – kommunikation mellan containrar via lokal värd, kommunikation mellan pods, kommunikation mellan pods och tjänster och extern till tjänst-kommunikation.

I jämförelse med de dynamiska portarna i Nomad, använder Kubernetes en annan metod. Du får ett Service API som en abstraktion för att exponera en grupp Pods mot nätverket.

#5. Krav

Om du kör din orkestreringsplattform i stor skala, beror systemkraven på klustrets storlek och de arbetsbelastningar du kör. Utöver CPU och minne, behöver du också nätverksresurser.

Nomad

För produktionsservrar är det lämpligt att köra på stora maskininstanser. Det är fördelaktigt om varje serverinstans har mellan 4-8+ CPU-kärnor, 16-32 GB+ minne och 40-80 GB+ snabbdisk. Du bör också ha tillräckligt med nätverksbandbredd.

Om du använder en brandvägg, måste du se till att de tre portar som Nomad använder är tillåtna. De tre portarna är: HTTP API (standard 4646) som används av servrar och klienter, RPC (standard 4647) för intern kommunikation och Serf WAN (standard 4648) som används av servrar för kommunikation sinsemellan.

Kubernetes

Kubernetes-kluster kan bli komplexa i stora containerbaserade produktionsmiljöer. Det är lämpligt att behålla varje nod med minst 2-4 CPU-kärnor och 8-16 GB RAM.

För stora kluster kan du behöva mer resurser per nod. Du måste också säkerställa att du har tillräckligt med nätverksbandbredd.

Även om både Nomad och Kubernetes kan skala upp efter behov, kommer ett Kubernetes-kluster att förbruka mer resurser i jämförelse.

#6. Kodning

Lättheten att koda definierar hur effektivt du kan interagera med ditt valda ramverk. Utöver att definiera din plattform och jobb, behöver du också lära dig kommandoradsverktygets CLI-kommandon.

Nomad

HCL eller HashiCorp Configuration Language är det primära konfigurationsspråket som används i Nomad. HCL balanserar läsbarhet med maskinläsbarhet. Du kan skriva jobbspecifikationer med detta, inklusive uppgifter, begränsningar och beroenden för din applikation och dina tjänster.

Du måste också lära dig CLI-kommandona för Nomads kommandoradsverktyg. Detta ger dig möjlighet att interagera med ditt Nomad-kluster och utföra konfigurationer.

Kubernetes

Istället för att förlita sig på ett separat språk kan du konfigurera Kubernetes med YAML-filer. Du kan också använda JSON. Dessa konfigurationsfiler låter dig beskriva hur din applikation ska köras, inklusive specifikationer för pods, tjänster, distributioner och andra resurser.

När du kör komplexa Kubernetes-applikationer, är Helm en pakethanterare för Kubernetes. Det ger dig möjlighet att definiera, installera och uppgradera även komplexa Kubernetes-applikationer. Styrdiagram skrivs i YAML och kan innehålla mallar och värdefiler för anpassade distributioner.

Du kommer att använda kommandoradsverktyget kubectl för att interagera med ditt Kubernetes-kluster. Det innebär att köra olika kommandon för att skapa, ändra och hantera Kubernetes-resurser.

#7. Integration

Orkestreringsplattformar kommer med en egen uppsättning integrationer som de stöder. Det finns även flera tredjepartsintegrationer som du kan lägga till för utökad funktionalitet.

Nomad

Med Nomad kan du integrera med olika verktyg och tekniker. Du kan enkelt ansluta till Docker och andra containerkörtider, vilket underlättar distribution av containerbaserade applikationer. För infrastrukturhantering kan du använda Terraform-integration och förenkla resursskapandet.

Som en del av HashiCorp, ger Nomad dig även möjlighet att samarbeta med HashiCorp Consul för tjänsteupptäckt och hälsokontroller, medan HashiCorp Vault ger säker hemlighetshantering. Övervakningsbehoven täcks genom integrationer som Prometheus, Grafana och ELK Stack. Nomad passar också bra i CI/CD-pipelines, vilket underlättar automatiserad applikationsdistribution.

Kubernetes

Kubernetes är en beprövad lösning och erbjuder en lång lista med tekniker att integrera med. Du kan ansluta till Docker för containerdistributioner. För dina nätverksbehov finns lösningar som Calico eller Cilium. Lagringsalternativ som Ceph och molnbaserade leverantörer som AWS EKS (Amazon Elastic Kubernetes Service) och Google GKE (Google Kubernetes Engine) administrerar aktivt din beständiga lagring. Molnlösningarna tillhandahåller även ytterligare tjänster.

Om du behöver stöd för serverlösa arbetsbelastningar, har Kubernetes lösningar. Du kan utöka Kubernetes med serverlösa ramverk som Knative och KEDA (Kubernetes-baserad Event-Driven Autoscaling).

#8. GUI

Ibland kan du vilja lämna kommandoraden och koden för att visualisera den plattform du använder. Ett GUI eller grafiskt användargränssnitt möjliggör detta.

Nomad

Nomad tillhandahåller ett inbyggt webbgränssnitt som en del av binärfilen. När du installerar Nomad och kör servern erhåller du GUI tillsammans med API och CLI. Det krävs ingen konfiguration för att börja använda gränssnittet och undersöka ditt kluster.

När du har startat din Nomad-server kan du ange serveradressen i din webbläsare. Du kommer därefter att omdirigeras till webbgränssnittet. Det finns även ett ui-underkommando som låter dig besöka den nödvändiga webbsidan direkt från kommandoraden.

Kubernetes

Kubernetes kommer inte med ett GUI som standard. Du kan dock installera det efter behov. Kubernetes erbjuder själva ett officiellt användargränssnitt kallat Dashboard. Även om det inte är installerat som standard kan du starta det med verktyget kubectl. Instrumentpanelen ger dig en översikt över ditt kluster.

Du kan distribuera containerbaserade applikationer till ett Kubernetes-kluster, administrera dem och felsöka. Molnbaserade leverantörer som AWS EKS och Google GKE erbjuder egna GUI-verktyg. Det finns även verktyg från tredje part som kan användas.

Nomad vs. Kubernetes: Sammanfattningstabell

Funktion Nomad Kubernetes
Installation En enda kompilerad binärfil Olika binärfiler för olika komponenter och klienter
Skalbarhet Kan köra 10 000 noder och 2 miljoner containrar 5 000 noder och totalt 300 000 containrar
Prestanda Enkelt och effektivt med ett mindre resursfotavtryck Kräver fler resurser med flera nätverkskonfigurationer
Nätverk Fokuserar på konfigurationer och dynamiska portar Har en stark grund i nätverket och tjänsteabstraktion
Krav Lägre systemkrav för större kluster Större kluster behöver fler systemresurser
Kodning Använder Hashicorp Configuration Language (HCL) Använder standardiserade språk som YAML och JSON
Integration Har bra officiella- och tredjepartsintegrationer Har ett stort utbud av integrationer och verktyg tillgängliga
GUI Inbyggt och tillgängligt i webbläsaren Behöver installeras separat

Välj rätt plattform för dina orkestreringsbehov

Ditt val av orkestreringsplattform mellan Nomad och Kubernetes beror på dina specifika behov och prioriteringar. Båda plattformarna stöder olika användningsfall, såsom schemaläggning, automatiska utrullningar, återställningar samt klusterupptäckt och hantering.

Om du prioriterar enkelhet och har en mindre arbetsbelastning kan Nomad vara ett bra val. Med sin enda binärfil och minimala resurskrav, blir Nomad enklare att installera och använda. Du kan dessutom skala ditt kluster för att hantera ett stort antal noder.

Om du däremot behöver omfattande funktioner, noggrann kontroll och många integrationer, är Kubernetes det bästa alternativet. Den erbjuder en robust lösning för containerbaserade arbetsbelastningar och integreras sömlöst med olika verktyg och tekniker. Du kan även utnyttja de hanterade lösningarna från AWS och Google Cloud.

Beakta även andra faktorer som behovet att lära sig ett nytt språk (HCL) i Nomad-fallet, medan Kubernetes använder YAML eller JSON för konfigurationer. Ett webbgränssnitt kan också vara viktigt för användarvänlighet.

Tänk på tillgängliga systemresurser och de relaterade kostnaderna. Ditt val av orkestreringsplattform mellan Nomad och Kubernetes ska baseras på dina behov, din erfarenhet och dina resurser.

Kolla också in Kubernetes bästa praxis för bättre containerorkestrering.