Freigeben über


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.