이 페이지에서는 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
해결 방법
프로젝트 기본 네트워크 등급을 프리미엄으로 구성합니다.
다음 단계
문서에서 문제 해결 방법을 찾을 수 없으면 지원 받기를 참조하여 다음 주제에 대한 조언을 포함한 추가 도움을 요청하세요.
- Cloud Customer Care에 문의하여 지원 케이스를 엽니다.
- StackOverflow에서 질문하고
google-kubernetes-engine
태그를 사용하여 유사한 문제를 검색해 커뮤니티의 지원을 받습니다.#kubernetes-engine
Slack 채널에 조인하여 더 많은 커뮤니티 지원을 받을 수도 있습니다. - 공개 Issue Tracker를 사용하여 버그나 기능 요청을 엽니다.