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.
- hard: Els límits màxims per als recursos especificats.
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.
- requests: Els recursos mínims garantits per al contenidor.
- containers: La llista de contenidors dins del pod.
Exercicis Pràctics
Exercici 1: Crear una Quota de Recursos
- 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"
- Aplica la configuració al clúster:
kubectl apply -f quota.yaml
Exercici 2: Crear un Pod amb Límits de Recursos
- 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"
- 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
- 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