[英]GKE Ingress cannot find service resource
我有一个 GKE Ingress,根据本教程设置。 它运行了几周,直到我想向 YAML 配置添加一个新规则。
显示以下错误并且不再创建入口:
Error syncing to GCP: error running backend syncing routine: googleapi: Error 404: The resource 'projects/<project_id>/zones/<zone>/networkEndpointGroups/<my-service>' was not found, notFound
我已将 yaml 简化为只有一项服务,但仍然无法正常工作:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: basic-ingress
annotations:
kubernetes.io/ingress.global-static-ip-name: "web-static-ip"
networking.gke.io/managed-certificates: "cluster-certificate"
kubernetes.io/ingress.class: "gce"
spec:
defaultBackend:
service:
name: webserver
port:
number: 3007
在上面的示例中,没有定义任何规则,只定义了 defaultBackend。 添加规则不会改变错误; 有时它只显示不同的服务。 使用什么服务也没有关系,所有的资源都找不到。
但是,Ingress 的仪表板没有显示有关服务的错误(所有健康检查似乎都通过了):
我已经挣扎了一段时间,尝试使用不同的服务,使用不同的规则,但我想我遗漏了一些东西。
我知道可能需要更多信息来帮助我,但我不确定要提供什么,因为感觉就像我在黑暗中寻找。 请告诉我!
-更新-
我已经多次删除并重新创建 Ingress,但这没有效果。 kubectl describe Ingress basic-ingress
显示如下:
Name: basic-ingress
Namespace: production
Address:
Default backend: webserver:3007 (10.6.128.139:3007)
Rules:
Host Path Backends
---- ---- --------
* * webserver:3007 (10.6.128.139:3007)
Annotations: ingress.gcp.kubernetes.io/pre-shared-cert: mcrt-065ca8b6-e85b-42ad-9113-6babe367a2d8
kubernetes.io/ingress.class: gce
kubernetes.io/ingress.global-static-ip-name: web-static-ip
networking.gke.io/managed-certificates: cluster-certificate
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Sync 3m48s (x3 over 3m48s) loadbalancer-controller Scheduled for sync
Warning Sync 31s (x16 over 3m30s) loadbalancer-controller Error syncing to GCP: error running backend syncing routine: googleapi: Error 404: The resource 'projects/<project_id>/zones/<zone>/networkEndpointGroups/<my-service>' was not found, notFound
kubectl get ingress basic-ingress
显示:
NAME CLASS HOSTS ADDRESS PORTS AGE
basic-ingress <none> * 80 6m34s
所有其他选项卡都是空的(因此看不到负载均衡器)。 它说该服务没有被任何东西使用(见上图)。
我仍然不明白为什么它被破坏了,或者为什么下面修复了它。
我将 Ingress 简化为没有任何注释并应用了它:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: basic-ingress
spec:
defaultBackend:
service:
name: webserver
port:
number: 3007
这导致了一个有效的入口,在此之后,我添加了networking.gke.io/managed-certificates: "cluster-certificate"
注释,它仍然有效。 最后,我添加了kube.netes.io/ingress.global-static-ip-name: "web-static-ip"
。 我的开发网站再次运行。
不知何故,看起来出了点问题,简单地删除并重新应用并不能解决问题。 应用一个非常简单的 Ingress 确实修复了它。
参考下面的 gcp 链接,它需要是全局的 static IP。
使用入口
如果您选择使用创建 HTTP(S) 负载均衡器的 Ingress 公开您的应用程序,则必须保留全局地址 static IP。 区域 IP 地址不适用于 Ingress。
gcloud compute addresses create global-static-ip --global
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.