如何在Shared VPC服务项目的GKE LoadBalancer服务中使用宿主项目预留的外部IP地址
我之前在GCP官方文档里找到过相关说明,确认宿主项目中预留的外部IPv4地址确实可以用于关联的服务项目资源,包括GKE的LoadBalancer服务,文档里的相关描述如下:
区域级外部IP地址必须定义在负载均衡器所在的同一项目或Shared VPC宿主项目中。
静态外部IPv4地址:宿主项目中定义的外部IPv4地址对象可被宿主项目本身或任何关联的服务项目中的资源使用。
结合你的场景(宿主项目有Shared VPC和预留外部IP,要给服务项目的GKE LoadBalancer服务分配这个IP),可以按照以下步骤操作:
- 先确认基础条件:你的GKE集群已经部署在服务项目中,并且正确关联到宿主项目的Shared VPC网络,同时宿主项目里预留的是区域级静态外部IPv4地址(要和GKE集群所在区域一致)。
- 配置权限:在宿主项目中,给服务项目的GKE机器人服务账号添加
compute.addressUser角色。这个账号的格式是service-<服务项目编号>@container-engine-robot.iam.gserviceaccount.com,赋予这个角色后,服务项目的GKE才能有权限使用宿主项目的预留IP。 - 编写LoadBalancer服务的YAML配置:在
spec部分添加loadBalancerIP字段,填入宿主项目预留的IP地址,示例如下:
apiVersion: v1 kind: Service metadata: name: my-gke-lb-service spec: type: LoadBalancer loadBalancerIP: "192.0.2.10" # 替换为你在宿主项目预留的IP ports: - port: 80 targetPort: 8080 selector: app: your-app-label
- 部署并验证:用
kubectl apply -f <你的服务yaml文件>部署后,执行kubectl get service查看服务状态,当EXTERNAL-IP字段显示你指定的预留IP时,就说明配置成功了。同时你也可以在宿主项目的IP地址管理页面,看到这个IP的使用者已经关联到服务项目的GKE资源。
备注:内容来源于stack exchange,提问作者Mike
相关产品推荐
相关产品推荐

