StatefulSets obsahují sadu modulů s jedinečnými, trvalými identitami a stabilními názvy hostitelů. Šablona pod se používá ve Statefulsetu, který obsahuje specifikaci svých podů, pody se vytvářejí pomocí této specifikace. Můžeme nasadit stavové aplikace a klastrované aplikace pomocí Statefulsets v Kubernetes. StatefulSet lze aktualizovat provedením změn ve specifikaci podu, která zahrnuje obrazy kontejnerů a svazky.
StatefulSets lze použít, když aplikace vyžadují některou z následujících vlastností.
- Stabilní, jedinečné síťové identifikátory.
- Stabilní, trvalé úložiště.
- Spořádané, elegantní nasazení a škálování.
- Objednané, automatické průběžné aktualizace.
V případě StatefulSet s N replikami se moduly při nasazování modulů vytvářejí postupně v pořadí od {0..N-1}. Když jsou moduly mazány, jsou ukončeny v opačném pořadí, od {N-1..0}.
Chcete-li se o Statefulset dozvědět více, klikněte sem.
V tomto článku vytvoříme Statefulset s replikami modulů Nginx. Provedeme operace s moduly, abychom viděli, jak jsou odstraněny a vytvořeny.
Předpoklady
- Cluster Kubernetes s alespoň 1 pracovním uzlem.
Pokud se chcete naučit vytvářet cluster Kubernetes, klikněte sem. Tato příručka vám pomůže vytvořit cluster Kubernetes s 1 hlavním a 2 uzly na instancích AWS Ubuntu 18l04 EC2.
Co uděláme
- Vytvořte Statefulset
Vytvořit Statefulset
Vytvořte soubor a přidejte do něj následující definici Statefulset.
vim statefulset.yml
apiVersion: v1 kind: Service metadata: name: nginx labels: app: nginx spec: ports: - port: 80 name: web clusterIP: None selector: app: nginx --- apiVersion: apps/v1 kind: StatefulSet metadata: name: web spec: selector: matchLabels: app: nginx serviceName: "nginx" replicas: 3 template: metadata: labels: app: nginx spec: terminationGracePeriodSeconds: 10 containers: - name: nginx image: k8s.gcr.io/nginx-slim:0.8 ports: - containerPort: 80 name: web
V tomto příkladu
- Služba Headless s názvem
nginx
, se používá k ovládání sítě. - StatefulSet, pojmenovaný web, má 3 repliky kontejneru nginx, které budou spuštěny v jedinečných podech.
- K nasazení Nginx se používá obrázek nginx s verzí slim:0.8.
Chcete-li vytvořit Statefulset, proveďte následující příkazy.
kubectl získat stavovou sadu
kubectl create -f statefulset.yml
Provedením následujících 2 příkazů vypíšete Statefulset a službu vytvořenou ve výše uvedeném kroku.
kubectl získat stavovou sadu
kubectl získat službu
Získejte moduly pomocí následujícího příkazu a uvidíte, že moduly mají v názvu modulu čísla jako příponu.
kubectl získat pods
Chcete-li získat úplné podrobnosti o Statefulsetu, spusťte následující příkazy.
kubectl získat stavovou sadu
kubectl popisují stavový web
Nyní vymažeme pody a podíváme se, jak jsou názvy zachovány i po vytvoření nových podů.
Odstraňujeme 2 pody, abychom viděli, jaká jména budou přiřazena novým podům po vytvoření.
kubectl získat pods
kubectl delete pods web-0 web-2
kubectl získat pods
Na výše uvedeném snímku obrazovky můžete vidět, že i po smazání podů získají nově vytvořené pody stejný název.
Závěr
V tomto článku jsme vytvořili Statefulset a provedli jsme na něm operace, abychom zkontrolovali jeho podrobnosti. Smazali jsme také pody, abychom viděli, jak je název podu zachován a stejný je přiřazen nově vytvořeným podům po jeho smazání.