Juny 10, 2022

3 millors pràctiques que hauríeu de conèixer quan feu servir Kubernetes StatefulSet

La creació d'un entorn en clúster de qualsevol tipus implica molta feina per permetre un desplegament i escalat coherents. 

La bona notícia és que pots gestionar contenidors a escala utilitzant StatefulSets a Kubernetes. 

StatefulSets estan pensats per executar aplicacions amb estat dins de Kubernetes amb emmagatzematge dedicat i persistent.

En aquesta guia, tractarem tres pràctiques recomanades per aprendre quan utilitzeu Kubernetes StatefulSets.  

Però primer…

Què és Kubernetes StatefulSet?

Kubernetes StatefulSet és l'objecte de la interfície de programació d'aplicacions (API) de càrrega de treball que s'utilitza per gestionar aplicacions amb estat. 

Podeu utilitzar StatefulSets per desplegar i escalar un conjunt de pods, que ofereixen garanties per a l'ordre i la singularitat del pod.  

Similar a un desplegament, un Kubernetes StatefulSet pot gestionar Pods basat en una especificació de contenidor idèntica. 

Tanmateix, a diferència d'un desplegament, un StatefulSet pot mantenir identitats enganxoses per a cada pod. Tot i que els pods es creen a partir de les mateixes especificacions, no són intercanviables, la qual cosa significa que cada pod té un identificador persistent que manté durant qualsevol reprogramació. 

Si voleu proporcionar persistència per a una càrrega de treball mitjançant volums d'emmagatzematge, aprofiteu un StatefulSet com a part de la solució. 

Tot i que els pods individuals dins d'un StatefulSet poden ser propensos a errors, l'identificador de pods persistent pot facilitar la concordança dels volums existents amb els pods nous que substitueixen els que han fallat.  

Un cas d'ús típic de StatefulSet és quan necessiteu desplegar servidors primaris o secundaris, com ara un clúster de bases de dades, on heu de conèixer el nom d'amfitrió de cada servidor per iniciar el clúster. 

Un altre cas d'ús comú de StatefulSet és quan augmenteu i baixeu en un ordre específic, com ara quan voleu començar amb el node primari seguit del node secundari. 

El millor és utilitzar StatefulSet quan necessiteu:

  • Identitats de xarxa estables i diferents
  • Desplegament i escalat ordenats i únics
  • Emmagatzematge persistent i constant a tota la programació i reprogramació de l'aplicació

Consells provats i provats quan feu servir StatefulSet

A continuació es mostren algunes pràctiques recomanades per utilitzar Kubernetes StatefulSet.

1. Utilitzeu l'ordre kubectl apply per crear un recurs StatefulSet

L'ordre utilitza fitxers de manifest per crear, actualitzar i eliminar recursos dels vostres clústers. És un mètode declaratiu de configuració d'objectes que reté les escriptures que es van fer als objectes vius sense tornar a fusionar els canvis als fitxers de configuració de l'objecte. 

Recorda't de creeu una StorageClass quan feu servir clústers amb grups de nodes de Windows Server ja que utilitza StorageClass predeterminat ext4 com el tipus de sistema de fitxers (que només funciona per a contenidors Linux).

També, utilitzar NTFS com a tipus d'emmagatzematge de fitxers si utilitzeu un disc persistent de Compute Engine. 

Creeu un manifest StatefulSet mitjançant la StorageClass que heu definit. 

Per exemple, el vostre manifest pot crear-ne quatre Reclam de volum persistent i Volum persistent parells que representen quatre discos persistents de Computer Engine. Cada pod dins del StatefulSet consumeix un sol disc persistent. 

A més, incloeu un selector de nodes a l'especificació del vostre Pod per assegurar-vos que els vostres Pods estiguin programats correctament als nodes de Windows Server. 

Finalment, creeu un recurs StatefulSet executant aquesta ordre: 

kubectl aplica -f STATEFULSET_FILE

Recordeu substituir STATEFULSET_FILE amb el nom del fitxer de manifest. 

2. Coneix els diferents mètodes per actualitzar un StatefulSet

Podeu actualitzar StatefulSets de diverses maneres, amb el mètode declaratiu s'aplica kubectl per ser els més comuns. 

Per exemple, si utilitzeu Google Kubernetes Engine i voleu actualitzar StatefulSet al vostre editor preferit o directament des del vostre shell, feu servir kubectl editar. També podeu optar per l'editor YAML al menú Càrregues de treball de GKW a la consola del núvol. 

A més, podeu implementar actualitzacions de l'especificació Pods (per a un recurs StatefulSet), com ara la seva configuració, imatge o sol·licituds i ús de recursos.  

Apliqueu un fitxer de manifest actualitzat o nou quan actualitzeu StatefulSet utilitzant s'aplica kubectl. És útil quan feu diversos canvis a StatefulSet, com ara quan escaleu o especifiqueu noves versions d'aplicacions.  

Nota: Ús s'aplica kubectl per actualitzar un recurs només funciona quan el recurs s'ha creat utilitzant kubectl create – -save-config or s'aplica kubectl.

També podeu utilitzar StatefulSet's estratègia d'actualització camp, que us permet configurar i desactivar les actualitzacions en continu automatitzades per a sol·licituds de recursos, etiquetes, límits, contenidors i anotacions per als pods dins d'un StatefulSet.  

Conegueu els diferents mètodes per actualitzar el vostre StatefulSet i determineu quin us funciona millor. 

3. Determineu quan utilitzar StatefulSets

Hi ha casos en què és millor utilitzar Kubernetes StatefulSets que Deployments.

Algunes d'aquestes situacions poden incloure les següents.

  • Reduir l'escala o suprimir un StatefulSet. Les vostres dades poden romandre segures quan es redueixi o suprimiu un StatefulSet, ja que fer-ho no se suprimiran els volums associats a l'aplicació Stateful. 

Normalment és més valuós que la depuració automàtica de tots els recursos StatefulSet relacionats. 

Per exemple, si el MySQL Pod es reinicia o s'elimina, podeu accedir a les dades al mateix volum. 

  • Desplegament i escalat d'una base de dades MySQL. Suposem que heu desplegat una base de dades MySQL dins del clúster K8s i l'heu escalat a tres rèpliques. Una aplicació frontal també vol accedir al vostre clúster MySQL desplegat per llegir i escriure dades.  

La sol·licitud de lectura es reenvia a tres pods, però la sol·licitud d'escriptura només es reenvia al pod principal o al primer. Aleshores, les dades es sincronitzen amb els altres Pods. 

Tot això és possible quan utilitzeu StatefulSets. 

Limitacions de Kubernetes StatefulSet

Tot i que és crucial conèixer les millors pràctiques per utilitzar un Kubernetes StatefulSet, és igual d'important entendre'n les limitacions, que inclouen les següents. 

  • L'emmagatzematge d'un pod determinat ha de ser subministrat prèviament per un administrador o subministrat per PersistentVolume Provisioner (segons el classe d'emmagatzematge).  
  • StatefulSets no ofereix garanties per a la terminació del pod quan se suprimeixen StatefulSets. Per aconseguir la terminació de pods ordenada i amb gràcia quan suprimiu un StatefulSet, podeu reduir el StatefulSet a zero abans de suprimir-lo. 
  • StatefulSets requereix un servei sense cap responsable de la identitat de xarxa dels pods. Haureu de crear aquest servei. 
  • Podeu entrar en un estat trencat que necessiti una intervenció manual per solucionar-ho quan utilitzeu les actualitzacions en continu mitjançant la política de gestió de pods predeterminada (Ordenat llest). 

Aprofiteu Kubernetes StatefulSet de la manera correcta

Administrar sistemes distribuïts i aplicacions amb estat a Kubernetes pot ser una tasca àmplia i complexa, però no és una ciència de coets. 

Comenceu amb els conceptes bàsics i seguiu les pràctiques recomanades quan feu servir StatefulSets per fer que la gestió i l'execució d'aplicacions amb estat a Kubernetes siguin més efectives i eficients. 

Sobre l'autor 

Kyrie Mattos


{"email": "Adreça de correu electrònic no vàlida", "url": "Adreça del lloc web no vàlida", "obligatòria": "Falta el camp obligatori"}