GNU/Linux >> Linux Esercitazione >  >> Linux

Come creare uno StatefulSet in Kubernetes

Gli StatefulSet contengono un insieme di Pod con identità univoche e persistenti e nomi host stabili. Un modello di pod viene utilizzato in uno Statefulset, che contiene una specifica per i suoi pod, i pod vengono creati utilizzando questa specifica. Possiamo distribuire applicazioni stateful e applicazioni in cluster utilizzando Statefulsets in Kubernetes. StatefulSet può essere aggiornato apportando modifiche alla sua specifica Pod, che include le immagini e i volumi del contenitore.

StatefulSets può essere utilizzato quando le applicazioni richiedono una delle seguenti proprietà.

  • Identificatori di rete univoci e stabili.
  • Archiviazione stabile e persistente.
  • Distribuzione e ridimensionamento ordinati e graziosi.
  • Aggiornamenti in sequenza ordinati e automatizzati.

Per uno StatefulSet con N repliche, quando i pod vengono distribuiti, vengono creati in sequenza, nell'ordine da {0..N-1}. Quando i Pod vengono eliminati, vengono chiusi in ordine inverso, da {N-1..0}.

Per saperne di più su Statefulset, fai clic qui.

In questo articolo creeremo uno Statefulset con repliche di pod Nginx. Effettueremo operazioni sui Pod per vedere come vengono eliminati e creati.

Prerequisiti

  1. Cluster Kubernetes con almeno 1 nodo di lavoro.
    Se vuoi imparare a creare un Cluster Kubernetes, fai clic qui. Questa guida ti aiuterà a creare un cluster Kubernetes con 1 master e 2 nodi su istanze AWS Ubuntu 18l04 EC2.

Cosa faremo

  1. Crea un statefulset

Crea un statefulset

Crea un file e aggiungi la seguente definizione Statefulset al suo interno.

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

In questo esempio, 

  • Un servizio senza testa, denominato nginx , viene utilizzato per controllare la rete.
  • Lo StatefulSet, denominato web, ha 3 repliche del contenitore nginx che verranno lanciate in Pod unici.
  • L'immagine nginx con versione slim:0.8 viene utilizzata per distribuire Nginx.

Per creare uno Statefulset, esegui i seguenti comandi.

kubectl get statefulset

kubectl create -f statefulset.yml

Esegui i 2 comandi seguenti per elencare Statefulset e Service creati nel passaggio precedente.

kubectl get statefulset

kubectl ottieni il servizio

Ottieni i pod usando il seguente comando e osserva che i pod hanno numeri come suffisso nel nome del pod.

kubectl ottieni i pod

Per ottenere i dettagli completi dello Statefulset, esegui i seguenti comandi.

kubectl get statefulset

kubectl descrivi statefulset web

Ora eliminiamo i pod e vediamo come vengono conservati i nomi anche dopo la creazione di nuovi pod.

Stiamo eliminando 2 pod per vedere quali nomi verranno assegnati ai nuovi pod al momento della creazione.

kubectl ottieni i pod

kubectl elimina i pod web-0 web-2

kubectl ottiene i pod

Nella schermata sopra puoi vedere che, anche dopo aver eliminato i pod, i pod appena creati hanno lo stesso nome.

Conclusione

In questo articolo, abbiamo creato uno Statefulset e abbiamo eseguito operazioni su di esso per verificarne i dettagli. Abbiamo anche eliminato i pod per vedere come viene conservato il nome del pod e lo stesso viene assegnato ai pod appena creati dopo averlo eliminato.


Linux
  1. Come distribuire il tuo primo pod su un cluster Kubernetes

  2. Come creare tag Git

  3. Come creare un sottodominio

  4. Come eliminare i pod in Kubernetes [Suggerimenti rapidi per K8s]

  5. Come riavviare i pod in Kubernetes [Suggerimento rapido per K8]

Come creare un file in Linux

Come creare file Tar Gz

Come creare un modulo Terraform

Come creare una distribuzione in Kubernetes

Come creare un cluster Kubernetes con AWS CLI

Come creare e gestire i pod Kubernetes in Linux