AlloyDB Omni in Kubernetes installieren

Auf dieser Seite finden Sie einen Überblick über den AlloyDB Omni Kubernetes-Operator und eine Anleitung zum Bereitstellen von AlloyDB Omni in einem Kubernetes-Cluster. Auf dieser Seite werden Grundkenntnisse zu Kubernetes vorausgesetzt.

Eine Anleitung zum Installieren von AlloyDB Omni in einer standardmäßigen Linux-Umgebung finden Sie unter AlloyDB Omni installieren.

Übersicht

Wenn Sie AlloyDB Omni in einem Kubernetes-Cluster bereitstellen möchten, installieren Sie den AlloyDB Omni-Operator, eine von Google bereitgestellte Erweiterung der Kubernetes API.

Sie konfigurieren und steuern einen Kubernetes-basierten AlloyDB Omni-Datenbankcluster, indem Sie deklarative Manifestdateien mit dem Dienstprogramm kubectl verknüpfen, genau wie bei jeder anderen Kubernetes-basierten Bereitstellung. Sie verwenden nicht die AlloyDB Omni-Befehlszeile, die für Bereitstellungen auf einzelnen Linux-Maschinen und nicht für Kubernetes-Cluster gedacht ist.

Kompatibilität mit AlloyDB Omni-Operator 1.1.0 und höher

Die AlloyDB Omni-Operatorversion 1.1.0 ist nicht mit den Versionen 15.5.3 und 15.5.4 von AlloyDB Omni kompatibel. Wenn Sie eine dieser Versionen von AlloyDB Omni verwenden, wird möglicherweise ein Fehler wie der folgende angezeigt:

Error from server (Forbidden): error when creating "[...]/dbcluster.yaml": admission webhook "vdbcluster.alloydbomni.dbadmin.goog" denied the request: unsupported database version 15.5.3

Hinweise

Sie benötigen Zugriff auf Folgendes:

Jeder Knoten im Kubernetes-Cluster muss Folgendes haben:

  • Mindestens zwei x86- oder AMD64-CPUs.
  • Mindestens 8 GB RAM
  • Linux-Kernel-Version 4.18 oder höher
  • Kontrollgruppe v2 (cgroup v2) ist aktiviert.

AlloyDB Omni-Operator installieren

So installieren Sie den AlloyDB Omni-Operator:

  1. Definieren Sie mehrere Umgebungsvariablen:

    export GCS_BUCKET=alloydb-omni-operator
    export HELM_PATH=$(gcloud storage cat gs://$GCS_BUCKET/latest)
    export OPERATOR_VERSION="${HELM_PATH%%/*}"
  2. AlloyDB Omni-Operator herunterladen:

    gcloud storage cp gs://$GCS_BUCKET/$HELM_PATH ./ --recursive
  3. Installieren Sie den AlloyDB Omni-Operator:

    helm install alloydbomni-operator alloydbomni-operator-${OPERATOR_VERSION}.tgz \
    --create-namespace \
    --namespace alloydb-omni-system \
    --atomic \
    --timeout 5m

    Nach einer erfolgreichen Installation wird die folgende Ausgabe angezeigt:

    NAME: alloydbomni-operator
    LAST DEPLOYED: CURRENT_TIMESTAMP
    NAMESPACE: alloydb-omni-system
    STATUS: deployed
    REVISION: 1
    TEST SUITE: None
    
  4. Führen Sie eine Bereinigung durch, indem Sie die heruntergeladene Installationsdatei des AlloyDB Omni-Betreibers löschen. Die Datei hat den Namen alloydbomni-operator-VERSION_NUMBER.tgz und befindet sich im aktuellen Arbeitsverzeichnis.

Mit GDC verbundenen Speicher konfigurieren

Wenn Sie den AlloyDB Omni-Betriebsmodus auf einem mit der Google Data Cloud verbundenen Cluster installieren möchten, müssen Sie zusätzliche Schritte ausführen, um den Speicher zu konfigurieren, da für mit der Google Data Cloud verbundene Cluster keine Standardspeicherklasse festgelegt ist. Sie müssen eine Standardspeicherklasse festlegen, bevor Sie einen AlloyDB Omni-Datenbankcluster erstellen.

Informationen zum Festlegen von Symcloud Storage als Standardspeicherklasse finden Sie unter Symcloud Storage als Standardspeicherklasse festlegen.

Weitere Informationen zum Ändern der Standardeinstellung für alle anderen Speicherklassen finden Sie unter Standard-StorageClass ändern.

Schritte zur Abgleichung in Red Hat OpenShift

Wenn Sie Red Hat OpenShift 4.12 oder höher verwenden, müssen Sie die folgenden Schritte ausführen, nachdem Sie den AlloyDB Omni-Operator installiert und bevor Sie einen AlloyDB Omni-Datenbankcluster im Kubernetes-Cluster erstellt haben. Andernfalls können Sie diese Schritte überspringen.

  1. Fügen Sie Berechtigungen zum Aktualisieren von AlloyDB Omni-Instanz-Finalisierern hinzu, indem Sie die Clusterrolle system:controller:statefulset-controller so bearbeiten:

    kubectl edit clusterrole system:controller:statefulset-controller
  2. Fügen Sie im Texteditor am Ende der Clusterrolle Folgendes hinzu:

    - apiGroups:
      - alloydbomni.internal.dbadmin.goog
      resources:
      - instances/finalizers
      verbs:
      - update
    - apiGroups:
      - alloydbomni.internal.dbadmin.goog
      resources:
      - backuprepositories/finalizers
      verbs:
      - update
    

    Der StatefulSet-Controller muss zusätzliche Berechtigungen haben, um Instanz-Finalisierer zu aktualisieren, die der Clusterrolle hinzugefügt wurden, da in Red Hat OpenShift OwnerReferencesPermissionEnforcement aktiviert ist. Ohne die Berechtigung zum Aktualisieren von Instanz-Finalisierern kann der StatefulSet-Controller den Persistent Volume Claim (PVC) der Datenbank nicht erstellen. In den StatefulSet-Ereignissen der Datenbank wird die folgende Fehlermeldung ausgegeben:

    Warning  FailedCreate  [...] cannot set blockOwnerDeletion if an ownerReference refers to a resource you can't set finalizers on
    
  3. Fügen Sie die Sicherheitskontextbeschränkung anyuid dem Dienstkonto default in Ihrem Red Hat OpenShift-Projekt so hinzu:

    oc adm policy add-scc-to-user anyuid system:serviceaccount:DB_CLUSTER_NAMESPACE:default

    Sie müssen dem default-Dienstkonto die Verwendung der anyuid-Sicherheitskontextbeschränkung erlauben, da der Init-Container innerhalb des Datenbank-Pods als Root ausgeführt wird und die anderen Container mit bestimmten Nutzer-IDs ausgeführt werden. Ohne Berechtigung zur Verwendung von anyuid kann der StatefulSet-Controller den PVC für die Datenbank nicht erstellen. In den StatefulSet-Ereignissen der Datenbank wird die folgende Fehlermeldung ausgegeben:

    Warning  FailedCreate  [...]    unable to validate against any security context constraint
    

Datenbankcluster erstellen

Ein AlloyDB Omni-Datenbankcluster enthält alle Speicher- und Rechenressourcen, die zum Ausführen eines AlloyDB Omni-Servers erforderlich sind, einschließlich des primären Servers, aller Replikate und aller Daten.

Nachdem Sie den AlloyDB Omni-Operator in Ihrem Kubernetes-Cluster installiert haben, können Sie einen AlloyDB Omni-Datenbankcluster im Kubernetes-Cluster erstellen, indem Sie ein Manifest wie das folgende anwenden:

apiVersion: v1
kind: Secret
metadata:
  name: db-pw-DB_CLUSTER_NAME
  namespace: DB_CLUSTER_NAMESPACE
type: Opaque
data:
  DB_CLUSTER_NAME: "ENCODED_PASSWORD"
---
apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
  name: DB_CLUSTER_NAME
  namespace: DB_CLUSTER_NAMESPACE
spec:
  databaseVersion: "15.7.0"
  primarySpec:
    adminUser:
      passwordRef:
        name: db-pw-DB_CLUSTER_NAME
    resources:
      cpu: CPU_COUNT
      memory: MEMORY_SIZE
      disks:
      - name: DataDisk
        size: DISK_SIZE

Ersetzen Sie Folgendes:

  • DB_CLUSTER_NAME: der Name dieses Datenbankclusters, z. B. my-db-cluster.

  • DB_CLUSTER_NAMESPACE (optional): der Namespace, in dem Sie den Datenbankcluster erstellen möchten, z. B. my-db-cluster-namespace.

  • ENCODED_PASSWORD: Das Datenbank-Anmeldepasswort für die Standardnutzerrolle postgres, codiert als Base64-String, z. B. Q2hhbmdlTWUxMjM= für ChangeMe123.

  • CPU_COUNT: die Anzahl der CPUs, die für jede Datenbankinstanz in diesem Datenbankcluster verfügbar sind.

  • MEMORY_SIZE: die Größe des Arbeitsspeichers pro Datenbankinstanz dieses Datenbankclusters. Wir empfehlen, diesen Wert auf 8 Gigabyte pro CPU festzulegen. Wenn Sie beispielsweise cpu in diesem Manifest zuvor auf 2 gesetzt haben, empfehlen wir, memory auf 16Gi festzulegen.

  • DISK_SIZE: die Laufwerksgröße pro Datenbankinstanz, z. B. 10Gi.

Nachdem Sie dieses Manifest angewendet haben, enthält Ihr Kubernetes-Cluster einen AlloyDB Omni-Datenbankcluster mit der angegebenen Arbeitsspeicher-, CPU- und Speicherkonfiguration. Informationen zum Herstellen einer Testverbindung mit dem neuen Datenbankcluster finden Sie unter Verbindung über die vorinstallierte psql herstellen.

Weitere Informationen zu Kubernetes-Manifesten und ihrer Anwendung finden Sie unter Ressourcen verwalten.

Nächste Schritte