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: 80Explicació 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.2amb 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: 80Comandes:
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
