spec konfigurieren. In Google Kubernetes Engine (GKE) ist ein standardmäßig erstellter Load Balancer vom externen Typ und an die externe IP-Adresse gebunden, um Verbindungen aus dem Internet zu ermöglichen. Wenn die Annotation networking.gke.io/load-balancer-type: "internal" jedoch im Feld metadata.annotations[] des Load-Balancer-Manifests enthalten ist, erstellt GKE einen internen Load Balancer.
Für die Erstellung des jeweiligen Load-Balancer-Typs stellen verschiedene Plattformen eigene Anmerkungen bereit.
Mit AlloyDB Omni können Sie Load-Balancer-Annotationen im spec-Abschnitt des Datenbankclustermanifests angeben. Der Datenbankcontroller fügt diese Anmerkungen dem Load-Balancer spec beim Erstellen eines Datenbankclusters hinzu.
Internen Load Balancer mit der Datenbankspezifikation erstellen
Sie können einen internen Load-Balancer erstellen, indem Sie das Feld dbLoadBalancerOptions im Abschnitt spec Ihres DBCluster-Manifests konfigurieren.
Kubernetes
Mit Annotationen werden Typ und Eigenschaften eines Load-Balancers definiert. Für einen internen Load Balancer ist die folgende Annotation erforderlich:
networking.gke.io/load-balancer-type: "internal"
Wenn Sie einen internen Load-Balancer erstellen möchten, der Verbindungen von außerhalb des GKE-Cluster im selben Projekt 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. Das ist derselbe Datenbankclustername, den Sie beim Erstellen des Clusters angegeben haben.
In diesem Manifest:
- networking.gke.io/load-balancer-type: "internal": die GKE-Annotation für interne Load Balancer für Ihren Datenbankcluster
- allowExternalIncomingTraffic: true: Das Feld
allowExternalIncomingTrafficist auftruegesetzt, um eingehenden Traffic von außerhalb des Kubernetes-Clusters zuzulassen.
Details zum Datenbankcluster und zur Konnektivität abrufen
Kubernetes
Prüfen Sie mit dem folgenden Befehl, ob sich die Datenbankclusterressource im Status Ready befindet:
kubectl get dbclusters.alloydbomni.dbadmin.goog -n NAMESPACE -wDie Ausgabe sieht etwa so aus:
NAME PRIMARYENDPOINT PRIMARYPHASE DBCLUSTERPHASE
DB_CLUSTER_NAME 10.95.0.84 Ready DBClusterReady
Prüfen Sie, ob die Annotation und die IP-Adresse des internen Load-Balancers im Load-Balancer-Dienst vorhanden sind:
kubectl get svc LOAD_BALANCER_SERVICE_NAME -n NAMESPACE -o yamlErsetzen Sie Folgendes:
LOAD_BALANCER_SERVICE_NAME: der Name Ihres Load-Balancer-Dienstes, der eine eindeutige IP-Adresse erstellt, auf die über externe Netzwerke zugegriffen werden kann.NAMESPACE: der Name des Kubernetes-Namespace für Ihren Load-Balancer-Dienst.
Die Ausgabe sieht 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 primäre Endpunktwert in der Überprüfungsausgabe des Datenbankclusters stimmt mit dem Ingress-Controller-Wert des Load Balancers überein.