Vai al contenuto principale
Versione: 3.0.0-alpha (Diátaxis)

Come scalare verticalmente

Questa guida vi spiega come regolare le risorse CPU e memoria della vostra istanza MySQL su Hikube, sia tramite un preset predeterminato, sia definendo valori espliciti.

Prerequisiti

  • kubectl configurato con il vostro kubeconfig Hikube
  • Un'istanza MySQL distribuita sul vostro tenant
  • Conoscenza dei requisiti di risorse del vostro carico di lavoro

Passaggi

1. Verificare le risorse attuali

Consultate la configurazione attuale della vostra istanza MySQL:

kubectl get mariadb example -o yaml | grep -A 5 -E "resources:|resourcesPreset"

Risultato atteso (con preset):

  resourcesPreset: nano

Risultato atteso (con risorse esplicite):

  resources:
cpu: 1000m
memory: 1Gi

2. Scegliere il metodo di scaling

Hikube propone due approcci per definire le risorse:

Opzione A: Usare un resourcesPreset

I preset offrono profili di risorse predefiniti e adatti a diversi casi d'uso:

PresetCPUMemoriaCaso d'uso
nano250m128MiTest, sviluppo minimale
micro500m256MiSviluppo, piccole applicazioni
small1512MiApplicazioni leggere
medium11GiApplicazioni standard
large22GiCarichi di lavoro moderati
xlarge44GiProduzione standard
2xlarge88GiProduzione intensiva

Opzione B: Definire risorse esplicite

Per un controllo preciso, definite direttamente i valori resources.cpu e resources.memory.

avviso

Se il campo resources e definito (CPU e memoria espliciti), il valore di resourcesPreset viene ignorato. I due approcci sono mutuamente esclusivi.

3. Opzione A: Modificare il resourcesPreset

Per passare da un preset a un altro, usate kubectl patch:

kubectl patch mariadb example --type='merge' -p='
spec:
resourcesPreset: medium
'

O modificate direttamente il manifesto:

mysql-scaled.yaml
apiVersion: apps.cozystack.io/v1alpha1
kind: MariaDB
metadata:
name: example
spec:
replicas: 3
size: 10Gi
resourcesPreset: medium
kubectl apply -f mysql-scaled.yaml

4. Opzione B: Definire risorse esplicite

Per un controllo fine delle risorse, specificate i valori CPU e memoria direttamente:

kubectl patch mariadb example --type='merge' -p='
spec:
resources:
cpu: 2000m
memory: 4Gi
'

O tramite il manifesto completo:

mysql-custom-resources.yaml
apiVersion: apps.cozystack.io/v1alpha1
kind: MariaDB
metadata:
name: example
spec:
replicas: 3
size: 10Gi
resources:
cpu: 2000m
memory: 4Gi
kubectl apply -f mysql-custom-resources.yaml
suggerimento

Per tornare a un preset dopo aver usato risorse esplicite, rimuovete il campo resources e definite resourcesPreset nel vostro manifesto.

Verifica

Seguite il rolling update dei pod MySQL:

kubectl get pods -w | grep mysql-example

Risultato atteso:

mysql-example-0   1/1     Running   0   5m
mysql-example-1 1/1 Running 0 3m
mysql-example-2 1/1 Running 0 1m

Verificate che le nuove risorse siano applicate:

kubectl get mariadb example -o yaml | grep -A 5 -E "resources:|resourcesPreset"
nota

Lo scaling verticale comporta un rolling update dei pod. Le repliche vengono riavviate una alla volta per minimizzare l'impatto sulla disponibilità. Durante questo processo, il cluster resta accessibile in lettura tramite le repliche già aggiornate.

Per approfondire