Kubernetes i forhold til Docker

Skab, levér og skaler programmer hurtigere med teknologier til objektbeholdere, der fungerer bedre sammen.

Spørgsmålet om Kubernetes i forhold til Docker

Samtalen omkring Kubernetes i forhold til Docker handler ofte om enten... eller: Skal jeg bruge Kubernetes eller Docker? Dette er ligesom at sammenligne æbler med æblekage, og det er en almindelig fejlopfattelse, at man skal vælge imellem dem.

Forskellen mellem Kubernetes og Docker forstås nemmere, når det formes som et "både... og"-spørgsmål. Faktum er, at du ikke behøver at vælge. Kubernetes og Docker er grundlæggende forskellige teknologier, som arbejder godt sammen, når du skal skabe, levere og skalere programmer, der er placeret i objektbeholdere.

Docker og den stigende popularitet af placering i objektbeholdere

Docker er en teknologi med åben kildekode – og et filformat for objektbeholdere – som kan bruges til at automatisere udrulningen af programmer som bærbare, selvstyrende objektbeholdere, der kan køre i cloudmiljøet eller det lokale miljø. Docker, Inc. deler sit navn med teknologien, men det et af de firmaer, der udvikler Docker-teknologien med åben kildekode, så den kan køre på Linux og Windows i samarbejde med cloududbydere som Microsoft.

Selvom idéen om isolation af miljøer ikke er ny, og der er andre typer software til placering i objektbeholdere, har Docker i de seneste år vokset sig så stor, at det er blevet standardformatet for objektbeholdere. Docker omfatter Docker Engine, som er et kørselsmiljø. Det giver dig mulighed for at skabe og køre objektbeholdere på en hvilken som helst udviklingsmaskine. Du kan derefter gemme eller dele afbildninger af objektbeholderen via en registreringsdatabase for objektbeholdere såsom Docker Hub eller Azure Container Registry.

Det bliver stadig mere komplekst at betjene applikationerne, efterhånden som de vokser og omfatter flere objektbeholdere installeret på flere servere. Selvom Docker leverer en åben standard til pakning og distribution af programmer placeret i objektbeholdere, kan de potentielle kompleksiteter hurtigt løbe op. Hvordan koordinerer og planlægger man mange objektbeholdere? Hvordan kommunikerer de forskellige objektbeholdere i dit program med hinanden? Hvordan skalerer man mange objektbeholderforekomster? Det er her, at Kubernetes kan hjælpe.

Orkestrering af Kubernetes og objektbeholdere

Kubernetes er orkestreringssoftware med åben kildekode, som leverer en API til at styre, hvordan og hvor disse objektbeholdere kører. Det giver dig mulighed for at køre Docker-objektbeholdere og -arbejdsbelastninger og hjælper dig med at tackle nogle af driftskompleksiteterne, når du overgår til at skalere flere objektbeholdere, der er udrullet på tværs af flere servere.

Med Kubernetes kan du orkestrere en klynge af virtuelle maskiner og planlægge, at objektbeholdere kører på disse virtuelle maskiner ud fra deres tilgængelige beregningsressourcer og ressourcekravene for hver objektbeholder. Objektbeholdere er inddelt i pods, den grundlæggende driftsenhed for Kubernetes. Disse objektbeholdere og pods kan skaleres til den ønskede tilstand, og du kan administrere deres livscyklus for at holde dine programmer kørende.

Hvad er forskellen mellem Kubernetes og Docker?

Selvom det er meget almindeligt at sammenligne Kubernetes med Docker, er det mere passende at sammenligne Kubernetes med Docker Swarm. Docker Swarm er Dockers orkestreringsteknologi, hvor der er fokus på oprettelse af klynger til Docker-objektbeholdere – tæt integreret i Docker-økosystemet og ved hjælp af sin egen API.

En grundlæggende forskel mellem Kubernetes og Docker er, at det er meningen, at Kubernetes skal køre på tværs af en klynge, hvorimod Docker kører på en enkelt node. Kubernetes er mere omfattende end Docker Swarm, og det er meningen, at det skal koordinere klynger af noder i stor skala i produktionen på en effektiv måde. Kubernetes-pods er planlægningsenheder, der kan indeholde en eller flere objektbeholdere i Kubernetes-økosystemet. De distribueres mellem noder for at sikre høj tilgængelighed.

Kubernetes og Docker – bedre sammen

Med objektbeholdere skal man kun kode én gang og køre hvor som helst, men Kubernetes indeholder potentialet for at orkestrere og administrere alle objektbeholderressourcer fra et enkelt kontrolniveau. Det hjælper med netværk, justering af belastning, sikkerhed og skalering på tværs af alle Kubernetes-noder, som kører dine objektbeholdere. Kubernetes har også indbygget isolationsmekanismer såsom navneområder, hvilket giver dig mulighed for at gruppere objektbeholderressourcer efter adgangstilladelse, miljøer til midlertidig lagring m.m. Med disse opbygninger er det nemmere for it-afdelingen at sikre adgang til selvbetjeningsressourcer til udviklere og for udviklere at samarbejde om selv de mest komplekse arkitekturer for mikrotjenester uden at skulle udarbejde modeller af hele programmet i deres udviklingsmiljø. Når du kombinerer DevOps-praksis med objektbeholdere, muliggør Kubernetes yderligere en oprindelig plan for arkitekturen for mikrotjenester, som sikrer hurtig levering og skalerbar orkestrering af programmer, der oprindeligt findes i cloudmiljøet.

Kort sagt, så kan du bruge Kubernetes med Docker til følgende:

  • Gør din infrastruktur mere robust og dit program mere tilgængeligt. Programmet forbliver online, selvom nogle af noderne bliver offline.
  • Gør dit program mere skalerbart. Hvis dit program begynder at blive meget mere belastet, og du har brug for at skalere ud for at kunne levere en bedre brugeroplevelse, er det nemt at generere flere objektbeholdere eller føje flere noder til din Kubernetes-klynge.

Kubernetes og Docker fungerer sammen. Docker leverer en åben standard til pakning og distribution af applikationer i objektbeholdere. Docker gør det muligt at opbygge og køre objektbeholdere samt lagre og dele afbildninger i objektbeholdere. Man kan nemt køre Docker, der er skabt ud fra en Kubernetes-klynge, men selve Kubernetes er ikke en komplet løsning. Hvis du vil optimere Kubernetes i produktionen, skal du implementere yderligere værktøjer og tjenester for at administrere sikkerhed, styring, identitet og adgang sammen med CI/CD-arbejdsprocesser (continuous integration/continuous deployment) og anden DevOps-praksis.

Kubernetes- og Docker-løsningsarkitekturer i produktion

Simplify the deployment and management of Microservices based applicationsSimplify the deployment and management of Microservices based applications12345567778
  1. Oversigt
  2. Flow

Oversigt

Brug AKS til at strømline vandret skalering, selvreparation, justering af belastning og hemmelig administration.

Flow

  1. 1 Brug et IDE, f.eks. Visual Studio, til at sende ændringer til GitHub.
  2. 2 GitHub udløser et nyt build på Azure DevOps
  3. 3 Azure DevOps pakker mikrotjenester som objektbeholdere og sender dem til AzureContainer Registry
  4. 4 Objektbeholdere udrulles til AKS-klynger
  5. 5 Azure Active Directory bruges til at give sikker adgang til ressourcer
  6. 6 Brugerne får adgang til tjenester via apps og websteder
  7. 7 Administratorer får adgang til appsene via en separat administratorportal
  8. 8 Mikrotjenester bruger databaser til at gemme og hente oplysninger
Secure DevOps for AKSDevOps and Kubernetes are better together. Implementing secure DevOps together with Kubernetes on Azure, you can achieve the balance between speed and security and deliver code faster at scale. Put guardrails around the development processes using CI/CD with dynamic policy controls and accelerate feedback loop with constant monitoring. Use Azure Pipelines to deliver fast while ensuring enforcement of critical policies with Azure Policy. Azure provides you real-time observability for your build and release pipelines, and the ability to apply compliance audit and reconfigurations easily.123456789
  1. Oversigt
  2. Flow

Oversigt

DevOps og Kubernetes fungerer bedre sammen. Når du implementerer sikker DevOps sammen med Kubernetes på Azure, kan du opnå balance mellem hastighed og sikkerhed og levere kode hurtigere i stor skala. Anbring et rækværk omkring udviklingsprocessen ved hjælp af CI/CD med dynamiske politikkontrolelementer, og sæt skub i feedbackløkken med konstant overvågning. Brug Azure Pipelines til hurtigt at levere, mens du sikre overholdelsen af vigtige politikker med Azure Policy. Azure giver dig mulighed for at observere dit build og dine udgivelsespipelines i realtid samt mulighed for at foretage en gennemgang af overholdelsen af angivne standarder samt omkonfigurationer.

Flow

  1. 1 Gentag, test og fejlfind hurtigt forskellige dele af en applikation sammen i den samme Kubernetes-klynge
  2. 2 Kode er flettet ind i et GitHub-lager, hvorefter automatiserede builds og tests køres af Azure Pipelines
  3. 3 Objektbeholderafbildningen registreres i Azure Container Registry
  4. 4 Kubernetes-klynger klargøres med værktøjer som Terraform. Helm-diagrammer, der er installeret af Terraform, definerer den ønskede tilstand for appressourcer og -konfigurationer
  5. 5 Operatorer håndhæver politikker for at styre udrulninger til Azure Kubernetes Service-klyngen
  6. 6 Udgivelsespipelinen udfører automatisk en forhåndsdefineret installationsstrategi sammen med hver kodeændring
  7. 7 Håndhævelse af politik og overvågning føjes til CI/CD-pipeline vha. Azure Policy
  8. 8 Apptelemetri, overvågning af objektbeholdernes tilstand og loganalyse i realtid hentes ved hjælp af Azure Monitor
  9. 9 Indsigt bruges til at håndtere problemer og bidrage til de næste sprintplaner

Byg videre på styrken ved Kubernetes med Azure

Det er nemt at udrulle og administrere dine programmer, som er placeret i objektbeholdere, med Azure Kubernetes Service (AKS). Med AKS får du serveruafhængig Kubernetes, en integreret CI/CD-oplevelse samt sikkerhed og styring i virksomhedsklassen. Foren dine udviklings- og driftsteams på en enkelt platform, så de hurtigt kan skabe, levere og skalere programmer med ro i sindet.

Kom i gang med Kubernetes og Docker