GKE内部Ingress创建失败求助(含错误信息与配置文件)
GKE内部ALB Ingress创建失败问题解决指南
1. 解决Proxy-Only子网缺失问题
第一个错误明确要求在集群所在的同一区域和VPC内创建活跃的proxy-only子网,这是GCP内部HTTP(S)负载均衡的强制依赖组件:
执行以下gcloud命令创建(替换为你的项目、VPC、区域和未占用的CIDR段):
gcloud compute networks subnets create proxy-only-subnet \ --project=gke-project \ --network=你的VPC名称 \ --region=asia-southeast2 \ --purpose=REGIONAL_MANAGED_PROXY \ --role=ACTIVE \ --range=10.199.0.0/24
注意:子网purpose必须设为REGIONAL_MANAGED_PROXY,role设为ACTIVE,CIDR不能与现有子网重叠。
2. 修正Service配置
你当前的Service是LoadBalancer类型,搭配内部Ingress时无需单独创建LB,应改为ClusterIP类型:
修改svc.yaml如下:
apiVersion: v1 kind: Service metadata: name: gke-svc namespace: gke-app annotations: cloud.google.com/neg: '{"ingress": true}' labels: app: gke-app spec: sessionAffinity: ClientIP selector: app: gke-app ports: - port: 8003 targetPort: 8000 protocol: TCP name: http type: ClusterIP
移除原配置中的loadBalancerIP、nodePort和networking.gke.io/load-balancer-type注解。
3. 验证Ingress配置
你的Ingress配置基本合规,需确认两点:
- 集群中已存在
gce-internal这个IngressClass(GKE默认会自动创建,若缺失可手动创建) - 确保
event.staginggke.my.id的DNS后续能解析到内部LB分配的VPC内网IP
4. 重新部署与错误排查
执行部署命令:
kubectl apply -f svc.yaml kubectl apply -f ingress.yaml
若仍出现"Missing one or more resources"错误,执行以下命令定位问题:
- 查看Ingress事件详情:
kubectl describe ingress event-ingress -n gke-app - 检查GCP转发规则状态:
gcloud compute forwarding-rules list --region=asia-southeast2 - 确认GCP侧的targetHttpProxy、urlMap等资源是否创建成功
关键注意事项
- Proxy-only子网必须与集群处于同一区域和VPC
- Ingress关联的Service需用ClusterIP类型,避免重复创建负载均衡
cloud.google.com/neg注解可保留,用于让Ingress使用网络端点组优化性能
内容的提问来源于stack exchange,提问作者Mirza Aditya Deliantama
相关产品推荐
相关产品推荐

