GKE 负载均衡器连接被拒绝

GKE Load Balancer Connection Refused

我正在尝试在 GKE 上设置我的应用程序并使用内部负载均衡器进行 public 访问。我能够毫无问题地部署集群/负载均衡器服务,但是当我尝试访问负载均衡器的外部 ip 地址时,我得到连接被拒绝并且我不确定出了什么问题/如何调试它。

这些是我执行的步骤:

我通过 kubectl apply -f file.yaml 应用了我的部署 yaml 文件,然后,我通过 kubectl apply -f service.yaml 应用了我的负载均衡器服务 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 并查看我的网络应用程序。

我希望这是足够的信息;如果还有什么我可能遗漏/可以添加的,请告诉我。

谢谢大家!

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

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

删除此注释:

  annotations:
    cloud.google.com/load-balancer-type: "Internal"

您需要外部负载均衡器。