14 Container Orchestration Tools för DevOps

Låt oss prata om några av de populära containerorkestreringsverktygen som finns på marknaden.

Vad är en Container Orchestration?

Containerplattformar som Docker är mycket populära idag för att paketera applikationer baserade på en mikroservicearkitektur. Behållare kan göras mycket skalbara, som kan skapas på begäran. Även om detta är bra för några behållare, men tänk dig att du har hundratals av dem.

Det blir extremt svårt att hantera containerlivscykeln och dess hantering när antalet ökar dynamiskt med efterfrågan.

Containerorkestrering löser problemet genom att automatisera schemaläggning, distribution, skalbarhet, lastbalansering, tillgänglighet och nätverk av containrar. Containerorkestrering är automatisering och hantering av containers och tjänsters livscykel.

Det är en process för att hantera och organisera flera behållare och mikrotjänsters arkitektur i stor skala.

Lyckligtvis finns det många containerorkestreringsverktyg tillgängliga på marknaden.

Låt oss utforska dem!

Kubernetes

Du gissade rätt, eller hur?

Kubernetes är en plattform med öppen källkod som ursprungligen designades av Google och som nu underhålls av Cloud Native Computing Foundation. Kubernetes stöder både deklarativ konfiguration och automatisering. Det kan hjälpa till att automatisera distribution, skalning och hantering av containeriserad arbetsbelastning och tjänster.

Bild av Kubernetes.io

Kubernetes API hjälper till att upprätta kommunikation mellan användare, klusterkomponenter och externa tredjepartskomponenter. Kubernetes kontrollplan och noder körs på en grupp noder som tillsammans bildar klustret. Applikationsarbetsbelastningen består av en eller flera Pods som körs på Worker-nod(er). Kontrollplanet hanterar Pods och arbetarnoder.

Företag som Babylon, Booking.com, AppDirect använder i stor utsträckning Kubernetes.

Funktioner

  • Serviceupptäckt och lastbalansering
  • Förvaringsorkestrering
  • Automatiserade utrullningar och återställningar
  • Horisontell skalning
  • Hemlighets- och konfigurationshantering
  • Självläkande
  • Batchutförande
  • IPv4/IPv6 dubbelstack
  • Automatisk soppackning

Vill du lära dig Kubernetes? Kolla in dessa lärresurser.

OpenShift

Redhat erbjuder OpenShift Container Platform as a Service (PaaS). Det hjälper till med automatisering av applikationer på säkra och skalbara resurser i hybridmolnmiljöer. Det tillhandahåller plattformar av företagsklass för att bygga, distribuera och hantera containeriserade applikationer.

Bild av Openshift

Den är byggd på Redhat Enterprise Linux och Kubernetes-motor. Openshift har olika funktioner för att hantera kluster via UI och CLI. Redhat tillhandahåller Openshift i ytterligare två varianter,

  • Openshift Online – erbjuds som programvara som en tjänst (SaaS)
  • OpenShift Dedicated – erbjuds som hanterade tjänster

Openshift Origin (Origin Community Distribution) är ett uppströms communityprojekt med öppen källkod som används i OpenShift Container Platform, Openshift Online och OpenShift Dedicated.

Nomad

Nomad är en enkel, flexibel och lättanvänd arbetsbelastningsorganisatör för att distribuera och hantera containrar och icke-containeriserade applikationer över on-prem och moln i skala. Nomad körs som en enda binär med ett litet resursavtryck (35MB) och stöds på macOS, Windows och Linux.

Utvecklare använder deklarativ infrastruktur-som-kod (IaC) för att distribuera sina applikationer och definiera hur en applikation ska distribueras. Nomad återställer automatiskt applikationer från misslyckanden.

Bild av Nomad

Nomad Orchestrate-applikationer av alla slag (inte bara containrar). Det ger förstklassigt stöd för Docker, Windows, Java, virtuella datorer och mer.

Funktioner

  • Enkel & pålitlig
  • Modernisera äldre applikationer utan omskrivning
  • Enkel federation i skala
  • Beprövad skalbarhet
  • Multi-moln med lätthet
  • Inbyggda integrationer med Terraform, Consul och Vault

Hamnarsvärm

Hamnarsvärm använder en deklarativ modell. Du kan definiera önskat tillstånd för tjänsten, och Docker kommer att behålla det tillståndet. Docker Enterprise Edition har integrerat Kubernetes med Swarm. Docker erbjuder nu 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.

Bild av Docker

Docker-kommandon används för att interagera med klustret. Maskiner som går med i klustret kallas noder, och Swarm-hanteraren hanterar klustrets aktiviteter.

Docker Swarm består av två huvudkomponenter:

  • Chef – chefsnoder tilldelar uppgifter till arbetarnoder i svärmen. En ledare väljs utifrån en Raft-konsensusalgoritm. Ledaren hanterar alla beslut om svärmhantering och uppgiftsorkestrering för svärmen.
  • Arbetarnod – arbetarnod tar emot uppgifter från chefsnoden och utför dem.

Funktioner

  • Klusterhantering integrerad med Docker Engine
  • Decentraliserad design
  • Deklarativ servicemodell
  • Skalning
  • Önskad statlig försoning
  • Nätverk med flera värdar
  • Service upptäckt
  • Lastbalansering
  • Säkert som standard
  • Rullande uppdateringar

Docker Compose

Docker Compose är för att definiera och köra applikationer med flera behållare som fungerar tillsammans. Docker-compose beskriver grupper av sammankopplade tjänster som delar mjukvaruberoenden och som är orkestrerade och skalade ihop.

Du kan använda en YAML-fil (dockerfil) för att konfigurera din applikations tjänster. Sedan, med ett docker-compose up-kommando, skapar och startar du alla tjänster från din konfiguration.

En docker-compose.yml ser 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/

Du kan använda Docker Compose för att faktorisera appkoden i flera oberoende körande tjänster som kommunicerar med ett internt nätverk. Verktyget tillhandahåller CLI för att hantera hela livscykeln för dina applikationer. Docker Compose har traditionellt varit fokuserat på utvecklings- och testarbetsflöden, men nu fokuserar de på mer produktionsinriktade funktioner.

Docker Engine kan vara en fristående instans som tillhandahålls med Docker Machine eller ett helt Docker Swarm-kluster.

Funktioner

  • Flera isolerade miljöer på en enda värd
  • Bevara volymdata när behållare skapas
  • Återskapa endast behållare som har ändrats
  • Variabler och att flytta en komposition mellan miljöer

MiniKube

Minikube tillåter användare att köra Kubernetes lokalt. Med Minikube kan du testa applikationer lokalt i ett Kubernetes-kluster med en nod på din persondator. Minikube har integrerat stöd för Kubernetes Dashboard.

Minikube kör den senaste stabila versionen av Kubernetes och stöder följande funktioner.

  • Lastbalansering
  • Multikluster
  • Beständiga volymer
  • NodePorts
  • ConfigMaps och hemligheter
  • Container Runtime: Docker, CRI-O och container
  • Aktivera CNI (Container Network Interface)

Maraton

Maraton är för Apache Mesos som har förmågan att orkestrera appar såväl som ramverk.

Apache Mesos är en klusterhanterare med öppen källkod. Mesos är ett projekt av Apache som har förmågan att 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 lokalisera den aktuella mastern för att skicka uppgifter. Marathon schemaläggaren och Mesos master har sekundär master löpning för att säkerställa hög tillgänglighet. Kunder interagerar med Marathon med hjälp av REST API.

Funktioner

  • Hög tillgänglighet
  • Statliga appar
  • Vackert och kraftfullt UI
  • Begränsningar
  • Serviceupptäckt och lastbalansering
  • Hälsokontroller
  • Eventprenumeration
  • Metrik
  • REST API:er

Cloudify

Cloudify är ett molnorkestreringsverktyg med öppen källkod för distributionsautomation och livscykelhantering av containrar och mikrotjänster. Den tillhandahåller funktioner som kluster on-demand, auto-healing och skalning på infrastrukturnivå. Cloudify kan hantera containerinfrastruktur och orkestrera tjänsterna som körs på containerplattformar.

Det kan enkelt integreras med Docker- och Docker-baserade containerhanterare, inklusive följande.

  • Hamnarbetare
  • Hamnarsvärm
  • Docker Compose
  • Kubernetes
  • Apache Mesos

Cloudify kan hjälpa till att skapa, läka, skala och riva ned containerkluster. Containerorkestrering är nyckeln för att tillhandahålla en skalbar och högtillgänglig infrastruktur som containerförvaltare kan köra på. Cloudify ger möjligheten att orkestrera heterogena tjänster över plattformar. Du kan distribuera applikationer med CLI och Cloudify Manager.

Rancher

Rancher är en öppen källkodsplattform som använder containerorkestrering som kallas boskap. Det låter dig utnyttja orkestreringstjänster som Kubernetes, Swarm, Mesos. Rancher tillhandahåller programvaran som krävs för att hantera containrar så att organisationer inte behöver bygga containerserviceplattformar från grunden med en distinkt uppsättning öppen källkodsteknik.

Rancher 2.x tillåter hantering av Kubernetes-kluster som körs på kundspecificerade leverantörer.

Att komma igång med Rancher är en process i två steg.

Förbered en Linux-värd

Förbered en Linux-värd med 64-bitars Ubuntu 16.04 eller 18.04 (eller annan Linux-distribution som stöds, och minst 4 GB minne. Installera en version av Docker som stöds på värden.

Starta servern

För att installera och köra Rancher, kör följande Docker-kommando på din värd:

$ sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher

Användargränssnittet för rancher tillåter hantering av tusentals Kubernetes-kluster och noder.

Containerfartyg

Containership är till för att möjliggöra distribution och hantering av Kubernetes-infrastruktur med flera moln. Det är flexibelt att arbeta i offentliga, privata moln och lokala miljöer från ett enda verktyg. Det gör det möjligt att tillhandahålla, hantera och övervaka dina Kubernetes-kluster hos alla större molnleverantörer.

Containership är byggt med hjälp av molnbaserade verktyg, som Terraform för provisionering, Prometheus för övervakning och Calico för nätverks- och policyhantering. Den är byggd ovanpå vanilj Kubernetes. Containership-plattformen erbjuder en intuitiv instrumentpanel, såväl som kraftfullt REST API för komplex automatisering.

Funktioner

  • Multicloud Dashboard
  • Revisionsloggar
  • GPU-instansstöd
  • Icke-störande uppgraderingar
  • Schemalagda Masters
  • Integrerade mätvärden
  • Realtidsloggning
  • Implementeringar utan driftstopp
  • Stöd för ihållande lagring
  • Support för privat register
  • Automatisk skalning av arbetsbelastning
  • SSH nyckelhantering

AZK

AZK är ett orkestreringsverktyg med öppen källkod för utvecklingsmiljöer genom en manifestfil (Azkfile.js), som hjälper utvecklare att installera, konfigurera och köra vanliga verktyg för att utveckla webbapplikationer med olika teknologier med öppen källkod.

AZK använder behållare istället för virtuella maskiner. Behållare är som virtuella maskiner, med bättre prestanda och lägre förbrukning av fysiska resurser.

Azkfile.js-filer kan återanvändas för att lägga till nya komponenter eller skapa nya från grunden. Det kan delas, vilket säkerställer total paritet mellan utvecklingsmiljöer i olika programmerares maskiner och minskar risken för buggar under 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. Du kan interagera med kluster med Kubernetes CLI. Kubernetes-kommandon kan användas för att distribuera och hantera applikationer, utföra administrationsuppgifter, ställa in policyer och övervaka tillståndet för distribuerade arbetsbelastningar.

Bild från GCP

Avancerade hanteringsfunktioner i Google Cloud är också tillgängliga med GKE-kluster som Google Clouds lastbalansering, nodpooler, automatisk skalning av noder, automatiska uppgraderingar, autoreparation av noder, loggning och övervakning med Google Clouds operationssvit.

Google Cloud tillhandahåller CI/CD-verktyg som hjälper dig att bygga och betjäna applikationsbehållare. Du kan använda Cloud Build för att bygga containerbilder (som Docker) från en mängd olika källkodsförråd och Container Registry för att lagra dina containerbilder.

GKE är en företagsklar lösning med förbyggda distributionsmallar.

Intresserad av att lära dig GKE? Kolla in det här nybörjarkurs.

AKS

AKS är en fullt hanterad Kubernetes-tjänst som erbjuds av Azure, som erbjuder serverlösa Kubernetes, säkerhet och styrning. AKS hanterar ditt Kubernetes-kluster och låter dig enkelt distribuera containeriserade applikationer. AKS konfigurerar automatiskt alla Kubernetes master och noder. Du behöver bara hantera och underhålla agentnoderna.

Bild från Azure

AKS är gratis; du betalar bara för agentnoder inom ditt kluster och inte för masters. Du kan skapa ett AKS-kluster i Azure-portalen eller programmatiskt. Azure stöder även ytterligare funktioner som avancerad nätverk, Azure Active Directory-integration och övervakning med Azure Monitor.

AKS stöder även Windows Server-behållare. Dess kluster och distribuerade programprestanda kan övervakas från Azure Monitor. Loggar lagras i en Azure Log Analytics-arbetsyta.

AKS har certifierats som Kubernetes-konform.

AWS EKS

AWS EKS är en fullt hanterad Kubernetes-tjänst. AWS låter dig köra ditt EKS-kluster med AWS Fragrate, som är en serverlös dator för behållare. Fragrance tar bort behovet av att tillhandahålla och hantera servrar, vilket gör det möjligt att betala per resurs per applikation.

AWS tillåter användning av ytterligare funktioner med EKS som Amazon CloudWatch, Amazon Virtual Private Cloud (VPC), AWS Identity, Auto Scaling Groups och Access Management (IAM), övervaka, skala och lastbalanseringsapplikationer. EKS integreras med AWS App-mesh och ger Kubernetes inbyggd upplevelse. EKS kör den senaste Kubernetes och är certifierad Kubernetes-konform.

Slutsats

I slutändan hoppas jag att listan ovan har gett en rättvis förståelse för de olika verktygen för orkestrering av behållare, och nu, beroende på användningsfallet, blir det lättare att välja det bästa.

Ta sedan reda på Kubernetes Management Software.