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
:
Gestió de Deployments
Comprovar l'Estat del Deployment
Per veure l'estat del Deployment, utilitza la comanda:
Escalar un Deployment
Per escalar el nombre de rèpliques, utilitza la comanda kubectl scale
:
Actualitzar un Deployment
Per actualitzar un Deployment, pots modificar el fitxer YAML i aplicar els canvis:
Aplica els canvis amb:
Revertir un Deployment
Per revertir a una versió anterior, utilitza la comanda kubectl rollout undo
:
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:
Exercicis Pràctics
Exercici 1: Crear un Deployment
- Crea un fitxer YAML per a un Deployment que utilitzi la imatge
nginx:1.14.2
amb 3 rèpliques. - Aplica el fitxer YAML per crear el Deployment.
- Comprova l'estat del Deployment.
Exercici 2: Actualitzar un Deployment
- Actualitza el Deployment creat en l'exercici anterior per utilitzar la imatge
nginx:1.16.0
. - Aplica els canvis i comprova l'estat del Deployment.
- 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:
Solució Exercici 2
Actualització del fitxer YAML:
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
- Què és Kubernetes?
- Arquitectura de Kubernetes
- Conceptes i Terminologia Clau
- Configuració d'un Clúster de Kubernetes
- CLI de Kubernetes (kubectl)
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
- Monitorització amb Prometheus
- Registre amb Elasticsearch, Fluentd i Kibana (EFK)
- Controls de Salut i Probes
- Servidor de Mètriques
Mòdul 8: Seguretat en Kubernetes
- Control d'Accés Basat en Rols (RBAC)
- Polítiques de Seguretat de Pods
- Seguretat de Xarxa
- Seguretat d'Imatges
Mòdul 9: Escalabilitat i Rendiment
- Autoscalat Horitzontal de Pods
- Autoscalat Vertical de Pods
- Autoscalat de Clúster
- Optimització del Rendiment
Mòdul 10: Ecosistema i Eines de Kubernetes
Mòdul 11: Estudis de Cas i Aplicacions del Món Real
- Desplegament d'una Aplicació Web
- CI/CD amb Kubernetes
- Execució d'Aplicacions Stateful
- Gestió Multi-Clúster