spec 在 AlloyDB Omni 中配置负载均衡器。在 Google Kubernetes Engine (GKE) 中,默认创建的负载均衡器属于外部类型,并与外部 IP 地址绑定,以允许从互联网进行连接。但是,如果负载均衡器清单的 metadata.annotations[] 字段中包含 networking.gke.io/load-balancer-type: "internal" 注解,则 GKE 会创建内部负载均衡器。
不同的平台提供自己的注解,用于创建特定类型的负载均衡器。AlloyDB Omni 让您可以使用数据库集群清单的 spec 部分指定负载均衡器注解。数据库控制器会在创建数据库集群时将这些注解添加到负载均衡器 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 控制器值匹配