GKE Ingress创建失败报INSTANCE_IN_MULTIPLE_LOAD_BALANCED_IGS错误求助
解决GKE Ingress同步报错:INSTANCE_IN_MULTIPLE_LOAD_BALANCED_IGS
报错原因
GCP限制单个VM实例只能属于一个负载均衡关联的实例组。目标实例gke-gke1-default-1-cb3c8ee2-0bap被多个负载均衡实例组引用,导致GCE Ingress同步失败。即使卸载了Helm Chart,GCP侧仍可能残留未清理的负载均衡资源或实例组关联。
解决方案
1. 排查GCP侧残留负载均衡资源
执行以下gcloud命令定位问题资源:
- 列出所有后端服务,查找关联到报错实例的资源:
gcloud compute backend-services list - 先确定实例所在区域,再查看实例组的后端服务关联:
# 获取实例所在区域 gcloud compute instances describe gke-gke1-default-1-cb3c8ee2-0bap --format='value(zone)' # 查看实例组关联的后端服务 gcloud compute instance-groups managed get-backend-services [INSTANCE_GROUP_NAME] --zone=[INSTANCE_ZONE] - 列出所有转发规则和目标代理,确认是否存在废弃资源:
gcloud compute forwarding-rules list gcloud compute target-http-proxies list
2. 清理GCP侧残留关联
- 删除废弃的后端服务:
gcloud compute backend-services delete [BACKEND_SERVICE_NAME] --global - 移除实例组多余的后端服务关联:
gcloud compute instance-groups managed remove-backend-services [INSTANCE_GROUP_NAME] --backend-services=[BACKEND_SERVICE_NAME] --zone=[INSTANCE_ZONE]
3. 修正K8s Service配置
你的Service同时使用NodePort类型和cloud.google.com/neg注解,会导致GKE同时创建NodePort对应的实例组和NEG,引发冲突。将Service类型改为ClusterIP(NEG无需NodePort,GCE Ingress可直接通过NEG访问Pod):
# 修改后的service.yaml apiVersion: v1 kind: Service metadata: name: dx-analytics-eu-backend namespace: xxxxx annotations: cloud.google.com/app-protocols: '{"https":"HTTPS","http":"HTTP"}' cloud.google.com/neg: '{"exposed_ports": {"8088":{}}}' labels: app: dx-analytics-eu-backend spec: type: ClusterIP # 从NodePort改为ClusterIP ports: - port: 8088 targetPort: 8088 protocol: TCP name: http selector: app: dx-analytics-eu-backend
4. 重新部署
- 彻底清理K8s侧残留资源:
helm uninstall [RELEASE_NAME] -n xxxxxx kubectl delete ingress,service,deployment -l app=dx-analytics-eu-backend -n xxxxxx - 重新部署Helm Chart:
helm install [RELEASE_NAME] ./analytics -n xxxxxx
内容的提问来源于stack exchange,提问作者AB2024
相关产品推荐
相关产品推荐

