Ricerca nel sito web

Come creare un set di repliche in Kubernetes


Su questa pagina

  1. Prerequisiti
  2. Cosa faremo
  3. Crea un set di repliche
  4. Conclusione

Un set di repliche garantisce che le repliche specificate dei pod siano sempre in esecuzione. Può essere considerato un sostituto del controller di replica. La differenza principale tra i due è che i ReplicaSet ci consentono di utilizzare qualcosa chiamato \Label Selector. Replicaset è uno dei controller Kubernetes. Viene utilizzato per assicurarci di avere un numero specificato di pod repliche sempre attive e funzionanti.

Il modello del set di repliche ha l'aspetto seguente.

apiVersion: apps/v1 
kind: ReplicaSet   
Metadata: 
  name: some-name
  labels:
    app: some-App
    tier: some-Tier
Spec: 
  replicas: 3 # Here we tell k8s how many replicas we want
  Selector: # A label selector field. 
    matchLabels:
      tier: some-Tier
    matchExpressions:
      - {key: tier, operator: In, values: [some-Tier]} #set-based operators
  template:
    metadata:
      labels:
        app: some-App
        tier: someTier
    Spec: 
      Containers:

In questo articolo vedremo come creare un set di repliche e come identificare i pod con le etichette.

Prerequisiti

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 18.04 EC2.

Cosa faremo

  • Crea un set di repliche

Crea un set di repliche

Crea un nuovo file e aggiungi la seguente definizione del set di repliche.

vim my-replica-set.yml
apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: nginx-proxy
  labels:
    app: nginx-proxy
    tier: frontend
spec:
  # modify replicas according to your case
  replicas: 3
  selector:
    matchLabels:
      tier: frontend
  template:
    metadata:
      labels:
        tier: frontend
    spec:
      containers:
      - name: nginx
        image: nginx

La definizione dell'oggetto precedente creerà tre repliche del pod.

Innanzitutto, controlla il set di repliche esistente utilizzando il seguente comando.

kubectl get replicaset

Per creare una replica detta eseguire il seguente comando.

kubectl create -f my-replica-set.yml
kubectl get replicaset
kubectl get pods

Nello screenshot sopra, puoi vedere i dettagli degli stagni creati dopo aver creato un set di repliche.

Ora crea un singolo pod con le stesse etichette che abbiamo precedentemente specificato nella definizione del set di repliche.

vim my-test-pod.yml
apiVersion: v1
kind: Pod
metadata:
  name: pod1
  labels:
    tier: frontend
spec:
  containers:
  - name: nginx
    image: nginx

Ora, se lo creiamo, non verrà creato.

Esegui i comandi seguenti per creare i pod precedenti e creare un nuovo pod.

kubectl get pods
kubectl create -f my-test-pod.yml
kubectl get pods

Nello screenshot sopra, puoi vedere che anche dopo aver creato un nuovo pod è in stato di chiusura. Il motivo è che abbiamo già una replica impostata con repliche come 3 e stiamo creando un nuovo pod separatamente con le stesse etichette. Poiché le etichette e i selettori corrispondono al set di repliche, elimina il pod per mantenere il numero di repliche specificato specificato nella definizione del set di repliche.

Puoi ottenere i dettagli del set di repliche utilizzando i seguenti comandi.

kubectl get replicaset
kubectl describe replicaset nginx-proxy

Nello screenshot sopra, puoi vedere che un set di repliche elimina il pod per mantenere il numero di repliche.

Ora creiamo un pod senza etichetta utilizzando la seguente definizione di pod.

vim my-test-pod-no-label.yml
apiVersion: v1
kind: Pod
metadata:
  name: pod1
spec:
  containers:
  - name: nginx
    image: nginx

Per creare un nuovo pod senza alcuna etichetta, esegui il seguente comando.

kubectl get pods
kubectl create -f my-test-pod-no-label.yml
kubectl get pods

Nello screenshot sopra, puoi vedere che è stato creato un nuovo pod e questa volta il set di repliche non ha eliminato il nuovo pod.

Il motivo è che la nuova porta non ha alcuna etichetta, quindi un set di repliche non corrisponde a esso e non lo considera parte del set di repliche.

Ora proviamo a creare una porta che appartenga al set di repliche.

Esegui i seguenti comandi per eliminare un pod.

kubectl get pods
kubectl delete pod nginx-proxy-6gc46
kubectl get pods

Nello screenshot sopra, puoi vedere che anche dopo aver eliminato un pod che appartiene al set di repliche, è stato creato un nuovo pod. È stato creato un nuovo pod per mantenere il numero di repliche che abbiamo specificato nella definizione del set di repliche.

Ora, quando non hai più bisogno del tuo set di repliche, puoi eliminarlo utilizzando i seguenti comandi.

kubectl get replicaset
kubectl delete replicaset nginx-proxy
kubectl get replicaset
kubectl get pods

Poiché il pod che abbiamo creato separatamente non fa parte del set di repliche, dobbiamo eliminarlo separatamente.

Usa i comandi. Per eliminare il pod che non appartiene al set di repliche.

kubectl get pods
kubectl delete pod pod1
kubectl get pods

Conclusione

In questo articolo abbiamo visto come creare un semplice set di repliche. Abbiamo anche visto come un pod diventa parte di un set di repliche se l'etichetta corrisponde al selettore disponibile nel set di repliche.