La oss fordype oss i noen av de mest brukte verktøyene for containerorkestrering som er tilgjengelige i dagens marked.
Hva er egentlig containerorkestrering?
Containerplattformer, som for eksempel Docker, har opplevd en enorm popularitet i moderne applikasjonsutvikling, spesielt for å pakke applikasjoner basert på en mikrotjenestearkitektur. Containere tilbyr enestående skalerbarhet og kan opprettes ved behov. Dette er ideelt for et begrenset antall containere, men hva skjer når du håndterer hundrevis, kanskje til og med tusenvis?
Når antallet containere øker dynamisk, blir det utfordrende å administrere deres livssyklus og administrere dem effektivt. Dette kan bli svært komplisert.
Containerorkestrering er løsningen på dette problemet. Det automatiserer planlegging, utrulling, skalerbarhet, lastbalansering, tilgjengelighet og nettverksadministrasjon av containere. I essens er det en automatisert prosess for å administrere livssyklusen til containere og de tilknyttede tjenestene.
Det omfatter prosessen med å håndtere og organisere et stort antall containere og mikrotjenester i stor skala.
Heldigvis finnes det et bredt spekter av containerorkestreringsverktøy som er tilgjengelige i dag.
La oss utforske noen av dem!
Kubernetes
Det stemmer, du gjettet riktig!
Kubernetes, en plattform med åpen kildekode, ble først utviklet av Google og vedlikeholdes nå av Cloud Native Computing Foundation. Kubernetes støtter både deklarativ konfigurasjon og automatisering. Den kan hjelpe til med å automatisere distribusjon, skalering og styring av containeriserte arbeidsmengder og tjenester.
Bilde av Kubernetes.io
Kubernetes API fasiliterer kommunikasjon mellom brukere, klyngekomponenter og eksterne tredjepartskomponenter. Kubernetes kontrollplan og noder kjører på et sett med noder, og danner en klynge. Applikasjonens arbeidsmengde består av en eller flere pods som kjører på worker-noden(e). Kontrollplanet administrerer både pods og worker-noder.
Selskaper som Babylon, Booking.com og AppDirect benytter seg i stor grad av Kubernetes.
Funksjoner:
- Tjenesteoppdagelse og lastbalansering
- Lagringsorkestrering
- Automatiske utrullinger og tilbakeføringer
- Horisontal skalering
- Administrasjon av hemmeligheter og konfigurasjon
- Selvreparasjon
- Batchutførelse
- IPv4/IPv6 dual-stack
- Automatisk søppelinnhenting
Ønsker du å lære mer om Kubernetes? Sjekk ut disse læringsressursene.
OpenShift
Red Hat tilbyr OpenShift Container Platform som en tjeneste (PaaS). Det bidrar til å automatisere applikasjoner på sikre og skalerbare ressurser i hybride skymiljøer. Det tilbyr plattformer i bedriftsklasse for å bygge, utplassere og administrere containeriserte applikasjoner.
Bilde av Openshift
Det er bygget på Red Hat Enterprise Linux og Kubernetes-motoren. OpenShift har forskjellige funksjoner for å administrere klynger via UI og CLI. Red Hat leverer OpenShift i ytterligere to varianter:
- OpenShift Online – tilbys som programvare som en tjeneste (SaaS).
- OpenShift Dedicated – tilbys som administrerte tjenester.
OpenShift Origin (Origin Community Distribution) er et åpen kildekode oppstrøms fellesskapsprosjekt som brukes i OpenShift Container Platform, OpenShift Online og OpenShift Dedicated.
Nomad
Nomad er en enkel, fleksibel og brukervennlig orkestrator for arbeidsbelastning for å utplassere og administrere containere og ikke-containerbaserte applikasjoner på tvers av lokale og skyer i stor skala. Nomad kjører som en enkelt binær med et lite ressursfotavtrykk (35 MB) og støttes på macOS, Windows og Linux.
Utviklere bruker deklarativ infrastruktur-som-kode (IaC) for å utplassere applikasjonene sine og definere hvordan en applikasjon skal utplasseres. Nomad gjenoppretter automatisk applikasjoner fra feil.
Bilde av Nomad
Nomad Orchestrate applikasjoner av alle typer (ikke bare containere). Den gir førsteklasses støtte for Docker, Windows, Java, VM-er og mer.
Funksjoner:
- Enkel og pålitelig
- Moderniser eldre applikasjoner uten omskriving
- Enkel føderasjon i skala
- Bevist skalerbarhet
- Multi-sky med letthet
- Integrasjoner med Terraform, Consul og Vault
Docker Swarm
Docker Swarm benytter seg av en deklarativ modell. Du definerer ønsket tilstand for tjenesten, og Docker vil opprettholde denne tilstanden. Docker Enterprise Edition har integrert Kubernetes med Swarm. Docker tilbyr nå fleksibilitet i valget av orkestreringsmotor. Docker engine CLI brukes til å skape en sverm av docker-motorer der applikasjonstjenester kan distribueres.
Bilde av Docker
Docker-kommandoer brukes for å samhandle med klyngen. Maskiner som er med i klyngen er kjent som noder, og Swarm-manageren håndterer aktivitetene til klyngen.
Docker Swarm består av to hovedkomponenter:
- Leder – ledernodene tildeler oppgaver til arbeidernodene i svermen. En leder velges basert på en Raft-konsensusalgoritme. Lederen tar alle avgjørelser vedrørende svermestyring og oppgaveorkestrering for svermen.
- Worker Node – Worker Node mottar oppgaver fra ledernode og utfører dem.
Funksjoner:
- Klyngeadministrasjon integrert med Docker Engine
- Desentralisert design
- Deklarativ tjenestemodell
- Skalering
- Ønsket statsforsoning
- Multi-host nettverk
- Tjenesteoppdagelse
- Lastbalansering
- Sikkert som standard
- Rullende oppdateringer
Docker Compose
Docker Compose er designet for å definere og kjøre multi-container applikasjoner som samhandler med hverandre. Docker Compose beskriver grupper av sammenkoblede tjenester som deler programvareavhengigheter og er orkestrert og skalert sammen.
Du kan bruke en YAML-fil (dockerfile) for å konfigurere programmets tjenester. Deretter, med en docker-compose up-kommando, kan du opprette og starte alle tjenestene fra konfigurasjonen.
En docker-compose.yml fil ser omtrent slik ut:
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 bruke Docker Compose til å dele applikasjonskoden inn i flere uavhengig kjørende tjenester som kommuniserer via et internt nettverk. Verktøyet tilbyr CLI for å håndtere hele livssyklusen til applikasjonene dine. Docker Compose har tradisjonelt sett fokusert på utvikling og testing av arbeidsflyter, men i dag er fokuset rettet mot mer produksjonsorienterte funksjoner.
Docker Engine kan være en frittstående instans levert med Docker Machine eller en hel Docker Swarm-klynge.
Funksjoner:
- Flere isolerte miljøer på en enkelt vert
- Bevaring av volumedata når containere opprettes
- Gjenoppretting av kun containere som er endret
- Variabler og flytting av en komposisjon mellom miljøer
Minikube
Minikube lar brukere kjøre Kubernetes lokalt. Med Minikube kan du teste applikasjoner lokalt i en enkelt-node Kubernetes klynge på din personlige maskin. Minikube har integrert støtte for Kubernetes Dashboard.
Minikube kjører den nyeste stabile versjonen av Kubernetes og støtter følgende funksjoner:
- Lastbalansering
- Multi-klynge
- Vedvarende volumer
- NodePorts
- ConfigMaps og hemmeligheter
- Container Runtime: Docker, CRI-O og containerd
- Aktivering av CNI (Container Network Interface)
Marathon
Marathon er designet for Apache Mesos og kan orkestrere både apper og rammer.
Apache Mesos er en klyngeleder med åpen kildekode. Mesos er et prosjekt av Apache som har muligheten til å kjøre både containeriserte og ikke-containeriserte arbeidsbelastninger. Hovedkomponentene i en Mesos-klynge er Mesos Agent Nodes, Mesos Master, ZooKeeper, Frameworks – Frameworks koordinerer med masteren for å planlegge oppgaver på agentnoder. Brukere samhandler med Marathon-rammeverket for å planlegge jobber.
Marathon-planleggeren bruker ZooKeeper for å finne den gjeldende masteren for å sende inn oppgaver. Marathon-planleggeren og Mesos-masteren har sekundær master-backup for å sikre høy tilgjengelighet. Klienter samhandler med Marathon ved hjelp av REST API.
Funksjoner:
- Høy tilgjengelighet
- Stateful apper
- Brukervennlig og kraftig grensesnitt
- Begrensninger
- Tjenesteoppdagelse og lastbalansering
- Helsesjekker
- Event abonnement
- Metrikker
- REST API-er
Cloudify
Cloudify er et åpen kildekode-skyorkestreringsverktøy for distribusjonsautomatisering og livssyklusadministrasjon av containere og mikrotjenester. Det tilbyr funksjoner som klynger på forespørsel, auto-reparasjon og skalering på infrastrukturnivå. Cloudify kan administrere containerinfrastruktur og orkestrere tjenestene som kjører på containerplattformer.
Det kan enkelt integreres med Docker- og Docker-baserte containeradministratorer, inkludert følgende:
- Docker
- Docker Swarm
- Docker Compose
- Kubernetes
- Apache Mesos
Cloudify kan bidra til å opprette, reparere, skalere og dekonstruere containerklynger. Containerorkestrering er essensielt for å tilby en skalerbar og svært tilgjengelig infrastruktur som containerledere kan kjøre på. Cloudify gir muligheten til å orkestrere heterogene tjenester på tvers av plattformer. Du kan distribuere applikasjoner ved hjelp av CLI og Cloudify Manager.
Rancher
Rancher er en åpen kildekode-plattform som bruker containerorkestrering kjent som storfe. Den lar deg dra nytte av orkestreringstjenester som Kubernetes, Swarm og Mesos. Rancher leverer programvaren som er nødvendig for å administrere containere, slik at organisasjoner ikke trenger å bygge containertjenesteplattformer fra grunnen av ved hjelp av et distinkt sett med åpen kildekode-teknologi.
Rancher 2.x lar deg administrere Kubernetes-klynger som kjører på de kundespesifiserte leverandørene.
Komme i gang med Rancher er en prosess i to trinn.
Forbered en Linux-vert
Forbered en Linux-vert med 64-bit Ubuntu 16.04 eller 18.04 (eller en annen støttet Linux-distribusjon), og minst 4 GB minne. Installer en støttet versjon av Docker på verten.
Start serveren
For å installere og kjøre Rancher, utfør følgende Docker-kommando på verten:
$ sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher
Ranchers brukergrensesnitt gjør det mulig å administrere tusenvis av Kubernetes-klynger og noder.
Containership
Containership er designet for å aktivere utrulling og administrasjon av Kubernetes-infrastruktur med flere skyer. Det er fleksibelt å operere i offentlige, private sky- og lokale miljøer fra et enkelt verktøy. Det gjør det mulig å klargjøre, administrere og overvåke Kubernetes-klyngene dine på tvers av alle store skyleverandører.
Containership er bygget ved hjelp av skybaserte verktøy, som Terraform for klargjøring, Prometheus for overvåking og Calico for nettverks- og policyadministrasjon. Det er bygget på toppen av vanilje Kubernetes. Containership-plattformen tilbyr et intuitivt dashbord, samt en kraftig REST API for kompleks automatisering.
Funksjoner:
- Multicloud Dashboard
- Revisjonslogger
- GPU-forekomststøtte
- Ikke-forstyrrende oppgraderinger
- Planlagte mastere
- Integrerte beregninger
- Logging i sanntid
- Null nedetid distribusjoner
- Støtte for vedvarende lagring
- Støtte for privat register
- Automatisk skalering av arbeidsbelastning
- SSH nøkkelstyring
AZK
AZK er et åpen kildekode-orkestreringsverktøy for utviklingsmiljøer gjennom en manifestfil (Azkfile.js). Det hjelper utviklere med å installere, konfigurere og kjøre vanlige verktøy for å utvikle webapplikasjoner med forskjellige åpen kildekode-teknologier.
AZK bruker containere i stedet for virtuelle maskiner. Containere er i likhet med virtuelle maskiner, men med bedre ytelse og lavere forbruk av fysiske ressurser.
Azkfile.js-filer kan gjenbrukes for å legge til nye komponenter eller lage nye fra grunnen av. De kan deles, noe som sikrer total samsvar mellom utviklingsmiljøer i forskjellige programmereres maskiner og reduserer sjansene for feil under utplasseringen.
GKE
GKE tilbyr en fullstendig administrert løsning for orkestrering av containerapplikasjoner på Google Cloud Platform. GKE-klynger drives av Kubernetes. Du kan samhandle med klynger ved å bruke Kubernetes CLI. Kubernetes-kommandoer kan brukes til å utplassere og administrere applikasjoner, utføre administrasjonsoppgaver, sette retningslinjer og overvåke helsen til distribuerte arbeidsmengder.
Bilde av GCP
Avanserte administrasjonsfunksjoner i Google Cloud er også tilgjengelige med GKE-klynger, som Google Clouds belastningsbalansering, nodepooler, autoskalering av noder, automatiske oppgraderinger, autoreparasjon av noder, logging og overvåking med Google Clouds driftssuite.
Google Cloud tilbyr CI/CD-verktøy for å hjelpe deg med å bygge og betjene applikasjonscontainere. Du kan bruke Cloud Build til å bygge containerbilder (som Docker) fra en rekke kildekodelagre og Container Registry for å lagre containerbildene dine.
GKE er en bedriftsklar løsning med forhåndsbygde distribusjonsmaler.
Er du interessert i å lære mer om GKE? Sjekk ut dette nybegynnerkurset.
AKS
AKS er en fullstendig administrert Kubernetes-tjeneste som tilbys av Azure, og gir serverløs Kubernetes, sikkerhet og styring. AKS administrerer Kubernetes-klyngen din og lar deg enkelt distribuere containeriserte applikasjoner. AKS konfigurerer automatisk alle Kubernetes-mastere og noder. Du trenger bare å administrere og vedlikeholde agentnodene.
Bilde av Azure
AKS er gratis, du betaler kun for agentnodene i klyngen din og ikke for mastere. Du kan opprette en AKS-klynge i Azure-portalen eller programmatisk. Azure støtter også tilleggsfunksjoner som avansert nettverk, Azure Active Directory-integrasjon og overvåking ved hjelp av Azure Monitor.
AKS støtter også Windows Server-containere. Klyngen og ytelsen til de distribuerte applikasjonene kan overvåkes fra Azure Monitor. Logger lagres i et Azure Log Analytics-arbeidsområde.
AKS er sertifisert som Kubernetes-konform.
AWS EKS
AWS EKS er en fullstendig administrert Kubernetes-tjeneste. AWS lar deg kjøre EKS-klyngen ved hjelp av AWS Fragrate, en serverløs databehandling for containere. Fragrate fjerner behovet for å klargjøre og administrere servere, slik at du kan betale per ressurs per applikasjon.
AWS tillater bruk av tilleggsfunksjoner med EKS som Amazon CloudWatch, Amazon Virtual Private Cloud (VPC), AWS Identity, Auto Scaling Groups og Access Management (IAM), overvåking, skalering og belastningsbalanseapplikasjoner. EKS integreres med AWS App mesh og gir en Kubernetes innfødt opplevelse. EKS kjører den nyeste Kubernetes og er sertifisert Kubernetes-konform.
Konklusjon
Til slutt håper jeg at oversikten over har gitt deg en grundig forståelse av de forskjellige containerorkestreringsverktøyene. Forhåpentligvis vil det nå være lettere å velge det som passer best for dine behov.
Neste trinn er å lære om Kubernetes Management Software.