L'autoscalat de clúster és una funcionalitat avançada de Kubernetes que permet ajustar automàticament el nombre de nodes en un clúster en funció de la demanda de recursos. Aquesta capacitat és essencial per optimitzar l'ús de recursos i garantir que les aplicacions tinguin els recursos necessaris per funcionar de manera eficient.

Conceptes Clau

Abans de començar amb l'autoscalat de clúster, és important comprendre alguns conceptes clau:

  • Node: Una màquina (física o virtual) que forma part del clúster de Kubernetes.
  • Autoscaler: Un component que ajusta automàticament el nombre de nodes en funció de la demanda de recursos.
  • Cluster Autoscaler: L'eina específica de Kubernetes que gestiona l'autoscalat de nodes.

Com Funciona el Cluster Autoscaler

El Cluster Autoscaler funciona monitoritzant contínuament l'ús de recursos en el clúster i ajustant el nombre de nodes segons sigui necessari. A continuació es detallen els passos bàsics del seu funcionament:

  1. Monitorització de Recursos: El Cluster Autoscaler monitoritza l'ús de CPU i memòria dels nodes.
  2. Detecció de Sobrecàrrega: Si detecta que els pods no poden ser programats per falta de recursos, afegeix nodes al clúster.
  3. Detecció de Subutilització: Si detecta que els nodes estan infrautilitzats, elimina nodes del clúster per estalviar recursos.

Configuració del Cluster Autoscaler

Requisits Previs

Abans de configurar el Cluster Autoscaler, assegura't de complir els següents requisits:

  • Un clúster de Kubernetes en funcionament.
  • Accés a la línia de comandes kubectl.
  • Permisos per crear i gestionar recursos en el clúster.

Instal·lació del Cluster Autoscaler

  1. Descarrega el manifest del Cluster Autoscaler:

    wget https://raw.githubusercontent.com/kubernetes/autoscaler/master/cluster-autoscaler/cloudprovider/your-cloud-provider/cluster-autoscaler-autodiscover.yaml
    
  2. Edita el manifest per ajustar-lo a les teves necessitats. Per exemple, pots especificar el nom del clúster i altres paràmetres de configuració.

  3. Aplica el manifest al teu clúster:

    kubectl apply -f cluster-autoscaler-autodiscover.yaml
    

Configuració de Paràmetres

Alguns dels paràmetres més importants que pots configurar en el Cluster Autoscaler són:

  • --nodes: Defineix el nombre mínim i màxim de nodes. Per exemple, --nodes=1:10 indica que el clúster pot tenir entre 1 i 10 nodes.
  • --scale-down-unneeded-time: Defineix el temps que un node ha d'estar infrautilitzat abans de ser eliminat.
  • --scale-down-utilization-threshold: Defineix el llindar d'utilització per considerar un node infrautilitzat.

Exemple de Configuració

A continuació es mostra un exemple de configuració del Cluster Autoscaler:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: cluster-autoscaler
  namespace: kube-system
spec:
  replicas: 1
  selector:
    matchLabels:
      app: cluster-autoscaler
  template:
    metadata:
      labels:
        app: cluster-autoscaler
    spec:
      containers:
      - image: k8s.gcr.io/cluster-autoscaler:v1.20.0
        name: cluster-autoscaler
        resources:
          limits:
            cpu: 100m
            memory: 300Mi
          requests:
            cpu: 100m
            memory: 300Mi
        command:
        - ./cluster-autoscaler
        - --v=4
        - --stderrthreshold=info
        - --cloud-provider=your-cloud-provider
        - --nodes=1:10:your-node-group
        - --scale-down-unneeded-time=10m
        - --scale-down-utilization-threshold=0.5
        env:
        - name: AWS_REGION
          value: us-west-2
        volumeMounts:
        - mountPath: /etc/ssl/certs
          name: ssl-certs
          readOnly: true
      volumes:
      - name: ssl-certs
        hostPath:
          path: /etc/ssl/certs

Exercici Pràctic

Objectiu

Configurar el Cluster Autoscaler en un clúster de Kubernetes i verificar el seu funcionament.

Passos

  1. Descarrega i edita el manifest del Cluster Autoscaler per ajustar-lo a les teves necessitats.
  2. Aplica el manifest al teu clúster.
  3. Crea una càrrega de treball que requereixi més recursos dels disponibles per verificar que el Cluster Autoscaler afegeix nodes.
  4. Redueix la càrrega de treball per verificar que el Cluster Autoscaler elimina nodes infrautilitzats.

Solució

  1. Descarrega el manifest:

    wget https://raw.githubusercontent.com/kubernetes/autoscaler/master/cluster-autoscaler/cloudprovider/your-cloud-provider/cluster-autoscaler-autodiscover.yaml
    
  2. Edita el manifest per ajustar els paràmetres segons les teves necessitats.

  3. Aplica el manifest:

    kubectl apply -f cluster-autoscaler-autodiscover.yaml
    
  4. Crea una càrrega de treball que requereixi més recursos:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: resource-hungry-app
    spec:
      replicas: 10
      selector:
        matchLabels:
          app: resource-hungry-app
      template:
        metadata:
          labels:
            app: resource-hungry-app
        spec:
          containers:
          - name: busybox
            image: busybox
            command: ["sh", "-c", "while true; do echo 'Hello, Kubernetes!'; sleep 10; done"]
            resources:
              requests:
                cpu: "500m"
                memory: "512Mi"
    
    kubectl apply -f resource-hungry-app.yaml
    
  5. Verifica que el Cluster Autoscaler afegeix nodes:

    kubectl get nodes
    
  6. Redueix la càrrega de treball:

    kubectl scale deployment resource-hungry-app --replicas=1
    
  7. Verifica que el Cluster Autoscaler elimina nodes infrautilitzats:

    kubectl get nodes
    

Errors Comuns i Consells

  • Configuració Incorrecta del Manifest: Assegura't que els paràmetres del manifest estan correctament configurats per al teu entorn.
  • Permisos Insuficients: Verifica que tens els permisos necessaris per crear i gestionar recursos en el clúster.
  • Monitorització de Recursos: Utilitza eines de monitorització per assegurar-te que el Cluster Autoscaler està funcionant correctament.

Conclusió

L'autoscalat de clúster és una funcionalitat poderosa que permet optimitzar l'ús de recursos en un clúster de Kubernetes. Configurar correctament el Cluster Autoscaler pot ajudar a garantir que les aplicacions tinguin els recursos necessaris per funcionar de manera eficient, alhora que es minimitzen els costos operatius. Amb la pràctica i la monitorització adequada, pots aprofitar al màxim aquesta funcionalitat per gestionar de manera eficient els teus clústers de Kubernetes.

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