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.

Un engin pose la dernière caisse dans une jungle néon et s’éteint. Un engin pose la dernière caisse dans une jungle néon et s’éteint.
Créer
kubectl autoscale deploy web --cpu-percent=70 --min=2 --max=8
YAML
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
Inspecter
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

S’entraîner sur un cluster réel →