Outils pour utilisateurs

Outils du site


informatique:kebernetes:kube_scale

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
informatique:kebernetes:kube_scale [2023/12/19 07:11] – [Manuel] benoitinformatique:kebernetes:kube_scale [2023/12/19 08:22] (Version actuelle) – [Création d'une règle d'autoscale pour le déploiement] benoit
Ligne 3: Ligne 3:
 ===== Manuel ===== ===== Manuel =====
  
-Pour changer le nombre de Pods du déploiement nommé **mydeploy01** :+Pour définir par exemple à 4 le nombre de Pods pour le déploiement nommé **mydeploy01** :
   kubectl scale deployment mydeploy01 --replicas=4   kubectl scale deployment mydeploy01 --replicas=4
  
 +===== Autoscaling =====
 +
 +Le [[informatique:kebernetes:install#installation_du_metrics_server_optionnel|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.
 +
 +Ci-dessous l'équivalent en fichier manifeste YAML : 
 +  apiVersion: autoscaling/v2
 +  kind: HorizontalPodAutoscaler
 +  metadata:
 +    name: php-apache
 +  spec:
 +    maxReplicas: 10
 +    metrics:
 +    - resource:
 +        name: cpu
 +        target:
 +          averageUtilization: 50
 +          type: Utilization
 +      type: Resource
 +    minReplicas: 1
 +    scaleTargetRef:
 +      apiVersion: apps/v1
 +      kind: Deployment
 +      name: php-apache
 +
 +
 +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"
 +
 +Pour voir monitorer :  
 +  kubectl get hpa
 +
 +On peut voir la charge CPU monter et que d'autre pods on démarrés :
 +  NAME         REFERENCE               TARGETS    MINPODS   MAXPODS   REPLICAS   AGE
 +  php-apache   Deployment/php-apache   101%/50%   1         10        4          7m21s
  
informatique/kebernetes/kube_scale.1702969917.txt.gz · Dernière modification : de benoit