Kubernetes

Kubernetes ReplicaSet-vejledning

Kubernetes ReplicaSet-vejledning
Kubernetes ses ofte som denne enorme gruppe af indbyrdes forbundne begreber som noder og bælg, tjenester, implementeringer osv., Som ofte er vanskelige at løse. Lad os i dette indlæg langsomt opklare en nøgleabstraktion, som er ReplicaSet. Vi begynder med at skabe et lille .yaml-fil til en Kubernetes-pod, som vil have en etiket, og derefter oprette en ReplicaSet, der vil sikre, at et bestemt antal pods med den samme label altid kører i klyngen . Dette var hvad projektforfattere faktisk havde til hensigt, da de designede Kubernetes. Så lad os starte.

Forudsætninger

Den første ting, du har brug for, er adgang til en Kubernetes-klynge. Du kan oprette en ved hjælp af Minikube eller bruge Docker til Windows eller Docker til Mac, som begge nu kommer med en enkelt node Kubernetes-distribution, som du kan aktivere i Dockers indstillinger.

Du bliver også nødt til at have lidt viden om Kubernetes på forhånd. Her er et rigtig godt udgangspunkt.

Oprettelse af bælg

Typisk opretter vi pods ved hjælp af en yaml-fil, der specificerer, hvilket containerbillede der skal bruges, hvilke porte der skal eksponeres osv. Her er en simpel fil til oprettelse af en nginx-pod.

apiVersion: v1
venlig: Pod
metadata:
navn: nginx-1
etiket:
app: webserver
spec:
containere:
- navn: nginx
billede: nginx: 1.7.9
porte:
- containerPort: 80

Gem det under navnet nginx-pod.yaml i en mappe, og kør derefter kommandoen indefra den samme mappe:

$ kubectl oprette -f ./ nginx-pod.yaml
## Kontroller, at pod'en er oprettet ved at køre:
$ kubectl få bælg

Du vil bemærke, at en enkelt pod navngivet “Nginx-1” er i gang. Men du kan ikke skalere denne enkelt pod. Løb kubectl oprette igen vil give dig en fejl siden navnet nginx-1 kan ikke genbruges igen.

Kubernetes har givet muligheden for at skabe bælg til højere abstraktioner som Implementeringer og ReplicaSets. Hvilke opretter bælg fra en given skabelon, der angiver, hvilke billeder der skal bruges, hvilke porte der skal eksponeres i hver af de nye bælg osv., Men intet for specifikt ved en enkelt pod. ReplicaSet (og også implementeringer) går derefter i gang med at oprette nye pods, hvilket giver hver nye pod et unikt navn samt en ikke-unik etiket, som hjælper ReplicaSet med at holde styr på de pods, der blev oprettet fra en given skabelon.

ReplicaSet sikrer, at et bestemt antal bælg på et givet øjeblik altid er i gang. Hvis f.eks. En node går ned, er det ReplicaSets opgave at oprette flere bælg på tværs af andre noder for at kompensere for tabet. For at skrive en replikasæt-yaml-fil følger vi det mønster, der svarer til at skrive en pod. Det vil have en API-version (apps / v1), en type (ReplicaSet) og et navn i metadataene. Selve replikasættet kan have etiketter, men vi holder tingene enkle for nu og giver det bare et unikt navn min-replikasæt.

Vi skal derefter flytte fra metadata sektion til kød af stof spec. Her giver vi det antal replikationer, vi ønsker under afsnittet replikaer. Så giver vi dette ReplicaSet a vælger som ville blive brugt til at matche en etiket, siger, app til en værdi, siger, Webserver, blandt de aktuelt kørende bælg. Hvis der er færre af disse bælg, opretter det bælg efter den givne skabelon og tilføjer den samme etiket til disse nye bælg. Hvis der er flere bælg, end det kræves, slettes det nogle få.

At specificere en skabelon, der vil fungere som en base for oprettelse af nye bælg, er det mest involverede trin. Denne skabelon har ikke noget navn, da replikasæt opretter et nyt navn for hver ny oprettet pod. Den vil dog have etiketter, og du kan bemærke, at den samme etiket app = webserver at skabelonen har er valgt via vælger parameter i replikasættet.

apiVersion: apps / v1
venlig: ReplicaSet
metadata:
navn: my-replicaset
 
spec:
replikaer: 3
vælger:
matchLabels:
app: webserver
skabelon:
metadata:
etiketter:
app: webserver
spec:
containere:
- navn: nginx
billede: nginx: 1.7.9
porte:
- containerPort: 80

Gem denne fil som nginx-replikasæt.yaml og opret replikasættet ved hjælp af kommandoen:

$ kubectl opret -f nginx-replikasæt.yaml

Fordi vi tidligere har oprettet en pod med samme etiket app = webserver, replikasættet ville bare oprette to flere bælg. Du kan liste alle bælgene ved hjælp af kommandoen:

$ kubectl få bælg
NAVN KLAR STATUS OMSTARTER ALDER
my-replicaset-nmvt9 1/1 Running 0 9s
my-replicaset-xf9mx 1/1 Running 0 9s
nginx-1 1/1 Kører 0 28s

Hver af bælgene har et unikt navn tilknyttet. Ligesom den allerførste pod, vi oprettede, havde et navn nginx-1. Du kan prøve at slette denne med kommandoen:

$ kubectl slet pod nginx-1
$ kubectl få bælg
 
NAVN KLAR STATUS OMSTARTER ALDER
my-replicaset-nmvt9 1/1 Kører 0 1m
my-replicaset-pkn4q 1/1 Running 0 22s
my-replicaset-xf9mx 1/1 Kører 0 1m

Du vil bemærke, at controller ReplicaSet næsten øjeblikkeligt oprettede en ny pod til erstatning for den, vi slettede. Således at sikre, at antallet af løbende bælg med etiket app = webserver er altid 3, som angivet i vores replika-manifest, ovenfor.

Du får meget kontrol takket være etiketter og vælgere. Du kan yderligere sprede bælgene over flere noder ved hjælp af nodeSelectors, som bruges til at tildele et bestemt antal bælg på en bestemt noder.

Hvad replikasæt ikke tillader, er opdateringer. Hvis en nyere version af din app siger, nginx: 1.8 kommer, du bliver nødt til at slette dette replikasæt og oprette et nyt med det billede nævnt i replikasets yaml-manifest. Dette er hvor begrebet implementeringer kommer til nytte. Det inkluderer ideen om replikasæt og udvides ved at yde yderligere support til opdatering af dine apps. Nu hvor du er fortrolig med replikasæt, kan det være en god idé at undersøge Kubernetes-implementeringer.

Referencer

  1. Oprettelse af bælg
  2. Oprettelse af replikasæt
Sådan registreres og streames din gaming-session på Linux
Tidligere blev spil kun betragtet som en hobby, men med tiden oplevede spilindustrien en enorm vækst med hensyn til teknologi og antallet af spillere....
Bedste spil at spille med håndsporing
Oculus Quest introducerede for nylig den gode idé om håndsporing uden controllere. Med et stadigt stigende antal spil og aktiviteter, der udfører supp...
Sådan vises OSD-overlay i fuldskærms Linux-apps og -spil
Afspilning af fuldskærmsspil eller brug af apps i distraktionsfri fuldskærmstilstand kan afskære dig fra relevante systemoplysninger, der er synlige i...