我试图在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/