나는 포트 32656 (NodePort 유형의 Kubernetes 서비스)에서 실행중인 Kubernetes 노드를 백엔드에 가지고 있습니다. 트래픽을 허용하는 <node_ip>:32656
에 대한 방화벽 규칙을 만들면이 주소의 브라우저에서 백엔드를 열 수 있습니다 : http://<node_ip>:32656
.HTTP로드 밸런서를 백엔드에 연결할 수 없음 (502 잘못된 게이트웨이)
내가 지금 달성하고자하는 것은 HTTP로드 밸런서를 생성하고 위의 백엔드에 연결하는 것입니다. 내가 필요한 인프라 만들려면 다음 스크립트를 사용 :
#!/bin/bash
GROUP_NAME="gke-service-cluster-61155cae-group"
HEALTH_CHECK_NAME="test-health-check"
BACKEND_SERVICE_NAME="test-backend-service"
URL_MAP_NAME="test-url-map"
TARGET_PROXY_NAME="test-target-proxy"
GLOBAL_FORWARDING_RULE_NAME="test-global-rule"
NODE_PORT="32656"
PORT_NAME="http"
# instance group named ports
gcloud compute instance-groups set-named-ports "$GROUP_NAME" --named-ports "$PORT_NAME:$NODE_PORT"
# health check
gcloud compute http-health-checks create --format none "$HEALTH_CHECK_NAME" --check-interval "5m" --healthy-threshold "1" --timeout "5m" --unhealthy-threshold "10"
# backend service
gcloud compute backend-services create "$BACKEND_SERVICE_NAME" --http-health-check "$HEALTH_CHECK_NAME" --port-name "$PORT_NAME" --timeout "30"
gcloud compute backend-services add-backend "$BACKEND_SERVICE_NAME" --instance-group "$GROUP_NAME" --balancing-mode "UTILIZATION" --capacity-scaler "1" --max-utilization "1"
# URL map
gcloud compute url-maps create "$URL_MAP_NAME" --default-service "$BACKEND_SERVICE_NAME"
# target proxy
gcloud compute target-http-proxies create "$TARGET_PROXY_NAME" --url-map "$URL_MAP_NAME"
# global forwarding rule
gcloud compute forwarding-rules create "$GLOBAL_FORWARDING_RULE_NAME" --global --ip-protocol "TCP" --ports "80" --target-http-proxy "$TARGET_PROXY_NAME"
을하지만 난 프런트 엔드 구성에서 공용 IP를 통해 액세스로드 밸런서에서 다음과 같은 응답 얻을 : 건강 체크가 남아
Error: Server Error
The server encountered a temporary error and could not complete your request. Please try again in 30 seconds.
을 기본값은 (/
및 80
)이며 백엔드 서비스는 상태가 200
입니다.
모든 소스 및 모든 포트 (tcp
)를 수용하고 대상 지정이없는 (즉, 모든 대상) 방화벽 규칙을 만들었습니다.
내가 선택한 (인스턴스 그룹에서) 포트와 관계없이 동일한 결과 (Server Error
)를 얻게되면 문제는 HTTP로드 균형 조정기의 구성에 있어야합니다. (아마도 건강 검사가있는 것입니까?)
프론트 엔드와 백엔드 사이의 링크를 완성하지 못한 것은 무엇입니까?
실제 HTTP 응답 코드는 무엇입니까? 5xx? – jarmod
502 불량 게이트웨이 –
건강 진단을 진단 하시겠습니까? https://cloud.google.com/compute/docs/load-balancing/http/backend-service#health_checking – jarmod