Outils pour utilisateurs

Outils du site


informatique:kebernetes:kube_scale

Ceci est une ancienne révision du document !


Scaling sous Kubernetes

Manuel

Pour définir par exemple à 4 le nombre de Pods pour le déploiement nommé mydeploy01 :

kubectl scale deployment mydeploy01 --replicas=4

Autoscaling

Le Metrics Server est requis pour le scaling sur la base de la consommation de ressource.

Création d'un déploiement pour le test

Prenons par exemple le manisfeste de déploiement ci-dessous :

vim hpa-apache-deployment.yml

Contenu :

apiVersion: apps/v1
kind: Deployment
metadata:
  name: php-apache
spec:
  selector:
    matchLabels:
      run: php-apache
  template:
    metadata:
      labels:
        run: php-apache
    spec:
      containers:
      - name: php-apache
        image: registry.k8s.io/hpa-example
        ports:
        - containerPort: 80
        resources:
          limits:
            cpu: 500m
          requests:
            cpu: 200m
---
apiVersion: v1
kind: Service
metadata:
  name: php-apache
  labels:
    run: php-apache
spec:
  ports:
  - port: 80
  selector:
    run: php-apache

Appliquer le manifeste :

kubectl apply -f hpa-apache-deployment.yml

Vérification du déploiement :

kubectl get all

Résultat :

NAME                              READY   STATUS    RESTARTS   AGE
pod/php-apache-598b474864-jqpbz   1/1     Running   0          17m

NAME                 TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)   AGE
service/kubernetes   ClusterIP   10.96.0.1        <none>        443/TCP   11d
service/php-apache   ClusterIP   10.101.210.196   <none>        80/TCP    17m

NAME                         READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/php-apache   1/1     1            1           17m

NAME                                    DESIRED   CURRENT   READY   AGE
replicaset.apps/php-apache-598b474864   1         1         1       17m

Création d'une règle d'autoscale pour le déploiement

Nous allons définir ci-dessous une règle d'autoscale :

kubectl autoscale deployment php-apache --cpu-percent=50 --min=1 --max=10

Explication :!: : Pour le déploiement php-apache, si la CPU montent à 50% on augmente le nombre de pods. Il faut minimum 1 pod et maximum 10 pourront être déployés.

Résultat attendu :

horizontalpodautoscaler.autoscaling/php-apache autoscaled

Pour lister les règles d'autoscale :

kubectl get hpa

Résultat attendu :

NAME         REFERENCE               TARGETS   MINPODS   MAXPODS   REPLICAS   AGE
php-apache   Deployment/php-apache   0%/50%    1         10        1          3m51s

Test de montée en charge et monitoring

Pour le test, nous allons augmenter la charge CPU des pods ainsi:

kubectl run -i --tty load-generator --rm --image=busybox:1.28 --restart=Never -- /bin/sh -c "while sleep 0.01; do wget -q -O- http://php-apache; done"
informatique/kebernetes/kube_scale.1702973471.txt.gz · Dernière modification: 2023/12/19 09:11 par benoit