aks 环境中的 kubernetes,nginx 入口 404 Not Found nginx

问题描述 投票:0回答:1

我有一个 dns 映射到我的 aks 负载均衡器的外部 IP,在负载均衡器下方有一个 nginx 入口控制器,它与我的集群中的服务的入口进行通信。

当我尝试访问我的 dns 时,例如:mydns/post/test,我收到 nginx 404 错误。看起来 nginx 回答正确,但没有找到内部路由映射。

下面我重写了这个实现的所有步骤。

通过此命令安装nginx:

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.8.2/deploy/static/provider/cloud/deploy.yaml

使用命令:

kubectl 获取所有 -n ingress-nginx

我看到这个结果:

我用这个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

还有售后服务:

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 错误?

谢谢

kubernetes nginx kubernetes-ingress azure-aks nginx-ingress
1个回答
0
投票

请使用

kubectl logs -n ingress-nginx <your-ingress-controller-pod-name>
检查您的 Pod 日志,以深入了解路由或连接到 Spring Boot 应用程序的任何问题。

我可以看到,在您的 Ingress YAML 中,您已将路径定义为

/
pathType: Prefix
。这意味着 Ingress 会将具有指定前缀的流量路由到指定的后端服务。

但是,当您尝试访问 URL

mydns/post/test
时,它与 Ingress 中指定的路径 (
/
) 不匹配。相反,您正在尝试到达
/test
上的
post-service
路径。

尝试如下修改您的入口 YAML

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: service-ingress
  annotations:
    kubernetes.io/ingress.class: nginx
spec:
  rules:
    - http:
        paths:
          - path: /post/test
            pathType: Prefix
            backend:
              service:
                name: post-service
                port:
                  number: 8080

使用重新涂抹。

enter image description here

kubectl apply -f service-ingress.yaml

enter image description here

对“/post/test”的请求将被正确路由到您的服务。

参考文档:

MS 文档

类似的SO线程

类似的SO线程

将 DNS 映射到外部 IP

© www.soinside.com 2019 - 2024. All rights reserved.