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:
- Monitorització de Recursos: El Cluster Autoscaler monitoritza l'ús de CPU i memòria dels nodes.
- Detecció de Sobrecàrrega: Si detecta que els pods no poden ser programats per falta de recursos, afegeix nodes al clúster.
- 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
-
Descarrega el manifest del Cluster Autoscaler:
wget https://raw.githubusercontent.com/kubernetes/autoscaler/master/cluster-autoscaler/cloudprovider/your-cloud-provider/cluster-autoscaler-autodiscover.yaml
-
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ó.
-
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
- Descarrega i edita el manifest del Cluster Autoscaler per ajustar-lo a les teves necessitats.
- Aplica el manifest al teu clúster.
- Crea una càrrega de treball que requereixi més recursos dels disponibles per verificar que el Cluster Autoscaler afegeix nodes.
- Redueix la càrrega de treball per verificar que el Cluster Autoscaler elimina nodes infrautilitzats.
Solució
-
Descarrega el manifest:
wget https://raw.githubusercontent.com/kubernetes/autoscaler/master/cluster-autoscaler/cloudprovider/your-cloud-provider/cluster-autoscaler-autodiscover.yaml
-
Edita el manifest per ajustar els paràmetres segons les teves necessitats.
-
Aplica el manifest:
kubectl apply -f cluster-autoscaler-autodiscover.yaml
-
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
-
Verifica que el Cluster Autoscaler afegeix nodes:
kubectl get nodes
-
Redueix la càrrega de treball:
kubectl scale deployment resource-hungry-app --replicas=1
-
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
- 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