【问题标题】:GKE Ingress cannot find service resourceGKE Ingress 找不到服务资源
【发布时间】:2021-10-06 15:42:10
【问题描述】:

我有一个 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

在上面的例子中,没有定义规则,只定义了 defaultBackend。添加规则不会改变错误;有时它只显示不同的服务。使用什么服务也无所谓,所有资源都找不到。

但是,Ingress 的仪表板没有显示有关服务的错误(所有健康检查似乎都通过了):

我一直在苦苦挣扎,尝试使用不同的服务,使用不同的规则,但我认为我错过了一些东西。

  1. 哪个系统负责这个资源?服务本身似乎运行良好并且健康检查通过了,那么这是否是 Ingress 端的错误?
  2. 查看LoadBalancer dashboard 时,没有创建任何负载平衡器。是不是也是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

在网络服务菜单/后端服务中,显示如下:

所有其他选项卡都是空的(因此看不到负载平衡器)。它表示该服务没有被任何东西使用(见上图)。

【问题讨论】:

  • 您能在 [Kubernetes Engine > Service & Ingress] 上看到服务“webserver”吗?这可能与显示的错误有关
  • 你能把kubectl describe Ingress basic-ingress的结果贴出来吗?
  • 另外,您是否尝试过删除 Ingress 资源并重新创建它?
  • @NadiaEspinosa 是的,它看起来正确(我在原帖中添加了一张图片)
  • 您是否尝试使用此负载平衡实现Network Endpoint Group

标签: google-kubernetes-engine


【解决方案1】:

我仍然不明白为什么它被破坏了,或者为什么下面修复了它。

我将我的 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 确实解决了它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 2020-01-17
    • 2019-05-06
    • 2018-12-05
    • 2020-11-25
    • 1970-01-01
    • 2017-01-07
    相关资源
    最近更新 更多