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
allowExternalIncomingTrafficist auftruefestgelegt, 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 -wDie 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.84Die 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.