我试图在GKE上设置我的应用,并使用内部负载平衡器进行公共(public)访问。我能够部署群集/负载平衡器服务而没有任何问题,但是当我尝试访问负载平衡器的外部ip地址时,我得到了Connection Refused,并且我不确定什么是错误的/如何进行调试。

这些是我执行的步骤:

我通过yaml应用了部署kubectl apply -f file.yaml文件,然后,我将负载均衡器服务yaml文件与kubectl apply -f service.yaml一起应用了。部署完两者后,我做了kubectl get service从负载均衡器获取外部IP地址。

这是我的deployment.yaml文件:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 1
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
        - name: my-app-api
          image: gcr.io/...
          ports:
            - containerPort: 8000
          resources:
            requests:
              memory: "250M"
              cpu: "250m"
            limits:
              memory: "1G"
              cpu: "500m"
        - name: my-app
          image: gcr.io/...
          ports:
            - containerPort: 3000
          resources:
            requests:
              memory: "250M"
              cpu: "250m"
            limits:
              memory: "1G"
              cpu: "500m"

这是我的service.yaml文件:
apiVersion: v1
kind: Service
metadata:
  name: my-app-ilb
  annotations:
    cloud.google.com/load-balancer-type: "Internal"
  labels:
    app: my-app-ilb
spec:
  type: LoadBalancer
  selector:
    app: my-app
  ports:
  - port: 3000
    targetPort: 3000
    protocol: TCP


我的部署文件有两个容器。后端api和前端。我想发生的是,我应该能够继续使用[external ip address]:3000并查看我的Web应用程序。

我希望这是足够的信息;请让我知道是否还有其他可能丢失/可以添加的内容。

谢谢你们!

最佳答案

您需要通过创建防火墙规则来允许流量流入您的群集。

gcloud compute firewall-rules create my-rule --allow=tcp:3000

删除此注释:
  annotations:
    cloud.google.com/load-balancer-type: "Internal"

您需要外部负载均衡器。

关于networking - GKE负载平衡器连接被拒绝,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58702818/

10-15 23:21