繁体   English   中英

GKE Ingress 找不到服务资源

[英]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 的仪表板没有显示有关服务的错误(所有健康检查似乎都通过了): 没有显示错误的仪表板

我已经挣扎了一段时间,尝试使用不同的服务,使用不同的规则,但我想我遗漏了一些东西。

  1. 哪个系统负责此资源? 该服务本身似乎工作正常并且健康检查通过,那么是 Ingress 端的错误吗?
  2. 查看LoadBalancer 仪表板时,没有创建 LoadBalancer。 这也是Ingress创建失败的原因吗?

我知道可能需要更多信息来帮助我,但我不确定要提供什么,因为感觉就像我在黑暗中寻找。 请告诉我!


-更新-

如下所示,“网络服务器”服务看起来不错。 Kubernetes Engine > Service & 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

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

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

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

我将 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。

https://cloud.google.com/kube.netes-engine/docs/tutorials/configuring-domain-name-static-ip#use_an_ingress

使用入口

如果您选择使用创建 HTTP(S) 负载均衡器的 Ingress 公开您的应用程序,则必须保留全局地址 static IP。 区域 IP 地址不适用于 Ingress。

gcloud compute addresses create global-static-ip --global

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM