代码之家  ›  专栏  ›  技术社区  ›  Robert Lacok

连接拒绝连接到Kubernetes中的GCP LoadBalancer

  •  6
  • Robert Lacok  · 技术社区  · 8 年前

    当我在GCP中的Kubernetes引擎中创建部署和服务时,我得到了无明显原因的拒绝连接。

    该服务在GCP中创建一个负载平衡器,所有相应的防火墙规则都已就绪(允许从 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
    
    2 回复  |  直到 5 年前
        1
  •  7
  •   Robert Lacok    5 年前

    这对我来说是一个愚蠢的错误。gunicorn服务器正在使用绑定到 127.0.0.1 而不是 0.0.0.0 ,所以它不能从舱外进入,但当我 exec -ed进入吊舱。

    在我的案例中,修复方法是将Dockerfile的入口点更改为

    CMD [ "gunicorn", "server:app", "-b", "0.0.0.0:8000", "-w", "3" ]
    

    重建映像并更新部署。

        2
  •  0
  •   Rob Davis    8 年前

    服务是否绑定到您的pod?“kubectl Description svc my app”是怎么说的?

    确保它在正确的端口传输到您的pod?假设您使用的是GCP上的一个实例,您也可以尝试卷曲pod的IP和端口,确保其响应正常?

    即,kubectl获得吊舱-o宽,将告诉您吊舱的IP

    curl ipofpod:8000行吗?

    推荐文章