GKE 인그레스 문제 해결


이 페이지에서는 Google Kubernetes Engine (GKE)에서 인그레스와 관련된 문제를 해결하는 방법을 설명합니다.

추가 지원이 필요하면 Cloud Customer Care에 연락합니다.

Ingress 클래스의 주석이 잘못됨

증상

인그레스를 만들 때 다음 오류가 표시될 수 있습니다.

Missing one or more resources. If resource creation takes longer than expected, you might have an invalid configuration.

가능한 원인

인그레스를 만들 때 매니페스트에서 인그레스 클래스를 잘못 구성했을 수 있습니다.

해결 방법

인그레스 클래스를 지정하려면 kubernetes.io/ingress.class 주석을 사용해야 합니다. spec.ingressClassName을 사용하여 GKE 인그레스를 지정할 수 없습니다.

  • 내부 애플리케이션 부하 분산기를 배포하려면 kubernetes.io/ingress.class: gce-internal 주석을 사용하세요.
  • 외부 애플리케이션 부하 분산기를 배포하려면 kubernetes.io/ingress.class: gce 주석을 사용하세요.

고정 IP 주소에 잘못된 주석이 추가됨

증상

고정 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.

가능한 원인

  • 인그레스를 배포하기 전에 고정 외부 IP 주소를 만들지 않았습니다.
  • 부하 분산기 유형에 올바른 주석을 사용하지 않습니다.

해결 방법

외부 인그레스를 구성하는 경우:

  • 인그레스를 배포하기 전에 고정 외부 IP 주소를 예약합니다.
  • 인그레스 리소스에 kubernetes.io/ingress.global-static-ip-name 주석을 사용합니다.

내부 인그레스를 구성하는 경우:

  • 인그레스를 배포하기 전에 리전 고정 내부 IP 주소를 예약합니다.
  • 인그레스 리소스에 kubernetes.io/ingress.regional-static-ip-name 주석을 사용합니다.

고정 IP 주소가 이미 사용 중입니다.

증상

내부 또는 외부 인그레스 리소스를 프로비저닝하기 위해 고정 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 인증서를 구성하고 인그레스에서 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

가능한 원인

인그레스를 구성할 때 다음 주석을 함께 사용할 수 없습니다.

  • networking.gke.io/managed-certificates (Google 관리형 인증서를 인그레스에 연결하기 위한 경우)
  • kubernetes.io/ingress.allow-http: false (HTTP 트래픽 사용 중지)

해결 방법

외부 애플리케이션 부하 분산기가 완전히 프로그래밍된 후에만 HTTP 트래픽을 사용 중지합니다. 인그레스를 업데이트하고 매니페스트에 주석 kubernetes.io/ingress.allow-http: false를 추가할 수 있습니다.

내부 인그레스에 프록시 전용 서브넷 누락

증상

내부 애플리케이션 부하 분산기의 인그레스를 배포할 때 다음 오류가 표시될 수 있습니다.

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.

가능한 원인

인그레스 리소스를 만들기 전에 프록시 전용 서브넷을 만들지 않았습니다. 내부 애플리케이션 부하 분산기에는 프록시 전용 서브넷이 필요합니다.

해결 방법

내부 인그레스를 배포하기 전에 프록시 전용 서브넷을 만듭니다.

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비트 이하로 줄입니다.

표준 등급에서 인그레스를 만드는 중에 발생한 오류

증상

프로젝트 기본 네트워크 등급이 표준으로 설정된 프로젝트에서 인그레스를 배포하는 경우 다음 오류 메시지가 표시됩니다.

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

해결 방법

프로젝트 기본 네트워크 등급을 프리미엄으로 구성합니다.