Aide-mémoire CKAD
exemple YAML HPA k8s
Le HPA ajoute et retire des Pods. Il faut metrics-server et une request CPU sur la cible.
kubectl autoscale deploy web --cpu-percent=70 --min=2 --max=8
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: web
namespace: default
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: web
minReplicas: 2
maxReplicas: 8
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 70
kubectl get hpa web
kubectl describe hpa web
kubectl get --raw /apis/metrics.k8s.io/v1beta1/pods | head
Champs
- scaleTargetRef
- Le Deployment (ou StatefulSet). Kind et name doivent déjà exister.
- minReplicas
- Plancher. Le HPA ne descend pas en dessous, même à vide.
- maxReplicas
- Plafond. Sans ça l’objet est invalide.
- averageUtilization
- Pourcentage de la request du conteneur, pas de la limit. Sans request, le HPA ne calcule pas.
- kubectl autoscale
- Crée un autoscaling/v2 sur un Deployment existant. Puis éditer si la question veut aussi la mémoire.
Pièges
- apiVersion : autoscaling/v2. v2beta2 n’existe plus.
- averageUtilization est un pourcentage de la request. Pas de request CPU sur le Pod → le HPA reste unknown.
- scaleTargetRef doit matcher un Deployment (ou StatefulSet) existant. metrics-server doit tourner.
Doc officielle Horizontal Pod Autoscaling