Questa pagina riassume come configurare un bilanciatore del carico in AlloyDB Omni utilizzando spec
AlloyDB Omni. In Google Kubernetes Engine (GKE), un bilanciatore del carico creato per impostazione predefinita è di tipo esterno e associato all'indirizzo IP esterno per consentire le connessioni da internet. Tuttavia, se l'annotazione networking.gke.io/load-balancer-type: "internal"
è inclusa nel campo metadata.annotations[]
del manifest del bilanciatore del carico, GKE crea un bilanciatore del carico interno.
Le diverse piattaforme forniscono le proprie annotazioni per creare il tipo specifico di bilanciatore del carico.
AlloyDB Omni ti consente di specificare le annotazioni del bilanciatore del carico utilizzando la sezione spec
del manifest del cluster di database. Il controller del database aggiunge queste annotazioni al bilanciatore del carico spec
durante la creazione di un cluster di database.
Creare un bilanciatore del carico interno utilizzando la specifica del database
Puoi creare un bilanciatore del carico interno configurando il campo dbLoadBalancerOptions
nella sezione spec
del manifest DBCluster
.
Kubernetes
Le annotazioni definiscono il tipo e le proprietà di un bilanciatore del carico. Un bilanciatore del carico interno richiede la presenza della seguente annotazione:
networking.gke.io/load-balancer-type: "internal"
Per creare un bilanciatore del carico interno che consenta le connessioni dall'esterno del cluster GKE all'interno dello stesso progetto, applica il seguente manifest:
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
Sostituisci quanto segue:
DB_CLUSTER_NAME
: il nome del cluster di database. Si tratta dello stesso nome del cluster di database che hai dichiarato quando lo hai creato.
In questo manifest:
- networking.gke.io/load-balancer-type: "internal": l'annotazione del bilanciatore del carico interno GKE per il cluster di database
- allowExternalIncomingTraffic: true: il campo
allowExternalIncomingTraffic
è impostato sutrue
per consentire il traffico in entrata dall'esterno del cluster Kubernetes
Ottenere i dettagli del cluster e della connettività del database
Kubernetes
Per verificare che la risorsa del cluster di database sia nello stato Ready
, utilizza il seguente comando:
kubectl get dbclusters.alloydbomni.dbadmin.goog -n NAMESPACE -w
L'output è simile al seguente:
NAME PRIMARYENDPOINT PRIMARYPHASE DBCLUSTERPHASE
DB_CLUSTER_NAME 10.95.0.84 Ready DBClusterReady
Verifica che l'annotazione e l'indirizzo IP del bilanciatore del carico interno esistano nel servizio del bilanciatore del carico, come segue:
$ kubectl get svc LOAD_BALANCER_SERVICE_NAME -n NAMESPACE -o yaml
Sostituisci quanto segue:
LOAD_BALANCER_SERVICE_NAME
: il nome del servizio di bilanciamento del carico che crea un indirizzo IP univoco accessibile dalle reti esterne.NAMESPACE
: il nome dello spazio dei nomi Kubernetes per il servizio del bilanciatore del carico.
L'output è simile al seguente:
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
L'output ha i seguenti attributi:
networking.gke.io/load-balancer-type: internal
: nel servizio bilanciatore del carico deve esistere un bilanciatore del carico internoip
: il valore dell'endpoint principale nell'output della verifica del cluster di database corrisponde al valore del controller di ingresso del bilanciatore del carico