经过几天的研究,我认为this是目前最有价值的答案,我试图从这个想法中找到出路,只需将tcp协议从端口转发到相应的服务即可。但到目前为止我还没有运气。
如有任何建议,我们将不胜感激。
环境:
使用端口转发检查是否能够连接到 5672 后
# Allow 5672/tcp port accessible from everywhere
ufw allow 5672/tcp
# port forwarding
kubectl port-forward rabbitmq-0 5672:5672
# Checking connection success from local
telnet localhost 5672
# Checking connection failed from any other machine
telnet <my-vps-ip> 5672
我确定没有其他防火墙,因为我只使用 ufw 命令来公开其他端口,它们都工作正常。
有什么想法吗?
--tcp-services-configmap
部署中的 ingress-nginx-controller
标记
检查端口 5672 也已在
ingress-nginx-controller
部署中使用命令 kubectl get deploy ingress-nginx-controller -n ingress-nginx -o yaml
进行了修补
检查端口 5672 也已在
ingress-nginx-controller
服务中使用命令 kubectl get svc ingress-nginx-controller -n ingress-nginx -o yaml
进行了修补
但是现在,即使通过命令
telnet localhost 5672
进行本地测试也失败了,之前使用端口转发成功了。
我是不是漏掉了什么?
我最终使用了负载均衡器服务。这是它的做法
apiVersion: v1
kind: Service
metadata:
name: amqp-expose
namespace: rabbitmq
spec:
ports:
- name: amqp
protocol: TCP
port: 5672
targetPort: 5672
selector:
app.kubernetes.io/name: rabbitmq
app.kubernetes.io/instance: rabbitmq
type: LoadBalancer
sessionAffinity: None
externalTrafficPolicy: Cluster