Introducció

Els Deployments són un dels recursos més importants i utilitzats en Kubernetes. Permeten gestionar la creació i l'actualització de grups de Pods de manera declarativa. Amb els Deployments, pots definir l'estat desitjat de la teva aplicació i Kubernetes s'encarregarà de fer els canvis necessaris per aconseguir aquest estat.

Objectius d'Aprenentatge

En aquesta secció, aprendràs:

  • Què és un Deployment i per què és important.
  • Com crear i gestionar Deployments.
  • Com actualitzar i revertir Deployments.
  • Estratègies d'actualització de Deployments.

Què és un Deployment?

Un Deployment és un objecte de Kubernetes que proporciona actualitzacions declaratives per als Pods i els ReplicaSets. Pots descriure l'estat desitjat en un Deployment i el controlador de Deployment canviarà l'estat actual al desitjat de manera controlada.

Beneficis dels Deployments

  • Declarativitat: Defineixes l'estat desitjat i Kubernetes s'encarrega de mantenir-lo.
  • Actualitzacions controlades: Permet actualitzacions progressives dels Pods.
  • Reversions: Pots revertir a versions anteriors fàcilment.
  • Escalabilitat: Facilita l'escalat de l'aplicació.

Creació d'un Deployment

Exemple de YAML per a un Deployment

A continuació, es mostra un exemple de fitxer YAML per crear un Deployment:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80

Explicació del YAML

  • apiVersion: La versió de l'API que s'utilitza (en aquest cas, apps/v1).
  • kind: El tipus de recurs (en aquest cas, Deployment).
  • metadata: Informació sobre el Deployment, com ara el nom (nginx-deployment).
  • spec: L'especificació del Deployment.
    • replicas: El nombre de rèpliques del Pod que es volen (en aquest cas, 3).
    • selector: Defineix com seleccionar els Pods gestionats pel Deployment.
    • template: El model per als Pods.
      • metadata: Etiquetes per als Pods.
      • spec: L'especificació dels contenidors dins dels Pods.

Crear el Deployment

Per crear el Deployment, utilitza la comanda kubectl apply:

kubectl apply -f nginx-deployment.yaml

Gestió de Deployments

Comprovar l'Estat del Deployment

Per veure l'estat del Deployment, utilitza la comanda:

kubectl get deployments

Escalar un Deployment

Per escalar el nombre de rèpliques, utilitza la comanda kubectl scale:

kubectl scale deployment/nginx-deployment --replicas=5

Actualitzar un Deployment

Per actualitzar un Deployment, pots modificar el fitxer YAML i aplicar els canvis:

spec:
  template:
    spec:
      containers:
      - name: nginx
        image: nginx:1.16.0

Aplica els canvis amb:

kubectl apply -f nginx-deployment.yaml

Revertir un Deployment

Per revertir a una versió anterior, utilitza la comanda kubectl rollout undo:

kubectl rollout undo deployment/nginx-deployment

Estratègies d'Actualització

Rolling Update

La estratègia per defecte és RollingUpdate, que actualitza els Pods de manera progressiva per minimitzar el temps d'inactivitat.

Recreate

L'estratègia Recreate elimina tots els Pods existents abans de crear-ne de nous. Això pot causar temps d'inactivitat.

Per especificar una estratègia d'actualització, pots afegir-la al fitxer YAML:

spec:
  strategy:
    type: Recreate

Exercicis Pràctics

Exercici 1: Crear un Deployment

  1. Crea un fitxer YAML per a un Deployment que utilitzi la imatge nginx:1.14.2 amb 3 rèpliques.
  2. Aplica el fitxer YAML per crear el Deployment.
  3. Comprova l'estat del Deployment.

Exercici 2: Actualitzar un Deployment

  1. Actualitza el Deployment creat en l'exercici anterior per utilitzar la imatge nginx:1.16.0.
  2. Aplica els canvis i comprova l'estat del Deployment.
  3. Reverteix el Deployment a la versió anterior.

Solucions

Solució Exercici 1

Fitxer YAML:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80

Comandes:

kubectl apply -f nginx-deployment.yaml
kubectl get deployments

Solució Exercici 2

Actualització del fitxer YAML:

spec:
  template:
    spec:
      containers:
      - name: nginx
        image: nginx:1.16.0

Comandes:

kubectl apply -f nginx-deployment.yaml
kubectl get deployments
kubectl rollout undo deployment/nginx-deployment

Conclusió

Els Deployments són una eina poderosa per gestionar l'estat dels teus Pods en Kubernetes. Permeten actualitzacions controlades, escalabilitat i reversions fàcils. Amb els coneixements adquirits en aquesta secció, hauràs après a crear, gestionar i actualitzar Deployments de manera efectiva. En la següent secció, explorarem els Serveis en Kubernetes, que permeten exposar les teves aplicacions als usuaris.

Curs de Kubernetes

Mòdul 1: Introducció a Kubernetes

Mòdul 2: Components Bàsics de Kubernetes

Mòdul 3: Gestió de Configuració i Secrets

Mòdul 4: Xarxes en Kubernetes

Mòdul 5: Emmagatzematge en Kubernetes

Mòdul 6: Conceptes Avançats de Kubernetes

Mòdul 7: Monitorització i Registre

Mòdul 8: Seguretat en Kubernetes

Mòdul 9: Escalabilitat i Rendiment

Mòdul 10: Ecosistema i Eines de Kubernetes

Mòdul 11: Estudis de Cas i Aplicacions del Món Real

Mòdul 12: Preparació per a la Certificació de Kubernetes

© Copyright 2024. Tots els drets reservats