GKE Ingress 找不到服务资源
GKE Ingress cannot find service resource
我有一个 GKE Ingress,根据 this 教程设置。它运行了几周,直到我想向 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
在上面的例子中,没有定义任何规则,只是默认的后端。添加规则不会改变错误;有时它只显示不同的服务。也不管用什么服务,所有的资源都找不到。
但是,Ingress 的仪表板没有显示有关服务的错误(所有健康检查似乎都通过了):
我现在已经挣扎了一段时间,尝试使用不同的服务,使用不同的规则,但我想我遗漏了一些东西。
- 哪个系统负责此资源?服务本身似乎工作正常并且健康检查通过,所以是 Ingress 端的错误吗?
- 查看 LoadBalancer dashboard 时,没有创建 LoadBalancer。难道也是因为Ingress创建失败?
我知道可能需要更多信息来帮助我,但我不确定要提供什么,因为感觉就像在黑暗中搜索。请告诉我!
-更新-
如下所示,'webserver' 服务看起来不错。
我已经多次删除并重新创建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
在网络服务menu/Backend服务中,显示如下:
所有其他选项卡都是空的(因此看不到负载平衡器)。它说该服务没有被任何东西使用(见上图)。
我仍然不明白为什么它被破坏了,或者为什么下面修复了它。
我将 Ingress 简化为没有任何注释并应用了:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: basic-ingress
spec:
defaultBackend:
service:
name: webserver
port:
number: 3007
这导致 Ingress 正常工作!在此之后,我添加了 networking.gke.io/managed-certificates: "cluster-certificate"
注释,它仍然有效。最后,我添加了 kubernetes.io/ingress.global-static-ip-name: "web-static-ip"
。
我的开发网站又能用了。
不知何故,似乎出了点问题,简单地删除并重新应用并没有解决问题。应用一个非常简单的 Ingress 确实修复了它。
我有一个 GKE Ingress,根据 this 教程设置。它运行了几周,直到我想向 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
在上面的例子中,没有定义任何规则,只是默认的后端。添加规则不会改变错误;有时它只显示不同的服务。也不管用什么服务,所有的资源都找不到。
但是,Ingress 的仪表板没有显示有关服务的错误(所有健康检查似乎都通过了):
我现在已经挣扎了一段时间,尝试使用不同的服务,使用不同的规则,但我想我遗漏了一些东西。
- 哪个系统负责此资源?服务本身似乎工作正常并且健康检查通过,所以是 Ingress 端的错误吗?
- 查看 LoadBalancer dashboard 时,没有创建 LoadBalancer。难道也是因为Ingress创建失败?
我知道可能需要更多信息来帮助我,但我不确定要提供什么,因为感觉就像在黑暗中搜索。请告诉我!
-更新-
如下所示,'webserver' 服务看起来不错。
我已经多次删除并重新创建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
在网络服务menu/Backend服务中,显示如下:
所有其他选项卡都是空的(因此看不到负载平衡器)。它说该服务没有被任何东西使用(见上图)。
我仍然不明白为什么它被破坏了,或者为什么下面修复了它。
我将 Ingress 简化为没有任何注释并应用了:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: basic-ingress
spec:
defaultBackend:
service:
name: webserver
port:
number: 3007
这导致 Ingress 正常工作!在此之后,我添加了 networking.gke.io/managed-certificates: "cluster-certificate"
注释,它仍然有效。最后,我添加了 kubernetes.io/ingress.global-static-ip-name: "web-static-ip"
。
我的开发网站又能用了。
不知何故,似乎出了点问题,简单地删除并重新应用并没有解决问题。应用一个非常简单的 Ingress 确实修复了它。