En Översikt över Populära Verktyg för Containerorkestrering
Låt oss dyka ner i en diskussion om några av de mest framstående verktygen för containerorkestrering som finns tillgängliga idag.
Vad Innebär Containerorkestrering?
Containerplattformar, som Docker, har blivit oerhört populära för paketering av applikationer baserade på en mikroservicearkitektur. Containers möjliggör hög skalbarhet och kan skapas efter behov. Medan detta fungerar bra för ett fåtal containrar, kan situationen snabbt bli komplex när antalet ökar till hundratals.
Hanteringen av en containers livscykel och dess administration blir extremt komplicerad när antalet växer dynamiskt med efterfrågan.
Containerorkestrering löser detta problem genom att automatisera schemaläggning, distribution, skalning, lastbalansering, tillgänglighet och nätverk av containrar. Det är i grunden automatisering och hantering av containers och deras tjänsters livscykel.
Det handlar om processen att hantera och organisera flera containrar och mikrotjänstarkitekturer i stor skala.
Lyckligtvis finns det en rad containerorkestreringsverktyg att välja mellan på marknaden.
Låt oss utforska några av dem!
Kubernetes
Du kanske redan hade gissat det, eller hur?
Kubernetes är en öppen källkods plattform som ursprungligen utvecklades av Google och nu underhålls av Cloud Native Computing Foundation. Kubernetes stödjer både deklarativ konfiguration och automatisering. Det kan underlätta automatisk distribution, skalning och hantering av containeriserade arbetsbelastningar och tjänster.
Kubernetes API underlättar kommunikationen mellan användare, klusterkomponenter och externa tredjepartskomponenter. Kubernetes kontrollplan och noder körs på en samling noder som bildar klustret. Applikationernas arbetsbelastning består av en eller flera Pods som körs på Worker-noder. Kontrollplanet hanterar dessa Pods och arbetarnoderna.
Många företag, som Babylon, Booking.com och AppDirect, använder Kubernetes i stor utsträckning.
Funktioner inkluderar:
- Serviceupptäckt och lastbalansering
- Orkestrering av lagring
- Automatiska utrullningar och återställningar
- Horisontell skalning
- Hantering av hemligheter och konfiguration
- Självläkande system
- Batchutförande
- IPv4/IPv6 dubbelstack
- Automatisk packning av resurser
Intresserad av att lära dig mer om Kubernetes? Kolla in dessa resurser.
OpenShift
Red Hat erbjuder OpenShift Container Platform as a Service (PaaS). Det förenklar automatiseringen av applikationer på säkra och skalbara resurser i hybridmolnmiljöer. Det tillhandahåller en företagsplattform för att bygga, distribuera och hantera containeriserade applikationer.
OpenShift bygger på Red Hat Enterprise Linux och Kubernetes-motorn. Det har olika funktioner för att hantera kluster via både användargränssnitt (UI) och kommandoradsgränssnitt (CLI). Red Hat erbjuder OpenShift i två ytterligare varianter:
- OpenShift Online – erbjuds som Software as a Service (SaaS)
- OpenShift Dedicated – erbjuds som en hanterad tjänst
OpenShift Origin (Origin Community Distribution) är ett öppet källkodsprojekt som används i OpenShift Container Platform, OpenShift Online och OpenShift Dedicated.
Nomad
Nomad är en enkel, flexibel och lättanvänd verktyg för hantering av arbetsbelastningar. Det används för att distribuera och hantera containrar och icke-containeriserade applikationer både on-premise och i molnet. Nomad körs som en enskild binär med ett litet minnesfotavtryck (cirka 35MB) och har stöd för macOS, Windows och Linux.
Utvecklare använder deklarativ infrastruktur som kod (IaC) för att distribuera applikationer och definiera hur en applikation ska distribueras. Nomad återställer automatiskt applikationer vid fel.
Nomad kan hantera applikationer av alla slag, inte bara containrar. Det ger också stöd för Docker, Windows, Java, virtuella maskiner med mera.
Funktioner inkluderar:
- Enkelhet och pålitlighet
- Modernisering av äldre applikationer utan att behöva skriva om dem
- Enkel federation i stor skala
- Beprövad skalbarhet
- Lättanvändbarhet i flera moln
- Inbyggda integrationer med Terraform, Consul och Vault
Docker Swarm
Docker Swarm använder en deklarativ modell. Man kan definiera det önskade tillståndet för en tjänst, och Docker ser till att det tillståndet upprätthålls. Docker Enterprise Edition har integrerat Kubernetes med Swarm, vilket ger flexibilitet i valet av orkestreringsmotor. Docker Engine CLI används för att skapa en svärm av Docker-motorer där applikationstjänster kan distribueras.
Docker-kommandon används för att interagera med klustret. Maskiner som ingår i klustret kallas noder, och Swarm-hanteraren hanterar klustrets aktiviteter.
Docker Swarm består huvudsakligen av två komponenter:
- Hanterare – hanterarnoder tilldelar uppgifter till arbetsnoder i svärmen. En ledare väljs med hjälp av en Raft-konsensusalgoritm. Ledaren hanterar alla beslut relaterade till svärmhantering och uppgiftsorkestrering.
- Arbetsnoder – arbetsnoder tar emot uppgifter från hanterarnoden och utför dem.
Funktioner inkluderar:
- Klusterhantering integrerad med Docker Engine
- Decentraliserad design
- Deklarativ servicemodell
- Skalbarhet
- Önskat tillstånd
- Nätverk över flera värdar
- Service discovery
- Lastbalansering
- Säkerhet som standard
- Rullande uppdateringar
Docker Compose
Docker Compose används för att definiera och köra applikationer med flera containrar som samverkar. Docker Compose beskriver grupper av sammanlänkade tjänster som delar mjukvaruberoenden och som orkestreras och skalas tillsammans.
Man kan använda en YAML-fil (dockerfil) för att konfigurera applikationens tjänster. Sedan kan man med ett docker-compose up-kommando skapa och starta alla tjänster baserat på konfigurationen.
En docker-compose.yml fil kan se ut så här:
version: '3' volumes: app_data: services: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:6.8.0 ports: - 9200:9200 - 9300:9300 volumes: - ./elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml - ./elastic-certificates.p12:/usr/share/elasticsearch/config/elastic-certificates.p12 - ./docker-data-volumes/elasticsearch:/usr/share/elasticsearch/data kibana: depends_on: - elasticsearch image: docker.elastic.co/kibana/kibana:6.8.0 ports: - 5601:5601 volumes: - ./kibana.yml:/usr/share/kibana/config/kibana.yml app: depends_on: - elasticsearch image: asadali08527/app:latest ports: - 8080:8080 volumes: - app_data:/var/lib/app/
Docker Compose kan användas för att dela upp applikationskoden i flera oberoende körande tjänster som kommunicerar genom ett internt nätverk. Verktyget tillhandahåller CLI-kommandon för att hantera hela livscykeln för applikationer. Docker Compose har traditionellt fokuserat på utvecklings- och testarbetsflöden, men det fokuserar nu mer på produktionsinriktade funktioner.
Docker Engine kan vara en fristående instans som tillhandahålls av Docker Machine eller ett fullständigt Docker Swarm-kluster.
Funktioner inkluderar:
- Flera isolerade miljöer på en enda värd
- Bevarar volymdata när containrar skapas
- Återskapar endast containrar som har ändrats
- Variabler och möjlighet att flytta en komposition mellan olika miljöer
MiniKube
MiniKube gör det möjligt för användare att köra Kubernetes lokalt. Med MiniKube kan man testa applikationer lokalt i ett enskilt Kubernetes-kluster på sin dator. MiniKube har integrerat stöd för Kubernetes Dashboard.
MiniKube kör den senaste stabila versionen av Kubernetes och stöder flera funktioner:
- Lastbalansering
- Multikluster
- Persistenta volymer
- NodePorts
- ConfigMaps och hemligheter
- Container Runtime: Docker, CRI-O och container
- Aktivering av CNI (Container Network Interface)
Marathon
Marathon är anpassat för Apache Mesos och har förmågan att orkestrera både applikationer och ramverk.
Apache Mesos är en klusterhanterare med öppen källkod. Mesos är ett Apache-projekt som kan köra både containeriserade och icke-containeriserade arbetsbelastningar. Huvudkomponenterna i ett Mesos-kluster är Mesos Agent Nodes, Mesos Master, ZooKeeper, Frameworks – Frameworks koordinerar med mastern för att schemalägga uppgifter på agentnoder. Användare interagerar med Marathon-ramverket för att schemalägga jobb.
Marathon-schemaläggaren använder ZooKeeper för att hitta den aktuella mastern för att skicka uppgifter. Marathon-schemaläggaren och Mesos-mastern har sekundära master som körs för att garantera hög tillgänglighet. Klienter interagerar med Marathon genom REST API.
Funktioner inkluderar:
- Hög tillgänglighet
- Tillståndskänsliga applikationer
- Ett användarvänligt och kraftfullt gränssnitt
- Restriktioner
- Service discovery och lastbalansering
- Hälsokontroller
- Händelseprenumeration
- Mätvärden
- REST API:er
Cloudify
Cloudify är ett molnorkestreringsverktyg med öppen källkod för distributionsautomation och livscykelhantering av containrar och mikrotjänster. Det erbjuder funktioner som kluster on-demand, självläkning och skalning på infrastrukturnivå. Cloudify kan hantera containerinfrastruktur och orkestrera de tjänster som körs på containerplattformar.
Det kan integreras med Docker och Docker-baserade containerhanterare, inklusive:
- Docker Swarm
- Docker Compose
- Kubernetes
- Apache Mesos
Cloudify kan underlätta skapande, återställning, skalning och nedmontering av containerkluster. Containerorkestrering är central för att tillhandahålla en skalbar och högtillgänglig infrastruktur som containerhanterare kan köra på. Cloudify ger möjligheten att orkestrera heterogena tjänster över flera plattformar. Man kan distribuera applikationer med CLI eller via Cloudify Manager.
Rancher
Rancher är en öppen källkods plattform som använder containerorkestrering som kallas Cattle. Den tillåter användare att nyttja orkestreringstjänster som Kubernetes, Swarm och Mesos. Rancher tillhandahåller den mjukvara som behövs för att hantera containrar, vilket gör att organisationer inte behöver bygga containerplattformar från grunden med enskilda tekniker med öppen källkod.
Rancher 2.x tillåter hantering av Kubernetes-kluster som körs hos olika leverantörer.
För att komma igång med Rancher krävs två steg:
Förbered en Linux-värd
Man behöver förbereda en Linux-värd med 64-bitars Ubuntu 16.04 eller 18.04 (eller en annan Linux-distribution) och med minst 4 GB minne. En version av Docker som stöds ska installeras på värden.
Starta servern
För att installera och köra Rancher, körs följande Docker-kommando på värden:
$ sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher
Ranchers användargränssnitt möjliggör hantering av tusentals Kubernetes-kluster och noder.
Containership
Containership är konstruerat för att underlätta distribution och hantering av Kubernetes-infrastruktur i flera moln. Det är flexibelt och kan användas i publika och privata moln samt i lokala miljöer från ett enda verktyg. Det möjliggör tillhandahållande, hantering och övervakning av Kubernetes-kluster hos de flesta stora molnleverantörer.
Containership är byggt med molnbaserade verktyg som Terraform för provisionering, Prometheus för övervakning och Calico för nätverks- och policyhantering. Det är byggt ovanpå vanlig Kubernetes. Containership-plattformen erbjuder en intuitiv instrumentpanel och kraftfullt REST API för avancerad automatisering.
Funktioner inkluderar:
- Multicloud Dashboard
- Revisionsloggar
- GPU-instansstöd
- Icke-störande uppgraderingar
- Schemalagda Masters
- Integrerade mätvärden
- Realtidsloggning
- Implementeringar utan avbrott
- Stöd för persistenta lagring
- Stöd för privata register
- Automatisk skalning av arbetsbelastningar
- SSH nyckelhantering
AZK
AZK är ett orkestreringsverktyg med öppen källkod för utvecklingsmiljöer. Det använder en manifestfil (Azkfile.js) för att underlätta installation, konfiguration och körning av vanliga verktyg för utveckling av webbapplikationer med öppen källkod.
AZK använder containrar istället för virtuella maskiner. Containrar liknar virtuella maskiner, men erbjuder bättre prestanda och lägre resursförbrukning.
Azkfile.js-filer kan återanvändas för att lägga till nya komponenter eller skapa nya från grunden. Dessa filer kan delas, vilket säkerställer enhetlighet mellan utvecklingsmiljöer på olika maskiner och minskar risken för buggar vid driftsättning.
GKE
GKE tillhandahåller en helt hanterad lösning för orkestrering av containerapplikationer på Google Cloud Platform. GKE-kluster drivs av Kubernetes. Användare kan interagera med kluster genom Kubernetes CLI. Kubernetes-kommandon kan användas för att distribuera och hantera applikationer, utföra administrativa uppgifter, konfigurera policyer och övervaka statusen för distribuerade arbetsbelastningar.
Avancerade hanteringsfunktioner i Google Cloud, som lastbalansering, nodpooler, automatisk skalning, automatiska uppgraderingar, autoreparation av noder, loggning och övervakning med Google Clouds operationssvit, är också tillgängliga med GKE-kluster.
Google Cloud tillhandahåller CI/CD-verktyg för att bygga och underhålla applikationscontainrar. Cloud Build kan användas för att bygga containerbilder från olika källkodsförråd, och Container Registry för att lagra containerbilder.
GKE är en företagsanpassad lösning med förbyggda distributionsmallar.
Intresserad av att lära dig GKE? Kolla in den här nybörjarkursen.
AKS
AKS är en fullt hanterad Kubernetes-tjänst som erbjuds av Azure. Den erbjuder serverlös Kubernetes, säkerhet och styrning. AKS hanterar Kubernetes-kluster och möjliggör enkel distribution av containeriserade applikationer. AKS konfigurerar automatiskt alla Kubernetes master och noder, vilket gör att användaren bara behöver hantera och underhålla agentnoderna.
AKS är gratis; användare betalar bara för agentnoder i klustret och inte för masters. Ett AKS-kluster kan skapas i Azure-portalen eller programmatiskt. Azure stöder även avancerade funktioner som nätverk, Azure Active Directory-integration och övervakning med Azure Monitor.
AKS stöder även Windows Server-containrar. Klustrets och distribuerade applikationers prestanda kan övervakas från Azure Monitor. Loggar lagras i en Azure Log Analytics-arbetsyta.
AKS är certifierad som Kubernetes-kompatibel.
AWS EKS
AWS EKS är en fullt hanterad Kubernetes-tjänst. AWS låter användare köra EKS-kluster med AWS Fragrate, en serverlös tjänst för containrar. Fargate tar bort behovet av att provisionera och hantera servrar och gör det möjligt att betala per resurs och applikation.
AWS möjliggör användningen av ytterligare funktioner med EKS, som Amazon CloudWatch, Amazon Virtual Private Cloud (VPC), AWS Identity, Auto Scaling Groups och Access Management (IAM), för att övervaka, skala och lastbalansera applikationer. EKS integreras med AWS App Mesh för en Kubernetes-upplevelse. EKS kör den senaste Kubernetes-versionen och är certifierad Kubernetes-kompatibel.
Sammanfattning
Förhoppningsvis har denna lista gett en översikt över de olika verktygen för containerorkestrering. Med den informationen blir det enklare att välja det verktyg som passar bäst för olika användningsfall.
Utforska gärna Kubernetes Management Software för ytterligare insikt.