L'autoscalat vertical de pods (Vertical Pod Autoscaling, VPA) és una funcionalitat de Kubernetes que permet ajustar automàticament els recursos (CPU i memòria) assignats als pods en funció de les seves necessitats reals. Això és especialment útil per optimitzar l'ús de recursos i assegurar que les aplicacions tinguin els recursos necessaris per funcionar de manera eficient.

Conceptes Clau

  • Vertical Pod Autoscaler (VPA): Component de Kubernetes que ajusta automàticament les sol·licituds i límits de recursos dels pods.
  • Recomanacions de Recursos: Suggeriments generats pel VPA basats en l'ús històric de recursos.
  • Actualitzacions de Recursos: Canvis aplicats als pods per ajustar les sol·licituds i límits de recursos segons les recomanacions del VPA.

Com Funciona el VPA

  1. Monitorització: El VPA monitoritza l'ús de recursos dels pods.
  2. Recomanació: Basant-se en les dades recollides, el VPA genera recomanacions per ajustar les sol·licituds i límits de recursos.
  3. Actualització: El VPA aplica les recomanacions als pods, ajustant els recursos segons sigui necessari.

Configuració del VPA

Instal·lació del VPA

Per utilitzar el VPA, primer cal instal·lar-lo al clúster de Kubernetes. Pots fer-ho utilitzant el següent manifest YAML:

apiVersion: v1
kind: Namespace
metadata:
  name: vpa
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: vpa-recommender
  namespace: vpa
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: vpa-updater
  namespace: vpa
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: vpa-admission-controller
  namespace: vpa
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: vpa-recommender
rules:
  - apiGroups: [""]
    resources: ["pods", "nodes", "services", "endpoints", "events", "namespaces"]
    verbs: ["get", "list", "watch"]
  - apiGroups: ["extensions", "apps"]
    resources: ["replicasets"]
    verbs: ["get", "list", "watch"]
  - apiGroups: ["autoscaling.k8s.io"]
    resources: ["verticalpodautoscalers"]
    verbs: ["get", "list", "watch"]
---
# (El manifest continua amb la configuració de rols i permisos per a cada component del VPA)

Creació d'un VPA

Un cop instal·lat el VPA, pots crear un objecte VPA per a una aplicació específica. Aquí tens un exemple de manifest YAML per crear un VPA:

apiVersion: autoscaling.k8s.io/v1
kind: VerticalPodAutoscaler
metadata:
  name: my-app-vpa
spec:
  targetRef:
    apiVersion: "apps/v1"
    kind:       Deployment
    name:       my-app
  updatePolicy:
    updateMode: "Auto"

Explicació del Manifest

  • apiVersion: La versió de l'API de Kubernetes que s'utilitza.
  • kind: El tipus de recurs, en aquest cas, VerticalPodAutoscaler.
  • metadata: Informació sobre el VPA, incloent el nom.
  • spec: Especificacions del VPA.
    • targetRef: Referència a l'objecte que el VPA ha de monitoritzar (en aquest cas, un Deployment).
    • updatePolicy: Política d'actualització. Auto permet que el VPA actualitzi automàticament els recursos dels pods.

Exercici Pràctic

Objectiu

Configurar un VPA per a una aplicació de mostra i observar com ajusta els recursos dels pods.

Passos

  1. Desplegar una Aplicació de Mostra:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: my-app
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: my-app
      template:
        metadata:
          labels:
            app: my-app
        spec:
          containers:
          - name: my-app
            image: nginx
            resources:
              requests:
                cpu: "100m"
                memory: "128Mi"
              limits:
                cpu: "200m"
                memory: "256Mi"
    
  2. Crear un VPA per a l'Aplicació:

    apiVersion: autoscaling.k8s.io/v1
    kind: VerticalPodAutoscaler
    metadata:
      name: my-app-vpa
    spec:
      targetRef:
        apiVersion: "apps/v1"
        kind:       Deployment
        name:       my-app
      updatePolicy:
        updateMode: "Auto"
    
  3. Observar les Recomanacions del VPA:

    Després d'un temps, pots veure les recomanacions del VPA utilitzant el següent comandament:

    kubectl describe vpa my-app-vpa
    

Solució

Després de seguir els passos anteriors, hauràs configurat un VPA per a la teva aplicació de mostra. El VPA ajustarà automàticament els recursos dels pods basant-se en l'ús real de recursos.

Errors Comuns i Consells

  • No Instal·lar Correctament el VPA: Assegura't de seguir tots els passos d'instal·lació del VPA correctament.
  • Política d'Actualització Incorrecta: Si no vols que el VPA actualitzi automàticament els recursos, pots utilitzar updateMode: "Off" i aplicar les recomanacions manualment.
  • Monitorització Insuficient: El VPA necessita temps per recollir dades suficients abans de generar recomanacions precises. Sigues pacient i permet que el VPA monitoritzi l'ús de recursos durant un període de temps adequat.

Conclusió

L'autoscalat vertical de pods és una eina poderosa per optimitzar l'ús de recursos en un clúster de Kubernetes. Configurant correctament el VPA, pots assegurar-te que les teves aplicacions tenen els recursos necessaris per funcionar de manera eficient, sense malgastar recursos. En el proper tema, explorarem l'autoscalat de clúster per ajustar automàticament el nombre de nodes en funció de la càrrega de treball.

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