Introducció

En Kubernetes, la gestió eficient dels recursos és crucial per assegurar que les aplicacions funcionin de manera òptima i que els recursos del clúster es distribueixin de manera justa entre els diferents usuaris i aplicacions. Les quotes i els límits de recursos són mecanismes que Kubernetes proporciona per controlar l'ús dels recursos dins d'un clúster.

Quotes de Recursos

Què són les Quotes de Recursos?

Les quotes de recursos permeten als administradors limitar la quantitat total de recursos que un namespace pot utilitzar. Això ajuda a evitar que un sol namespace acapari tots els recursos del clúster, garantint una distribució equitativa.

Tipus de Quotes de Recursos

Les quotes de recursos poden aplicar-se a diversos tipus de recursos, incloent:

  • CPU: La quantitat total de CPU que es pot utilitzar.
  • Memòria: La quantitat total de memòria que es pot utilitzar.
  • Pods: El nombre total de pods que es poden crear.
  • Serveis: El nombre total de serveis que es poden crear.
  • Volums Persistents: El nombre total de volums persistents que es poden crear.

Exemple de Configuració de Quotes de Recursos

A continuació es mostra un exemple de configuració de quotes de recursos en un fitxer YAML:

apiVersion: v1
kind: ResourceQuota
metadata:
  name: example-quota
  namespace: example-namespace
spec:
  hard:
    pods: "10"
    requests.cpu: "4"
    requests.memory: "8Gi"
    limits.cpu: "8"
    limits.memory: "16Gi"

Explicació del Codi

  • apiVersion: La versió de l'API de Kubernetes.
  • kind: El tipus de recurs, en aquest cas ResourceQuota.
  • metadata: Informació sobre el recurs, incloent el nom i el namespace.
  • spec: L'especificació de la quota de recursos.
    • hard: Els límits màxims per als recursos especificats.
      • pods: El nombre màxim de pods que es poden crear en el namespace.
      • requests.cpu: La quantitat màxima de CPU que es pot sol·licitar.
      • requests.memory: La quantitat màxima de memòria que es pot sol·licitar.
      • limits.cpu: La quantitat màxima de CPU que es pot utilitzar.
      • limits.memory: La quantitat màxima de memòria que es pot utilitzar.

Límits de Recursos

Què són els Límits de Recursos?

Els límits de recursos permeten definir els límits màxims i mínims de recursos que un pod o contenidor pot utilitzar. Això ajuda a assegurar que cap pod o contenidor utilitzi més recursos dels necessaris, evitant així la sobrecàrrega del clúster.

Tipus de Límits de Recursos

Els límits de recursos es poden aplicar a:

  • CPU: La quantitat màxima i mínima de CPU que un pod o contenidor pot utilitzar.
  • Memòria: La quantitat màxima i mínima de memòria que un pod o contenidor pot utilitzar.

Exemple de Configuració de Límits de Recursos

A continuació es mostra un exemple de configuració de límits de recursos en un fitxer YAML:

apiVersion: v1
kind: Pod
metadata:
  name: example-pod
spec:
  containers:
  - name: example-container
    image: nginx
    resources:
      requests:
        memory: "64Mi"
        cpu: "250m"
      limits:
        memory: "128Mi"
        cpu: "500m"

Explicació del Codi

  • apiVersion: La versió de l'API de Kubernetes.
  • kind: El tipus de recurs, en aquest cas Pod.
  • metadata: Informació sobre el recurs, incloent el nom.
  • spec: L'especificació del pod.
    • containers: La llista de contenidors dins del pod.
      • name: El nom del contenidor.
      • image: La imatge del contenidor.
      • resources: Els recursos sol·licitats i els límits per al contenidor.
        • requests: Els recursos mínims garantits per al contenidor.
          • memory: La quantitat mínima de memòria.
          • cpu: La quantitat mínima de CPU.
        • limits: Els recursos màxims que el contenidor pot utilitzar.
          • memory: La quantitat màxima de memòria.
          • cpu: La quantitat màxima de CPU.

Exercicis Pràctics

Exercici 1: Crear una Quota de Recursos

  1. Crea un fitxer YAML anomenat quota.yaml amb la següent configuració:
    apiVersion: v1
    kind: ResourceQuota
    metadata:
      name: my-quota
      namespace: my-namespace
    spec:
      hard:
        pods: "5"
        requests.cpu: "2"
        requests.memory: "4Gi"
        limits.cpu: "4"
        limits.memory: "8Gi"
    
  2. Aplica la configuració al clúster:
    kubectl apply -f quota.yaml
    

Exercici 2: Crear un Pod amb Límits de Recursos

  1. Crea un fitxer YAML anomenat pod.yaml amb la següent configuració:
    apiVersion: v1
    kind: Pod
    metadata:
      name: my-pod
    spec:
      containers:
      - name: my-container
        image: nginx
        resources:
          requests:
            memory: "32Mi"
            cpu: "100m"
          limits:
            memory: "64Mi"
            cpu: "200m"
    
  2. Aplica la configuració al clúster:
    kubectl apply -f pod.yaml
    

Errors Comuns i Consells

  • Error: "exceeded quota": Aquest error indica que s'ha superat la quota de recursos definida. Revisa les quotes configurades i ajusta els recursos sol·licitats o allibera recursos.
  • Error: "Insufficient CPU" o "Insufficient Memory": Aquest error indica que no hi ha prou recursos disponibles al clúster per satisfer la sol·licitud. Revisa els límits configurats i ajusta els recursos sol·licitats.

Conclusió

Les quotes i els límits de recursos són eines essencials per gestionar l'ús dels recursos en un clúster de Kubernetes. Les quotes ajuden a garantir una distribució equitativa dels recursos entre els namespaces, mentre que els límits asseguren que cap pod o contenidor utilitzi més recursos dels necessaris. Amb una configuració adequada, es pot millorar significativament l'eficiència i l'estabilitat del clúster.

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