Zum Hauptinhalt springen
Version: 3.0.0-alpha (Diátaxis)

Vertikal skalieren

Diese Anleitung erklärt, wie Sie die CPU- und Speicherressourcen Ihrer PostgreSQL-Instanz auf Hikube anpassen, entweder über ein vordefiniertes Preset oder mit expliziten Werten.

Voraussetzungen

  • kubectl konfiguriert mit Ihrer Hikube-Kubeconfig
  • Eine PostgreSQL-Instanz auf Hikube bereitgestellt

Verfügbare Presets

Hikube bietet vordefinierte Ressourcen-Presets zur Vereinfachung der Dimensionierung:

PresetCPUSpeicher
nano250m128Mi
micro500m256Mi
small1512Mi
medium11Gi
large22Gi
xlarge44Gi
2xlarge88Gi
Warnung

Wenn das Feld resources (explizite CPU/Speicher) definiert ist, wird der Wert von resourcesPreset vollständig ignoriert. Stellen Sie sicher, dass das Feld resources leer ist, wenn Sie ein Preset verwenden möchten.

Schritte

1. Aktuelle Ressourcen überprüfen

Überprüfen Sie die aktuelle Konfiguration Ihrer Instanz:

kubectl get postgres my-database -o yaml | grep -A 5 -E "resources:|resourcesPreset"

Beispielergebnis mit einem Preset:

  resourcesPreset: micro
resources: {}

Beispielergebnis mit expliziten Ressourcen:

  resourcesPreset: micro
resources:
cpu: 2000m
memory: 2Gi

2. Option A: Ressourcen-Preset ändern

Um von einem Preset zu einem anderen zu wechseln (z.B. von micro zu large), wenden Sie einen Patch an:

kubectl patch postgres my-database --type='merge' -p='
spec:
resourcesPreset: large
resources: {}
'
Hinweis

Es ist wichtig, resources: {} beim Wechsel zu einem Preset zurückzusetzen, damit das Preset berücksichtigt wird. Wenn resources explizite Werte enthält, wird das Preset ignoriert.

Sie können auch das vollständige YAML-Manifest ändern:

postgresql-scaled.yaml
apiVersion: apps.cozystack.io/v1alpha1
kind: Postgres
metadata:
name: my-database
spec:
replicas: 3
resourcesPreset: large
size: 20Gi

users:
admin:
password: SecureAdminPassword

databases:
myapp:
roles:
admin:
- admin

Dann anwenden:

kubectl apply -f postgresql-scaled.yaml

3. Option B: Explizite Ressourcen definieren

Für eine feine Steuerung definieren Sie die CPU- und Speicherwerte direkt:

kubectl patch postgres my-database --type='merge' -p='
spec:
resources:
cpu: 4000m
memory: 4Gi
'

Oder über das vollständige Manifest:

postgresql-custom-resources.yaml
apiVersion: apps.cozystack.io/v1alpha1
kind: Postgres
metadata:
name: my-database
spec:
replicas: 3
resources:
cpu: 4000m
memory: 4Gi
size: 20Gi

users:
admin:
password: SecureAdminPassword

databases:
myapp:
roles:
admin:
- admin
kubectl apply -f postgresql-custom-resources.yaml
Tipp

Für die PostgreSQL-Dimensionierung ist eine gute Faustregel, shared_buffers auf etwa 25% des Gesamtspeichers zuzuweisen. Passen Sie die PostgreSQL-Parameter entsprechend über den Abschnitt postgresql.parameters an.

4. Rolling Update überprüfen

Nach der Ressourcenänderung führt der Operator ein Rolling Update der PostgreSQL-Pods durch. Überwachen Sie den Fortschritt:

kubectl get po -w | grep postgres-my-database

Erwartetes Ergebnis (während des Rolling Updates):

postgres-my-database-2   1/1     Terminating   0   45m
postgres-my-database-2 0/1 Pending 0 0s
postgres-my-database-2 1/1 Running 0 30s

Warten Sie, bis alle Pods den Status Running haben:

kubectl get po | grep postgres-my-database
postgres-my-database-1   1/1     Running   0   2m
postgres-my-database-2 1/1 Running 0 4m
postgres-my-database-3 1/1 Running 0 6m

Überprüfung

Bestätigen Sie, dass die neuen Ressourcen angewendet wurden:

kubectl get postgres my-database -o yaml | grep -A 5 -E "resources:|resourcesPreset"

Überprüfen Sie, dass die Instanz funktionsfähig ist:

kubectl get postgres my-database

Erwartetes Ergebnis:

NAME          READY   AGE   VERSION
my-database True 1h 0.18.0

Weiterführende Informationen