Kubernetes - Distribuzioni

Le distribuzioni vengono aggiornate e la versione successiva del controller di replica. Gestiscono la distribuzione dei set di repliche, che è anche una versione aggiornata del controller di replica. Hanno la capacità di aggiornare il set di repliche e sono anche in grado di tornare alla versione precedente.

Forniscono molte funzionalità aggiornate di matchLabels e selectors. Abbiamo un nuovo controller nel master Kubernetes chiamato controller di distribuzione che lo rende possibile. Ha la capacità di modificare la distribuzione a metà.

Modifica della distribuzione

Updating- L'utente può aggiornare la distribuzione in corso prima che sia completata. In questo, verrà stabilita la distribuzione esistente e verrà creata una nuova distribuzione.

Deleting- L'utente può mettere in pausa / annullare la distribuzione eliminandola prima che sia completata. Ricreare la stessa distribuzione la riprenderà.

Rollback- Possiamo ripristinare la distribuzione o la distribuzione in corso. L'utente può creare o aggiornare la distribuzione utilizzandoDeploymentSpec.PodTemplateSpec = oldRC.PodTemplateSpec.

Strategie di distribuzione

Le strategie di distribuzione aiutano a definire come il nuovo RC dovrebbe sostituire il RC esistente.

Recreate- Questa funzione ucciderà tutti gli RC esistenti e quindi farà apparire quelli nuovi. Ciò si traduce in una rapida implementazione, tuttavia comporterà tempi di inattività quando i vecchi pod sono inattivi e i nuovi pod non sono usciti.

Rolling Update- Questa funzione abbassa gradualmente il vecchio RC e fa apparire quello nuovo. Ciò si traduce in una distribuzione lenta, tuttavia non vi è alcuna distribuzione. In ogni momento, in questo processo sono disponibili pochi vecchi pod e pochi nuovi pod.

Il file di configurazione della distribuzione è simile a questo.

apiVersion: extensions/v1beta1 --------------------->1
kind: Deployment --------------------------> 2
metadata:
   name: Tomcat-ReplicaSet
spec:
   replicas: 3
   template:
      metadata:
         lables:
            app: Tomcat-ReplicaSet
            tier: Backend
   spec:
      containers:
         - name: Tomcatimage:
            tomcat: 8.0
            ports:
               - containerPort: 7474

Nel codice precedente, l'unica cosa diversa dal set di repliche è che abbiamo definito il tipo come distribuzione.

Crea distribuzione

$ kubectl create –f Deployment.yaml -–record
deployment "Deployment" created Successfully.

Recupera la distribuzione

$ kubectl get deployments
NAME           DESIRED     CURRENT     UP-TO-DATE     AVILABLE    AGE
Deployment        3           3           3              3        20s

Controlla lo stato della distribuzione

$ kubectl rollout status deployment/Deployment

Aggiornamento della distribuzione

$ kubectl set image deployment/Deployment tomcat=tomcat:6.0

Rollback alla distribuzione precedente

$ kubectl rollout undo deployment/Deployment –to-revision=2