【问题标题】:kubernetes nodeport external ip not accessibleKubernetes nodeport 外部 ip 不可访问
【发布时间】:2020-09-18 04:42:31
【问题描述】:

我一直在尝试在 kubernetes 集群上部署 Spring Boot 应用程序。但不知何故,我无法从集群外部访问其余端点。

这是我执行的步骤

  1. 按照指南使用 kubespray 设置 kubernetes 集群 - Kubernetes Cluster setup using Kubespray

  2. 将 spring boot docker 镜像推送到 docker hub

  3. 已创建 kubernetes 部署

vagrant@node1:~/spring-boot$ kubectl create deployment demo --image=rahulwagh17/kubernetes:jhooq-k8s-springboot
deployment.apps/demo created
  1. 使用外部 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
  1. 这就是我的部署的样子
vagrant@node1:~/spring-boot$ kubectl get deployment
NAME   READY   UP-TO-DATE   AVAILABLE   AGE
demo   1/1     1            1           24s
  1. 这就是我的服务的外观
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
  1. 我可以毫无问题地卷曲集群内的其余端点
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.1 IP 地址是您控制的吗?是否有一个代理服务器正在那里运行,侦听可以转发到您的集群的 30099 端口?

标签: spring spring-boot docker kubernetes


【解决方案1】:

请通过以下方法尝试: 通过节点端口:- 表示NodeIP:NodePort,在这种情况下,请获取任何节点IP,然后运行命令

curl http://$NODE_IP:30099/hello

您应该能够访问您的服务。

【讨论】:

  • 冰壶 - 1.1.1.1:8080 或从浏览器访问 1.1.1.1:8080 不起作用
  • type=LoadBalancer 服务由外部云提供商提供支持
  • 通过NodePort尝试
  • 是的,已经尝试使用 NodePort,但没有成功 kubectl expose deployment demo --type=NodePort --name=demo-service --external-ip=1.1.1.1 --port= 8080 vagrant@node1:~/spring-boot$ kubectl get service NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE demo-service NodePort 10.233.39.41 1.1.1.1 8080:31901/TCP 4s
  • 现在,使用这个你必须点击http:$VAGRANTIP:31901
猜你喜欢
  • 2021-10-20
  • 1970-01-01
  • 2020-03-19
  • 2020-07-02
  • 2021-05-31
  • 1970-01-01
  • 2020-10-04
  • 1970-01-01
  • 2020-05-01
相关资源
最近更新 更多