spec
在 AlloyDB Omni 中設定負載平衡器。在 Google Kubernetes Engine (GKE) 中,系統預設建立的負載平衡器屬於外部類型,並繫結外部 IP 位址,允許來自網際網路的連線。不過,如果負載平衡器資訊清單的 metadata.annotations[]
欄位中包含 networking.gke.io/load-balancer-type: "internal"
註解,GKE 就會建立內部負載平衡器。
不同平台會提供各自的註解,用於建立特定類型的負載平衡器。您可以使用資料庫叢集資訊清單的 spec
區段,在 AlloyDB Omni 中指定負載平衡器註解。建立資料庫叢集時,資料庫控制器會將這些註解新增至負載平衡器 spec
。
使用資料庫規格建立內部負載平衡器
如要建立內部負載平衡器,請在 DBCluster
資訊清單的 spec
區段中設定 dbLoadBalancerOptions
欄位。
Kubernetes
註解會定義負載平衡器的類型和屬性。內部負載平衡器必須有下列註解:
networking.gke.io/load-balancer-type: "internal"
如要建立內部負載平衡器,允許來自同一專案中 GKE 叢集外部的連線,請套用下列資訊清單:
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
更改下列內容:
DB_CLUSTER_NAME
:資料庫叢集的名稱。也就是建立資料庫叢集時宣告的名稱。
在這個資訊清單中:
- networking.gke.io/load-balancer-type: "internal":資料庫叢集的 GKE 內部負載平衡器註解
- allowExternalIncomingTraffic: true:將
allowExternalIncomingTraffic
欄位設為true
,允許來自 Kubernetes 叢集外部的輸入流量
取得資料庫叢集和連線詳細資料
Kubernetes
如要確認資料庫叢集資源處於 Ready
狀態,請使用下列指令:
kubectl get dbclusters.alloydbomni.dbadmin.goog -n NAMESPACE -w
輸出結果會與下列內容相似:
NAME PRIMARYENDPOINT PRIMARYPHASE DBCLUSTERPHASE
DB_CLUSTER_NAME 10.95.0.84 Ready DBClusterReady
確認內部負載平衡器的註解和 IP 位址存在於負載平衡器服務中,如下所示:
kubectl get svc LOAD_BALANCER_SERVICE_NAME -n NAMESPACE -o yaml
更改下列內容:
LOAD_BALANCER_SERVICE_NAME
:負載平衡器服務的名稱,該服務會建立可供外部網路存取的專屬 IP 位址。NAMESPACE
:負載平衡器服務的 Kubernetes 命名空間名稱。
輸出結果會與下列內容相似:
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
輸出內容具有下列屬性:
networking.gke.io/load-balancer-type: internal
:負載平衡器服務中必須有內部負載平衡器ip
:資料庫叢集驗證輸出中的主要端點值,與負載平衡器的 Ingress 控制器值相符