Kubernetes

Kubernetes ReplicaSet-veiledning

Kubernetes ReplicaSet-veiledning
Kubernetes blir ofte sett på som denne enorme mengden sammenhengende konsepter som noder og bøtter, tjenester, distribusjoner osv. Som ofte er vanskelig å løse. I dette innlegget, la oss sakte løse en nøkkelabstraksjon som er ReplicaSet. Vi begynner med å lage en liten .yaml-fil for en Kubernetes-pod, som vil ha en etikett, og deretter opprette en ReplicaSet som vil sikre at et visst antall pods med samme etikett alltid kjører i klyngen . Dette var hva prosjektforfatterne egentlig mente da de designet Kubernetes. Så la oss begynne.

Forutsetninger

Det første du trenger vil være tilgang til en Kubernetes-klynge. Du kan opprette en ved hjelp av Minikube eller bruke Docker for Windows eller Docker for Mac, som begge kommer med en enkelt node Kubernetes-distribusjon som du kan aktivere i Dockers innstillinger.

Du må også ha litt kunnskap om Kubernetes på forhånd. Her er et veldig bra utgangspunkt.

Opprette Pods

Vanligvis lager vi pods ved hjelp av en yaml-fil som spesifiserer hvilket containerbilde som skal brukes, hvilke porter som skal eksponeres, osv. Her er en enkel fil for å lage en nginx-pod.

apiVersion: v1
snill: Pod
metadata:
navn: nginx-1
merkelapp:
app: webserver
spesifikasjon:
containere:
- navn: nginx
bilde: nginx: 1.7.9
porter:
- containerPort: 80

Lagre den under navnet nginx-pod.yaml i en katalog, og kjør deretter kommandoen fra innsiden av samme katalog:

$ kubectl create -f ./ nginx-pod.yaml
## Bekreft at pod er opprettet ved å kjøre:
$ kubectl få pods

Du vil merke at en enkelt pod heter “Nginx-1” er oppe og går. Men du kan ikke skalere denne enkelt podden. Løping kubectl lage igjen vil gi deg en feil siden navnet nginx-1 kan ikke brukes på nytt.

Kubernetes har gitt muligheten til å skape pods til høyere abstraksjoner som Implementeringer og ReplicaSets. Som lager pods fra en gitt podmal som spesifiserer hvilke bilder du skal bruke, hvilke porter du skal eksponere i hver av de nye podene, etc, men ingenting for spesifikt om en enkelt pod. ReplicaSet (og Deployments, så vel) og deretter gå om å lage nye pods, og gi hver nye pod et unikt navn, samt en ikke-unik etikett som hjelper ReplicaSet å holde oversikt over pods som ble opprettet fra en gitt mal.

ReplicaSet sørger for at et bestemt antall pods av en gitt etikett alltid er i gang. Hvis for eksempel en node går ned, er det jobben til ReplicaSet å lage flere pods på tvers av andre noder for å kompensere for tapet. For å skrive en replikasett yaml-fil, vil vi følge mønsteret som ligner på å skrive en pod. Den vil ha en API-versjon (apper / v1), en type (ReplicaSet) og et navn i metadataene. Selve replikasettet kan ha etiketter, men vi vil holde ting enkelt for nå og bare gi det et unikt navn my-replicaset.

Vi trenger da å flytte fra metadata seksjon til kjøtt av materie spesifikasjon. Her gir vi antall replikasjoner vi ønsker under seksjonen kopier. Så gir vi dette ReplicaSet a velgeren som vil bli brukt til å matche en etikett, si, app til en verdi, si, Internett server, blant de løpende belgene. Hvis det er færre av disse podene, vil det opprette pods i henhold til den gitte malen og legge til den samme etiketten til disse nye pods. Hvis det er flere belter enn nødvendig, slettes det noen få.

Å spesifisere en mal som vil fungere som en base for å lage nye pods er det mest involverte trinnet. Denne malen vil ikke ha noe navn, siden replikasettet vil opprette et nytt navn for hver nye pod som opprettes. Det vil imidlertid ha etiketter, og du kan legge merke til at den samme etiketten app = webserver at malen har er valgt via velgeren parameter i replikasettet.

apiVersion: apper / v1
snill: ReplicaSet
metadata:
navn: min replikasett
 
spesifikasjon:
kopier: 3
velger:
matchLabels:
app: webserver
mal:
metadata:
etiketter:
app: webserver
spesifikasjon:
containere:
- navn: nginx
bilde: nginx: 1.7.9
porter:
- containerPort: 80

Lagre denne filen som nginx-replikasett.yaml og opprett replikasettet ved hjelp av kommandoen:

$ kubectl opprett -f nginx-replikasett.yaml

Fordi vi tidligere har laget en pod med samme etikett app = webserver, replikasettet ville bare lage to pods til. Du kan liste opp alle pods ved å bruke kommandoen:

$ kubectl få pods
NAVN KLAR STATUS RESTARTER ALDER
my-replicaset-nmvt9 1/1 Running 0 9s
my-replicaset-xf9mx 1/1 Running 0 9s
nginx-1 1/1 Kjører 0 28s

Hver av belgene har et unikt navn tilknyttet. Som den aller første podden vi opprettet hadde et navn nginx-1. Du kan prøve å slette denne med kommandoen:

$ kubectl slett pod nginx-1
$ kubectl få pods
 
NAVN KLAR STATUS RESTARTER ALDER
my-replicaset-nmvt9 1/1 Kjører 0 1m
my-replicaset-pkn4q 1/1 Running 0 22s
my-replicaset-xf9mx 1/1 Kjører 0 1m

Du vil legge merke til at kontrolleren ReplicaSet nesten øyeblikkelig opprettet en ny pod for å erstatte den vi slettet. Dermed sikre at antall løpende pods, med etikett app = webserver er alltid 3, som spesifisert i vårt replikas manifest, ovenfor.

Du får mye kontroll takket være etiketter og velgere. Du kan videre spre podene over flere noder ved hjelp av nodeSelectors, som brukes til å tildele et bestemt antall pods på en bestemt noder.

Hva replikksett ikke tillater er oppdateringer. Hvis en nyere versjon av appen din, si, nginx: 1.8 kommer, må du slette dette replikasettet og opprette et nytt med det bildet som er nevnt i replikasettets yaml-manifest. Det er her begrepet distribusjoner kommer godt med. Det inkluderer ideen om replikasett og utvides ved å gi ekstra støtte for oppdatering av appene dine. Nå som du er komfortabel med replikater, kan det være lurt å se på Kubernetes Deployments.

Referanser

  1. Opprette Pods
  2. Opprette ReplicaSets
5 beste arkadespill for Linux
I dag er datamaskiner seriøse maskiner som brukes til spill. Hvis du ikke kan få den nye høye poengsummen, vil du vite hva jeg mener. I dette innlegge...
Kamp for Wesnoth 1.1. 3.6 Utvikling utgitt
Kamp for Wesnoth 1.1. 3.6 utgitt i forrige måned, er den sjette utgivelsen i 1.1. 3.x-serien, og den leverer en rekke forbedringer, spesielt til bruke...
Slik installerer du League Of Legends på Ubuntu 14.04
Hvis du er fan av League of Legends, er dette en mulighet for deg å prøvekjør League of Legends. Merk at LOL støttes på PlayOnLinux hvis du er en linu...