Erstellen eines PostgreSQL-Servers mithilfe von Kubernetes-Tools
Hinweis
Als Previewfunktion unterliegt die in diesem Artikel vorgestellte Technologie den zusätzlichen Nutzungsbedingungen für Microsoft Azure-Vorschauen.
Die neuesten Updates sind in den Versionshinweisenverfügbar.
Voraussetzungen
Einen Datencontroller sollten Sie bereits erstellt haben.
Zum Erstellen eines PostgreSQL-Servers mithilfe von Kubernetes-Tools müssen die Kubernetes-Tools installiert sein. In den Beispielen in diesem Artikel wird kubectl
verwendet, allerdings können auch ähnliche Ansätze mit anderen Kubernetes-Tools verfolgt werden, z. B. dem Kubernetes-Dashboard, oc
oder helm
, wenn Sie mit diesen Tools und Kubernetes-YAML/JSON-Dateien vertraut sind.
Installieren des kubectl-Tools
Überblick
Zum Erstellen eines PostgreSQL-Servers müssen Sie ein Kubernetes-Geheimnis erstellen, um Ihre Anmeldeinformationen und Ihr Kennwort als PostgreSQL-Administrator*in sicher zu speichern. Außerdem benötigen Sie eine benutzerdefinierte PostgreSQL-Serverressource, die auf den Definitionen für benutzerdefinierte Ressourcen von postgresqls
basiert.
Erstellen einer YAML-Datei
Sie können die YAML-Vorlage als Ausgangspunkt verwenden, um Ihre eigene benutzerdefinierte YAML-Datei für den PostgreSQL-Server zu erstellen. Laden Sie diese Datei auf Ihren Computer herunter, und öffnen Sie sie in einem Text-Editor. Es ist hilfreich, einen Text-Editor wie VS Code zu verwenden, der Syntaxhervorhebung und Linten für YAML-Dateien unterstützen.
Beispiel yaml-Datei:
apiVersion: v1
data:
username: <your base64 encoded username>
password: <your base64 encoded password>
kind: Secret
metadata:
name: pg1-login-secret
type: Opaque
---
apiVersion: arcdata.microsoft.com/v1beta3
kind: postgresql
metadata:
name: pg1
spec:
scheduling:
default:
resources:
limits:
cpu: "4"
memory: 4Gi
requests:
cpu: "1"
memory: 2Gi
services:
primary:
type: LoadBalancer # Modify service type based on your Kubernetes environment
storage:
data:
volumes:
- className: default # Use default configured storage class or modify storage class based on your Kubernetes environment
size: 5Gi
logs:
volumes:
- className: default # Use default configured storage class or modify storage class based on your Kubernetes environment
size: 5Gi
Anpassen des Anmeldenamens und des Kennworts.
Ein Kubernetes-Geheimnis wird als Base64-codierte Zeichenfolge gespeichert – eine für den Benutzernamen und eine für das Kennwort. Sie müssen einen Administrator-Login und ein Passwort mit base64 kodieren und in den Platzhaltern data.password
und data.username
unterbringen. Nehmen Sie nicht die Symbole <
und >
mit auf, die in der Vorlage vorhanden sind.
Sie können ein Onlinetool verwenden, um den gewünschten Benutzernamen und das zugehörige Kennwort mit einer Base64-Codierung zu versehen, oder Sie können abhängig von Ihrer Plattform integrierte CLI-Tools verwenden.
PowerShell
[Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes('<your string to encode here>'))
#Example
#[Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes('example'))
Linux/macOS
echo -n '<your string to encode here>' | base64
#Example
# echo -n 'example' | base64
Anpassen des Namens
Die Vorlage hat einen Wert von pg1
für das Attribut name. Sie können diesen Wert ändern, aber es müssen Zeichen sein, die den DNS-Namensstandards entsprechen. Wenn Sie den Namen ändern, müssen Sie auch den Namen des Geheimnisses entsprechend ändern. Wenn Sie zum Beispiel den Namen des PostgreSQL-Servers zu pg2
ändern, müssen Sie den Namen des Geheimnisses von pg1-login-secret
zu pg2-login-secret
ändern.
Anpassen der Ressourcenanforderungen
Sie können die Ressourcenanforderungen (Limits und Anforderungen für RAM und Kerne) je nach Bedarf ändern.
Hinweis
Weitere Informationen zur Kubernetes-Ressourcengovernance.
Anforderungen für Ressourcenlimits und -anforderungen:
- Der Grenzwert für die Anzahl von Kernen ist aus Abrechnungsgründen obligatorisch.
- Der Rest der Ressourcenanforderungen und -limits ist optional.
- Das Limit und die Anforderung für Kerne müssen ein positiver ganzzahliger Wert sein, falls angegeben.
- Für die Anforderung von Kernen ist mindestens ein Kern erforderlich, sofern angegeben.
- Das Format des Arbeitsspeicherwerts folgt der Kubernetes-Notation.
Anpassen des Diensttyps
Der Diensttyp kann bei Bedarf in „NodePort“ geändert werden. Es wird eine zufällige Portnummer zugewiesen.
Anpassen von Speicher
Sie können die Speicherklassen für Speicher so anpassen, dass sie Ihrer Umgebung entsprechen. Wenn Sie nicht sicher sind, welche Speicherklassen verfügbar sind, führen Sie den Befehl kubectl get storageclass
aus, um sie anzuzeigen. Die Vorlage hat einen Standardwert von default
. Dieser Wert bedeutet, dass es eine Speicherklasse mit dem Namen gibt default
und nicht, dass es eine Speicherklasse gibt, die der Standard ist. Sie können die Größe Ihres Speichers auch optional ändern. Weitere Informationen zur Speicherkonfiguration.
Erstellen des PostgreSQL-Servers
Nachdem Sie die YAML-Datei für den PostgreSQL-Server angepasst haben, können Sie den PostgreSQL-Server mithilfe des folgenden Befehls erstellen:
kubectl create -n <your target namespace> -f <path to your yaml file>
#Example
#kubectl create -n arc -f C:\arc-data-services\postgres.yaml
Überwachen des Erstellungsstatus
Die Erstellung des PostgreSQL-Servers dauert einige Minuten. Mithilfe der folgenden Befehle können Sie den Status in einem anderen Terminalfenster überwachen:
Hinweis
In den folgenden Beispielbefehlen wird davon ausgegangen, dass Sie einen PostgreSQL-Server mit dem Namen pg1
und einen Kubernetes-Namespace mit dem Namen arc
erstellt haben. Wenn Sie einen anderen Namen für den Namespace bzw. den PostgreSQL-Server verwendet haben, können Sie arc
und pg1
durch die von Ihnen verwendeten Namen ersetzen.
kubectl get postgresqls/pg1 --namespace arc
kubectl get pods --namespace arc
Sie können auch den Erstellungsstatus eines bestimmten Pods überprüfen, indem Sie den Befehl kubectl describe
ausführen. Der Befehl describe
ist besonders nützlich bei der Fehlersuche. Beispiel:
kubectl describe pod/<pod name> --namespace arc
#Example:
#kubectl describe pod/pg1-0 --namespace arc
Beheben von Problemen bei der Erstellung
Wenn Probleme bei der Erstellung auftreten, finden Sie weitere Informationen im Handbuch zur Problembehandlung.