このページでは、Google Kubernetes Engine(GKE)の Ingress に関連する問題を解決する方法について説明します。
さらにサポートを必要とされる場合は、Cloud カスタマーケアにお問い合わせください。
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 アドレスのアノテーションが正しくない
症状
静的 IP アドレスを使用するように外部 Ingress を構成すると、次のエラーが表示されることがあります。
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 アドレスはすでに使用されています
症状
内部または外部の Ingress リソースをプロビジョニングするために静的 IP アドレスを指定するときに、次のエラーが表示されることがあります。
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
解決策
プロジェクトのデフォルトのネットワーク階層をプレミアムに構成します。