Kubernetes

Kubernetes ReplicaSet-handledning

Kubernetes ReplicaSet-handledning
Kubernetes ses ofta som denna enorma grupp av sammanhängande koncept som noder och skida, tjänster, distributioner, etc. som ofta är svåra att lösa ut. I det här inlägget, låt oss långsamt riva upp en nyckelabstraktion som är ReplicaSet. Vi börjar med att skapa en liten .yaml-fil för en Kubernetes-pod, som skulle ha en etikett, och skapa sedan en ReplicaSet som säkerställer att ett visst antal pods med samma etikett alltid körs i klustret . Detta var vad projektförfattarna egentligen tänkte när de designade Kubernetes. Så låt oss börja.

Förutsättningar

Det första du behöver är tillgång till ett Kubernetes-kluster. Du kan skapa en med Minikube eller använda Docker för Windows eller Docker för Mac som båda kommer med en enda nod Kubernetes-distribution som du kan aktivera i Dockers inställningar.

Du måste också ha lite kunskap om Kubernetes på förhand. Här är en riktigt bra utgångspunkt.

Skapa Pods

Vanligtvis skapar vi pods med en yaml-fil som anger vilken containeravbild som ska användas, vilka portar som ska exponeras, etc. Här är en enkel fil för att skapa en nginx-pod.

apiVersion: v1
snäll: Pod
metadata:
namn: nginx-1
märka:
app: webbserver
spec:
behållare:
- namn: nginx
bild: nginx: 1.7.9
hamnar:
- containerPort: 80

Spara den under namnet nginx-pod.yaml i en katalog och kör sedan kommandot inifrån samma katalog:

$ kubectl skapa -f ./ nginx-pod.yaml
## Kontrollera att podden skapas genom att köra:
$ kubectl få skida

Du kommer att märka att en enda pod heter “Nginx-1” är igång. Men du kan inte skala denna enda pod. Löpning kubectl skapa igen kommer att ge dig ett fel sedan namnet nginx-1 kan inte återanvändas igen.

Kubernetes har gett möjligheten att skapa pods till högre abstraktioner som Implementeringar och ReplicaSets. Vilka skapar pods från en given podmall som anger vilka bilder som ska användas, vilka portar som ska exponeras i var och en av de nya podsna, etc, men inget för specifikt om en enda pod. ReplicaSet (och Deployments, också) gå sedan till att skapa nya pods, ge varje ny pod ett unikt namn samt en icke-unik etikett som hjälper ReplicaSet att hålla reda på de pods som skapades från en given mall.

ReplicaSet säkerställer att vid ett visst ögonblick alltid ett visst antal pods av en viss etikett är igång. Om till exempel en nod går ner är det ReplicaSet att skapa fler pods över andra noder för att kompensera för förlusten. För att skriva en repliksats yaml-fil skulle vi följa mönstret som att skriva en pod. Den kommer att ha en API-version (appar / v1), en typ (ReplicaSet) och ett namn i metadata. Själva replikset kan ha etiketter, men vi kommer att hålla sakerna enkla för tillfället och bara ge det ett unikt namn my-replicaset.

Vi behöver sedan flytta från metadata avsnitt till kött av materia spec. Här ger vi antalet replikationer vi vill ha under avsnittet repliker. Sedan ger vi denna ReplicaSet a väljare som skulle användas för att matcha en etikett, säg, app till ett värde, säg, webbserver, bland de skott som för närvarande körs. Om det finns färre av dessa pods skapar det pods enligt den givna mallen och lägger till samma etikett till dessa nya pods. Om det finns fler pods än vad som krävs, raderas några.

Att specificera en mall som skulle fungera som bas för att skapa nya pods är det mest involverade steget. Den här mallen har inget namn, eftersom replikaset skapar ett nytt namn för varje ny pod som skapas. Det kommer dock att ha etiketter, och du kan märka att samma etikett app = webserver som mallen har väljs via väljare parameter i replikspecifikationen.

apiVersion: appar / v1
typ: ReplicaSet
metadata:
namn: my-replicaset
 
spec:
repliker: 3
väljare:
matchLabels:
app: webbserver
mall:
metadata:
etiketter:
app: webbserver
spec:
behållare:
- namn: nginx
bild: nginx: 1.7.9
hamnar:
- containerPort: 80

Spara den här filen som nginx-replicaset.yaml och skapa replikset med kommandot:

$ kubectl skapa -f nginx-replik.yaml

Eftersom vi tidigare skapat en pod med samma etikett app = webserver, replicaset skulle bara skapa ytterligare två pods. Du kan lista alla kapslar med kommandot:

$ kubectl få skida
NAMN KLAR STATUS ÅTERSTART Åldern
my-replicaset-nmvt9 1/1 Running 0 9s
my-replicaset-xf9mx 1/1 Running 0 9s
nginx-1 1/1 Running 0 28s

Varje skida har ett unikt namn som är kopplat till dem. Liksom den allra första podden vi skapade hade ett namn nginx-1. Du kan försöka ta bort den här med kommandot:

$ kubectl ta bort pod nginx-1
$ kubectl få skida
 
NAMN KLAR STATUS ÅTERSTART Åldern
my-replicaset-nmvt9 1/1 Running 0 1m
my-replicaset-pkn4q 1/1 Running 0 22s
my-replicaset-xf9mx 1/1 Running 0 1m

Du kommer att märka att Controller ReplicaSet nästan omedelbart skapade en ny pod för att ersätta den vi tog bort. Således säkerställer att antalet löpande pods, med etikett app = webserver är alltid 3, som anges i vårt repliksetmanifest ovan.

Du får mycket kontroll tack vare etiketter och väljare. Du kan sprida skivorna vidare över flera noder med hjälp av nodeSelectors, som används för att fördela ett visst antal skivor på vissa noder.

Vad replikserver inte tillåter är uppdateringar. Om en nyare version av din app, säg, nginx: 1.8 kommer, du måste ta bort den här repliken och skapa en ny med den bilden som nämns i replikasets yaml-manifest. Det är här begreppet distributioner är till nytta. Det inkluderar idén om replikserier och utökas genom att ge ytterligare stöd för att uppdatera dina appar. Nu när du är bekväm med replikserier kan det vara en bra idé att titta på Kubernetes Deployments.

Referenser

  1. Skapa Pods
  2. Skapa ReplicaSets
Mus Markören hoppar eller rör sig slumpmässigt när du skriver in Windows 10
Markören hoppar eller rör sig slumpmässigt när du skriver in Windows 10
Om du upptäcker att muspekaren hoppar eller rör sig på egen hand, automatiskt, slumpmässigt när du skriver in Windows-bärbar dator eller dator, kan nå...
Mus Så här vänder du mus- och styrplattans rullningsriktning i Windows 10
Så här vänder du mus- och styrplattans rullningsriktning i Windows 10
Mus och Pekplattas gör inte bara datoranvändning lättare men effektivare och mindre tidskrävande. Vi kan inte föreställa oss ett liv utan dessa enhete...
Mus Så här ändrar du muspekare och markörstorlek, färg och schema på Windows 10
Så här ändrar du muspekare och markörstorlek, färg och schema på Windows 10
Muspekaren och markören i Windows 10 är mycket viktiga aspekter av operativsystemet. Detta kan också sägas för andra operativsystem, så i sanning är d...