Auf dieser Seite wird beschrieben, wie Sie einen Load Balancer in AlloyDB Omni mit der AlloyDB Omni-spec
konfigurieren. In der Google Kubernetes Engine (GKE) ist ein standardmäßig erstellter Load Balancer vom Typ „extern“ und an die externe IP-Adresse gebunden, um Verbindungen aus dem Internet zuzulassen. Wenn die networking.gke.io/load-balancer-type: "internal"
-Anmerkung jedoch im Feld metadata.annotations[]
des Load Balancer-Manifests enthalten ist, erstellt GKE einen internen Load Balancer.
Unterschiedliche Plattformen bieten eigene Anmerkungen zum Erstellen des jeweiligen Load Balancer-Typs.
In AlloyDB Omni können Sie Load Balancer-Anmerkungen im Abschnitt spec
des Datenbankcluster-Manifests angeben. Der Datenbankcontroller fügt diese Anmerkungen dem Load Balancer spec
hinzu, wenn ein Datenbankcluster erstellt wird.
Internen Load Balancer mithilfe der Datenbankspezifikation erstellen
Sie können einen internen Load Balancer erstellen, indem Sie das Feld dbLoadBalancerOptions
im Abschnitt spec
Ihres DBCluster
-Manifests konfigurieren.
Kubernetes
Anmerkungen definieren den Typ und die Eigenschaften eines Load Balancers. Für einen internen Load Balancer ist die folgende Anmerkung erforderlich:
networking.gke.io/load-balancer-type: "internal"
Wenn Sie einen internen Load Balancer erstellen möchten, der Verbindungen von außerhalb des GKE-Clusters innerhalb desselben Projekts zulässt, wenden Sie das folgende Manifest an:
kubectl apply -f - <<EOF apiVersion: v1 kind: Secret metadata: name: db-pw-DB_CLUSTER_NAME type: Opaque data: DB_CLUSTER_NAME: "ENCODED_PASSWORD" --- apiVersion: alloydbomni.dbadmin.goog/v1 kind: DBCluster metadata: name: DB_CLUSTER_NAME spec: databaseVersion: "15.5.0" primarySpec: adminUser: passwordRef: name: db-pw-DB_CLUSTER_NAME resources: memory: 5Gi cpu: 1 disks: - name: DataDisk size: 10Gi dbLoadBalancerOptions: annotations: networking.gke.io/load-balancer-type: "internal" allowExternalIncomingTraffic: true EOF
Ersetzen Sie Folgendes:
DB_CLUSTER_NAME
: Der Name Ihres Datenbankclusters. Dies ist der Name des Datenbankclusters, den Sie beim Erstellen angegeben haben.
In diesem Manifest:
- networking.gke.io/load-balancer-type: "internal": die GKE-Anmerkung zum internen Load Balancer für Ihren Datenbankcluster
- allowExternalIncomingTraffic: true: Das Feld
allowExternalIncomingTraffic
ist auftrue
festgelegt, um eingehenden Traffic von außerhalb des Kubernetes-Clusters zuzulassen.
Datenbankcluster und Verbindungsdetails abrufen
Kubernetes
Verwenden Sie den folgenden Befehl, um zu prüfen, ob die Datenbankclusterressource den Status Ready
hat:
kubectl get dbclusters.alloydbomni.dbadmin.goog -n NAMESPACE -w
Die Ausgabe sieht in etwa so aus:
NAME PRIMARYENDPOINT PRIMARYPHASE DBCLUSTERPHASE
DB_CLUSTER_NAME 10.95.0.84 Ready DBClusterReady
Prüfen Sie, ob die Anmerkung und die IP-Adresse des internen Load Balancers im Load Balancer-Dienst vorhanden sind:
$ kubectl get svc LOAD_BALANCER_SERVICE_NAME -n NAMESPACE -o yaml
Ersetzen Sie Folgendes:
LOAD_BALANCER_SERVICE_NAME
: der Name Ihres Load Balancer-Dienstes, der eine eindeutige IP-Adresse erstellt, die von externen Netzwerken erreichbar ist.NAMESPACE
: Der Name des Kubernetes-Namespace für Ihren Load Balancer-Dienst.
Die Ausgabe sieht in etwa so aus:
apiVersion: v1 kind: Service metadata: annotations: cloud.google.com/neg: '{"ingress":true}' networking.gke.io/load-balancer-type: internal creationTimestamp: "2024-02-22T15:26:18Z" finalizers: − gke.networking.io/l4-ilb-v1 − service.kubernetes.io/load-balancer-cleanup labels: alloydbomni.internal.dbadmin.gdc.goog/dbcluster: DB_CLUSTER_NAME alloydbomni.internal.dbadmin.gdc.goog/dbcluster-ns: NAMESPACE alloydbomni.internal.dbadmin.gdc.goog/instance: ad98-foo alloydbomni.internal.dbadmin.gdc.goog/task-type: database egress.networking.gke.io/enabled: "true" name: LOAD_BALANCER_SERVICE_NAME namespace: NAMESPACE ownerReferences: − apiVersion: alloydbomni.dbadmin.goog/v1 blockOwnerDeletion: true controller: true kind: DBCluster name: DB_CLUSTER_NAME uid: 2dd76c9f-7698-4210-be41-6d2259840a85 resourceVersion: "33628320" uid: 1f45362b-6d6f-484d-ad35-11c14e91933e spec: allocateLoadBalancerNodePorts: true clusterIP: 10.60.4.76 clusterIPs: − 10.60.4.76 externalTrafficPolicy: Cluster internalTrafficPolicy: Cluster ipFamilies: − IPv4 ipFamilyPolicy: SingleStack loadBalancerSourceRanges: − 0.0.0.0/0 ports: − name: db nodePort: 31453 port: 5432 protocol: TCP targetPort: 5432 selector: alloydbomni.internal.dbadmin.gdc.goog/dbcluster: DB_CLUSTER_NAME alloydbomni.internal.dbadmin.gdc.goog/dbcluster-ns: NAMESPACE alloydbomni.internal.dbadmin.gdc.goog/instance: ad98-foo alloydbomni.internal.dbadmin.gdc.goog/task-type: database egress.networking.gke.io/enabled: "true" sessionAffinity: None type: LoadBalancer status: loadBalancer: ingress: − ip: 10.95.0.84
Die Ausgabe hat die folgenden Attribute:
networking.gke.io/load-balancer-type: internal
: Im Load Balancer-Dienst muss ein interner Load Balancer vorhanden sein.ip
: Der Wert des primären Endpunkts in der Bestätigungsausgabe des Datenbankclusters stimmt mit dem Wert des Ingress-Controllers des Load Balancers überein.