【发布时间】:2020-07-07 21:15:45
【问题描述】:
我正在使用 CoreOS Kubernetes 在 Vultr 公共云上运行。我正在配置一个入口控制器,以便可以访问我的后端 SpringBoot 服务。
我有一个 Spring Boot 服务“springboot”在端口 30123 上运行。
我从 Kubernetes 文档中获得了这个入口 yaml,并修改了我的服务:
ingress.yaml
------------
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: test-ingress
spec:
backend:
serviceName: springboot
servicePort: 31922
kubectl 获取
名称主机地址端口年龄
测试入口 * 80 2m
curl mydns.com 连接被拒绝。
我不确定我是否理解它应该如何工作。
有人可以帮忙吗?
谢谢
【问题讨论】:
-
您是否启动了 Ingress Controller?仅 Ingress 是不够的。它定义了哪些服务应该为哪些请求提供服务,但是您需要运行一个 Ingress Controller,该控制器读取该 Ingress 并运行一个代理服务器(例如 Nginx),该服务器实际上将请求转发到您的服务。参见例如github.com/kubernetes/ingress/tree/master/controllers/nginx
-
我已经尝试了几个文档。我想知道是否有一些简单的示例仅显示带有配置域名的入口控制器的入口规则。
-
servicePort: 31922看起来目标服务是 NodePort 类型,它应该是ClusterIP类型。我没有使用 Vultr 的经验,但我的想法是将云 LB 定向到 nginx 入口控制器。当这部分工作时,每个服务负责提供它自己的入口规则。入口控制器正在所有命名空间中侦听具有某些注释的服务(例如kubernetes.io/ingress.class: nginx)。当新服务启动时,入口控制器将自动更新其内部配置。