Kubernetes

Kubernetes ReplicaSet Tutorial

Kubernetes ReplicaSet Tutorial
Kubernetes è spesso visto come questo enorme corpo di concetti correlati come nodi e pod, servizi, distribuzioni, ecc., che sono spesso difficili da districare. In questo post, sveliamo lentamente un'astrazione chiave che è ReplicaSet. Inizieremo creando un piccolo .yaml per un pod Kubernetes, che avrà un'etichetta, quindi creerà un ReplicaSet che assicurerebbe che un certo numero di pod con la stessa etichetta sia sempre in esecuzione nel cluster . Questo è ciò che gli autori del progetto intendevano effettivamente quando stavano progettando Kubernetes. Quindi iniziamo.

Prerequisiti

La prima cosa di cui avrai bisogno sarà l'accesso a un cluster Kubernetes. Puoi crearne uno utilizzando Minikube o utilizzare Docker per Windows o Docker per Mac, entrambi ora dotati di una distribuzione Kubernetes a nodo singolo che puoi abilitare nelle impostazioni di Docker.

Dovresti anche avere una conoscenza a priori di Kubernetes. Ecco un ottimo punto di partenza.

Creazione di pod

In genere, creiamo pod utilizzando un file yaml che specifica quale immagine del contenitore utilizzare, quali porte esporre, ecc. Ecco un semplice file per creare un pod nginx.

apiVersione: v1
tipo: Pod
metadati:
nome:  nginx-1
etichetta:
app: server web
specifica:
contenitori:
- nome: nginx
immagine: nginx:1.7.9
porti:
- containerPorta: 80

Salvalo sotto il nome nginx-pod.igname in una directory, quindi dall'interno della stessa directory eseguire il comando:

$ kubectl create -f ./nginx-pod.igname
## Verifica che il pod sia stato creato eseguendo:
$ kubectl ottieni pod

Noterai che un singolo pod chiamato "inginx-1" è attivo e funzionante. Ma non puoi scalare questo singolo pod. In esecuzione kubectl create di nuovo ti darà un errore dal nome nginx-1 non può essere riutilizzato di nuovo.

Kubernetes ha dato la possibilità di creare pod ad astrazioni più elevate come implementazioni e ReplicaSets. Che creano pod da un determinato modello di pod specificando quali immagini utilizzare, quali porte esporre in ciascuno dei nuovi pod, ecc., ma niente di troppo specifico su un singolo pod. ReplicaSet (e anche le distribuzioni) quindi procedono alla creazione di nuovi pod, assegnando a ciascun nuovo pod un nome univoco e un'etichetta non univoca che aiuta il ReplicaSet a tenere traccia dei pod creati da un determinato modello.

ReplicaSet garantisce che in un dato istante un certo numero di pod di una determinata etichetta sia sempre attivo e funzionante. Se, ad esempio, un nodo si interrompe, è compito di ReplicaSet creare più pod su altri nodi per compensare la perdita. Per scrivere un file yaml replicaset, seguiremmo lo schema simile alla scrittura di un pod. Avrà una versione API (app/v1), un tipo (ReplicaSet) e un nome nei metadati. Il replicaset stesso può avere etichette su di esso, ma per ora manterremo le cose semplici e gli daremo solo un nome univoco mio-replicaset.

Abbiamo quindi bisogno di passare da metadati sezione alla carne della materia specifica. Qui forniamo il numero di repliche che vogliamo nella sezione repliche. Quindi diamo a questo ReplicaSet a selettore che sarebbe usato per abbinare un'etichetta, diciamo, app a un valore, diciamo, server web, tra i pod attualmente in esecuzione. Se ci sono meno di questi pod, creerà pod in base al modello fornito e aggiungerà la stessa etichetta a questi nuovi pod. Se ci sono più pod del necessario, ne elimina alcuni.

Specificare un modello che fungerebbe da base per la creazione di nuovi pod è il passaggio più complicato. Questo modello non avrà un nome, poiché replicaset creerà un nuovo nome per ogni nuovo pod creato. L'avrà etichette, tuttavia, e puoi notare che la stessa etichetta app=server web che il modello ha è selezionato tramite il selettore parametro nella specifica del set di repliche.

apiVersion: apps/v1
tipo: ReplicaSet
metadati:
nome: mio-replicaset
 
specifica:
repliche: 3
selettore:
corrispondenzaEtichette:
app: server web
modello:
metadati:
etichette:
app: server web
specifica:
contenitori:
- nome: nginx
immagine: nginx:1.7.9
porti:
- containerPorta: 80

Salva questo file come nginx-replicaset.yaml e creare il replicaset utilizzando il comando:

$ kubectl create -f nginx-replicaset.igname

Perché in precedenza abbiamo creato un pod con la stessa etichetta app=server web, il set di repliche creerebbe solo altri due pod. Puoi elencare tutti i pod usando il comando:

$ kubectl ottieni pod
NOME                 PRONTO     STATUS    RIPARTI   ETÀ
my-replicaset-nmvt9   1/1       Corsa   0          9s
my-replicaset-xf9mx   1/1       Corsa   0          9s
nginx-1              1/1       Corsa   0          28s

A ciascuno dei pod sarà associato un nome univoco. Come se il primo pod che abbiamo creato avesse un nome nginx-1. Puoi provare a eliminare questo usando il comando:

$ kubectl elimina pod nginx-1
$ kubectl ottieni pod
 
NOME                 PRONTO     STATUS    RIAVVIA   ETÀ
my-replicaset-nmvt9   1/1       Corsa   0          1 m
my-replicaset-pkn4q   1/1       Corsa   0          22s
my-replicaset-xf9mx   1/1       Corsa   0          1 m

Noterai che quasi istantaneamente il controller ReplicaSet ha creato un nuovo pod per sostituire quello che abbiamo eliminato. Assicurando così che il numero di pod in esecuzione, con etichetta app=server web è sempre 3, come specificato nel nostro manifest di replicaset, sopra.

Ottieni molto controllo grazie a etichette e selettori. Puoi distribuire ulteriormente i pod su più nodi utilizzando nodeSelectors, che vengono utilizzati per allocare un certo numero di pod su determinati nodi.

Ciò che i repliche non consentono sono gli aggiornamenti. Se una versione più recente della tua app, ad esempio, nginx:1.8 arriva, dovrai eliminare questo replicaset e crearne uno nuovo con quell'immagine menzionata nel manifest yaml del replicaset. È qui che torna utile il concetto di distribuzione. Include l'idea dei set di repliche e si estende fornendo supporto aggiuntivo per l'aggiornamento delle tue app. Ora che sei a tuo agio con i set di repliche, potrebbe essere una buona idea esaminare le distribuzioni di Kubernetes.

Riferimenti

  1. Creazione di pod
  2. Creazione di set di repliche
Controlla e gestisci il movimento del mouse tra più monitor in Windows 10
Gestore mouse con doppio display ti consente di controllare e configurare il movimento del mouse tra più monitor, rallentando i suoi movimenti vicino ...
WinMouse ti consente di personalizzare e migliorare il movimento del puntatore del mouse su PC Windows
Se vuoi migliorare le funzioni predefinite del puntatore del mouse, usa freeware WinMouse. Aggiunge più funzionalità per aiutarti a ottenere il massim...
Il tasto sinistro del mouse non funziona su Windows 10
Se stai utilizzando un mouse dedicato con il tuo laptop o computer desktop ma il il tasto sinistro del mouse non funziona su Windows 10/8/7 per qualch...