本页介绍了如何解决与 Google Kubernetes Engine (GKE) 中的 Ingress 相关的问题。
如果您需要其他帮助,请与 Cloud Customer Care 联系。
Ingress 类的注解不正确
症状
创建 Ingress 时,您可能会看到以下错误:
Missing one or more resources. If resource creation takes longer than expected, you might have an invalid configuration.
潜在原因
创建 Ingress 时,您可能在清单中错误地配置了 Ingress 类。
解决方法
指定 Ingress 类必须使用 kubernetes.io/ingress.class
注解。您不能使用 spec.ingressClassName
指定 GKE Ingress。
- 如需部署内部应用负载平衡器,请使用
kubernetes.io/ingress.class: gce-internal
注解。 - 如需部署外部应用负载平衡器,请使用
kubernetes.io/ingress.class: gce
注解。
静态 IP 地址的注解不正确
症状
将外部 Ingress 配置为使用静态 IP 地址时,您可能会看到以下错误:
Error syncing to GCP: error running load balancer syncing routine: loadbalancer <Name of load balancer> does not exist: the given static IP name <Static IP> doesn't translate to an existing static IP.
潜在原因
- 您在部署 Ingress 之前未创建静态外部 IP 地址。
- 您使用的注解不适用于您的负载平衡器类型。
解决方法
如果您要配置外部 Ingress,请执行以下操作:
- 在部署 Ingress 之前,请预留静态外部 IP 地址。
- 在 Ingress 资源上使用注解
kubernetes.io/ingress.global-static-ip-name
。
如果您要配置内部 Ingress,请执行以下操作:
- 在部署 Ingress 之前,预留区域性静态内部 IP 地址。
- 在 Ingress 资源上使用注解
kubernetes.io/ingress.regional-static-ip-name
。
静态 IP 地址已被使用
症状
当您指定静态 IP 地址来预配内部或外部 Ingress 资源时,可能会看到以下错误:
Error syncing to GCP: error running load balancer syncing
routine: loadbalancer <LB name> does not exist:
googleapi: Error 409: IP_IN_USE_BY_ANOTHER_RESOURCE - IP ''<IP address>'' is already being used by another resource.
潜在原因
静态 IP 地址已被其他资源使用。
停用 HTTP 并使用 Google 管理的证书时出错
症状
如果您在配置由 Google 管理的 SSL 证书并在 Ingress 上停用 HTTP 流量,则会看到以下错误:
Error syncing to GCP: error running load balancer syncing
routine: loadbalancer <Load Balancer name> does not exist:
googleapi: Error 404: The resource ''projects/<Project>/global/sslPolicies/<Policy name>' was not found, notFound
潜在原因
配置 Ingress 时,您不能同时使用以下注解:
networking.gke.io/managed-certificates
(用于将 Google 管理的证书与 Ingress 相关联)kubernetes.io/ingress.allow-http: false
(用于停用 HTTP 流量)
解决方法
只有在外部应用负载平衡器完全编程后,您才能停用 HTTP 流量。您可以更新 Ingress,并将注解 kubernetes.io/ingress.allow-http: false
添加到清单中。
内部 Ingress 缺少代理专用子网
症状
为内部应用负载平衡器部署 Ingress 时,您可能会看到以下错误:
Error syncing to GCP: error running load balancer syncing routine:
loadbalancer <LB name> does not exist: googleapi: Error 400: Invalid value for field 'resource.target': 'https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/<Region>/targetHttpsProxies/<Target proxy>'.
An active proxy-only subnetwork is required in the same region and VPC as
the forwarding rule.
潜在原因
您在创建 Ingress 资源之前未创建代理专用子网。内部应用负载平衡器需要代理专用子网。
解决方法
先创建代理专用子网,然后再部署内部 Ingress。
SSL 证书密钥过大
症状
如果负载均衡器的 SSL 证书密钥大小过大,您可能会看到以下错误:
Error syncing to GCP: error running load balancer syncing routine: loadbalancer gky76k70-load-test-trillian-api-ingress-fliismmb does not exist: Cert creation failures - k8s2-cr-gky76k70-znz6o1pfu3tfrguy-f9be3a4abbe573f7 Error:googleapi: Error 400: The SSL key is too large., sslCertificateKeyTooLarge
潜在原因
Google Cloud 对 SSL 证书密钥的长度限制为 2,048 位。
解决方法
将 SSL 证书密钥的大小缩减到 2,048 位或更小。
在标准层级中创建 Ingress 时出错
症状
如果您在将项目默认网络层级设置为“标准”的项目中部署 Ingress,系统会显示以下错误消息:
Error syncing to GCP: error running load balancer syncing routine: load balancer <LB Name> does not exist: googleapi: Error 400: STANDARD network tier (the project''s default network tier) is not supported: STANDARD network tier is not supported for global forwarding rule., badRequest
解决方法
将项目的默认网络层级配置为“优质”。