1

GCP의 Kubernetes Engine에서 배포 및 서비스를 만들 때 명백한 이유없이 연결이 거부됩니다.Kubernetes의 GCP LoadBalancer에 연결이 거부되었습니다.

서비스가 GCP에로드 밸런서를 만들고 해당 방화벽 규칙이 모두 적용됩니다 (포트 80에 대한 트래픽을 0.0.0.0/0에서 허용 함). 기본 서비스가 정상적으로 실행되고 있는데 kubectl exec 포드에 넣고 curl localhost:8000/ 올바른 응답을 얻습니다.

이 배포 다른 이미지를 위해 잘 작동하는 데 사용 설정하지만, 어제와 오늘 내가

curl: (7) Failed to connect to 35.x.x.x port 80: Connection refused

은 어떤 문제가 될 수가 계속? 나는 서비스를 여러 번 삭제하고 다시 만들려고했지만 운이 없었습니다.

kind: Service 
apiVersion: v1 
metadata: 
    name: my-app 
spec: 
    selector: 
    app: app 
    type: LoadBalancer 
    ports: 
    - protocol: TCP 
    port: 80 
    targetPort: 8000 
--- 
apiVersion: apps/v1beta2 
kind: Deployment 
metadata: 
    name: my-app 
spec: 
    replicas: 1 
    selector: 
    matchLabels: 
     app: app 
    template: 
    metadata: 
     labels: 
     app: app 
    spec: 
     containers: 
     - name: my-app 
     image: gcr.io/myproject/my-app:0.0.1 
     imagePullPolicy: Always 
     ports: 
     - containerPort: 8000 

답변

1

이것은 내 부분에서 바보 같은 실수로 밝혀졌습니다. gunicorn 서버는 0.0.0.0 대신 127.0.0.1에 바인드를 사용 했으므로 포드 바깥 쪽에서는 액세스 할 수 없지만 포드에 exec -ed를 입력하면 작동했습니다.

제 경우의 수정으로 Dockerfile의 진입 점이 CMD [ "gunicorn", "server:app", "-b", "0.0.0.0:8000", "-w", "3" ] 으로 변경되어 배포가 업데이트되었습니다.

+0

안녕하세요 @ 로버트 - 라콕! 문제 해결 방법에 대해 좀 더 자세히 설명해 주시겠습니까? 재배포해야 했습니까? 구성 만 편집 하시겠습니까? – Nigini

0

서비스가 귀하의 광고 모음에 바인딩되어 있습니까? "kubectl이 내 앱을 설명하는"무엇이라고 말합니까?

올바른 포트의 포드로 전송되는지 확인하십시오. 또한 GCP에서 인스턴스를 사용한다고 가정하면 IP 및 포드의 포트를 말끔히 처리하여 응답해야하는지 확인할 수 있습니다. 8000 일 : 포드가하는이 컬 ipofpod 포드

당신에게 IP를 말할 것이다, 넓은 -o

를 얻을 kubectl?

+0

잘 바인딩되어있는 것처럼 보입니다. 포드의 IP는 끝점 사이에 나열됩니다. ipofpod : port를 컬링 할 때 동일한 네트워크의 GKE 노드 또는 VM 내에서 동일한 오류, 연결 거부가 발생합니다. –

+0

포드에 ping을 수행 할 수 있습니까? –

+0

VM에 방화벽 규칙이 있는지 궁금하십니까? –