我有一个DNSMap到我的aks负载均衡器的外部IP,负载均衡器下面有一个nginx入口控制器,它与我集群中服务的入口通信。
当我尝试访问我的dns像:mydns/post/test我收到nginx 404错误。似乎nginx回答正确,但没有找到内部路由Map。
下面我重写了这个实现的所有步骤。
通过以下命令安装nginx:
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.8.2/deploy/static/provider/cloud/deploy.yaml
字符串
命令:
kubectl get all -n ingress-nginx
我看到这个结果:x1c 0d1x
我用这个yaml创建了nginx控制的入口:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: service-ingress
annotations:
kubernetes.io/ingress.class: nginx
spec:
rules:
- http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: post-service
port:
number: 8080
型
关于Post-Service:
apiVersion: v1
kind: Service
metadata:
name: post-service
spec:
selector:
app.kubernetes.io/name: post
ports:
- port: 8080
targetPort: 8080
The service communicate with a pod that containt a test endpoint(spring boot app, works
型
通过转发端口正确测试):
@RestController
@Slf4j
public class PostController {
@GetMapping("/test")
String all() {
return "Hello!";
}
}
型
为什么我会收到nginx 404错误?
谢谢
1条答案
按热度按时间hrysbysz1#
请使用
kubectl logs -n ingress-nginx <your-ingress-controller-pod-name>
检查您的Pod日志一次,以深入了解路由或连接到Sping Boot 应用程序的任何问题。我可以看到,在你的Ingress YAML中,你已经定义了路径为
/
和pathType: Prefix
。这意味着Ingress会将指定前缀的流量路由到指定的后端服务。但是,当您尝试访问URL
mydns/post/test
时,它与Ingress(/
)中的指定路径不匹配。相反,您正在尝试访问post-service
上的/test
路径。尝试修改你的ingress YAML如下
字符串
重新使用。
x1c 0d1x的数据
型
的
对“/post/test”的请求将被正确地路由到您的服务。
参考文件:
MS Doc
Similar SO Thread的
Similar SO thread
Map DNS to external IP的