7_Scalabilite
La scalabilité
C'est la capacité de s'adapter à un changement d'ordre de grandeur, que ce soit de manière verticale ou horizontale.
Scalabilité verticale
Elle consiste à améliorer la capacité des ressources existantes au sein d'une seule machine (workstation, server, VPS, etc.). Par exemple, on peut ajouter de la RAM, un SSD ou un HDD supplémentaires, ou encore améliorer le processeur pour augmenter les ressources de calcul.
Scalabilité horizontale
Elle consiste à ajouter de nouvelles machines à l'infrastructure existante. Par exemple, on peut ajouter un node ou même un serveur supplémentaire.
Mise à l'échelle Horizontale
Nous ajoutons des nodes, des pods, des machines virtuelles (VM) ou des containers à notre infrastructure existante.
Mise à l'échelle verticale
Nous ajoutons ou améliorons le matériel de l'hôte, c'est-à-dire plus de RAM, de SSD, de HDD, etc. On augmente les ressources de calcul.
Pour Kubernetes, il existe deux manières de procéder :
- Mode scale manuel : Nous définissons le nombre de replicasets ou de replication controllers manuellement.
- Autoscale : Comme son nom l'indique, cette méthode gère automatiquement la scalabilité.
Pour commencer, j'ai tout supprimé pour n'avoir qu'un pod simple :

Toutes les commandes se trouvent dans chacune de mes documentations (j'ai fait des copier-coller), mais pour le scale, il me faut le service. Le pod nginx est de manière impérative et le deployment-XXXXXXXXXX-XXXXX est de manière déclarative.
Mode impératif
Ici, nous allons scaler à trois instances.
kubectl scale deployment "nomdudeployment" replicas=3
Alors oui, effectivement, je n'ai pas bien géré, car mon déploiement s'appelle "deployment". Mais on peut voir que cela fonctionne.

Mode déclaratif
Mais on peut aussi le faire via le manifeste :
apiVersion: apps/v1
kind: Deployment
metadata:
name: deployment-nginx # Il est courant d'utiliser des noms en minuscules
spec:
replicas: 3
selector:
matchLabels: # Utilisation du pluriel 'matchLabels'
app: nginx_lab
template: # Correction de l'orthographe de 'template'
metadata:
labels: # Utilisation du pluriel 'labels'
app: nginx_lab
spec:
containers:
- image: nginx:latest # Utilisation d'une image Docker standard pour nginx
name: container-nginx
On déclare bien dans notre replicas que nous en voulons 3. Il ne reste plus qu'à appliquer (apply).
kubectl apply -f nginx.yaml
Nos pods ont bien été créés :



