【发布时间】:2020-09-18 04:42:31
【问题描述】:
我一直在尝试在 kubernetes 集群上部署 Spring Boot 应用程序。但不知何故,我无法从集群外部访问其余端点。
这是我执行的步骤
按照指南使用 kubespray 设置 kubernetes 集群 - Kubernetes Cluster setup using Kubespray
将 spring boot docker 镜像推送到 docker hub
已创建 kubernetes 部署
vagrant@node1:~/spring-boot$ kubectl create deployment demo --image=rahulwagh17/kubernetes:jhooq-k8s-springboot
deployment.apps/demo created
- 使用外部 IP = 1.1.1.1 公开部署
kubectl expose deployment demo --type=LoadBalancer --name=demo-service --external-ip=1.1.1.1 --port=8080
service/demo-service exposed
- 这就是我的部署的样子
vagrant@node1:~/spring-boot$ kubectl get deployment
NAME READY UP-TO-DATE AVAILABLE AGE
demo 1/1 1 1 24s
- 这就是我的服务的外观
vagrant@node1:~/spring-boot$ kubectl get service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
demo-service LoadBalancer 10.233.31.159 1.1.1.1 8080:30099/TCP 13s
kubernetes ClusterIP 10.233.0.1 <none> 443/TCP 23h
- 我可以毫无问题地卷曲集群内的其余端点
vagrant@node1:~/spring-boot$ curl 10.233.31.159:8080/hello
Hello - Jhooq-k8s
我面临的问题 - 当我试图从集群外部卷曲休息点时,我做不到
$ curl http://1.1.1.1:30099/hello
curl: (7) Failed to connect to 1.1.1.1 port 30099: Operation timed out
我对 Kubernetes 并不陌生,因此非常感谢任何线索或建议
【问题讨论】:
-
当你说集群外?你到底是什么意思?从主机还是什么?
-
你确实在报道
1.1.1.1对吗?你有允许 30099 的防火墙规则吗? -
在集群之外 - 我的意思是当我试图从我的笔记本电脑浏览器访问它时。 (我在笔记本电脑上设置了 kubernetes 集群,所以我所做的一切都是在笔记本电脑上进行的。所以从 kubernetes 集群中公开服务,我希望它可以从笔记本电脑访问)
-
@suren - 我已经禁用了防火墙 - vagrant@node1:~/spring-boot$ sudo ufw disable 防火墙在系统启动时停止并禁用
-
1.1.1.1IP 地址是您控制的吗?是否有一个代理服务器正在那里运行,侦听可以转发到您的集群的 30099 端口?
标签: spring spring-boot docker kubernetes