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