nginx入口使用默认上游127.0.0.1:8181

nginx入口使用默认上游127.0.0.1:8181,nginx,kubernetes,Nginx,Kubernetes,我是库伯内特斯的新手,也许我的问题很愚蠢,但我不知道如何解决它 我使用本手册创建了一个带有nodePort服务的nginx入口部署 和服务: apiVersion: v1 kind: Service metadata: name: nginx-ingress namespace: nginx-ingress spec: type: NodePort ports: - port: 80 targetPort: 80 protocol: TCP

我是库伯内特斯的新手,也许我的问题很愚蠢,但我不知道如何解决它

我使用本手册创建了一个带有nodePort服务的nginx入口部署

和服务:

apiVersion: v1
kind: Service
metadata:
  name: nginx-ingress
  namespace: nginx-ingress
spec:
  type: NodePort
  ports:
    - port: 80
      targetPort: 80
      protocol: TCP
      name: http
      nodePort: 30369
  selector:
    app: nginx-ingress
并使用服务创建部署:

apiVersion: apps/v1
kind: Deployment
metadata:
  namespace: landing
  name: landing
  labels:
    app:landing
spec:
  replicas: 1
  selector:
    matchLabels:
      app: landing
  template:
    metadata:
      labels:
        app: landing
        namespace: landing
    spec:
      containers:
      - name: landing
        image: private-registry/landing
        imagePullPolicy: Always
        ports:
          - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: landing
  namespace: landing
spec:
  selector:
    app: landing
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
然后我添加入口:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: landing
  namespace: landing
  annotations:
    kubernetes.io/ingress.class: "nginx"
spec:
  ingressClassName: nginx
  rules:
  - host: landing.site
    http:
      paths:
      - path: /
        backend:
          serviceName: landing
          servicePort: 80
但在nginx入口吊舱中,我看到了默认的上游后端

upstream default-landing-landing.site-landing-80 {
    zone default-landing-landing.site-landing-80 256k;
    random two least_conn;

    server 127.0.0.1:8181 max_fails=1 fail_timeout=10s max_conns=0;

}

我做错了什么?

这就是nginx入口的工作原理。这里没有什么问题。 默认后端处理nginx控制器不理解的所有URL路径。
因此,在您的情况下,除了landing.site/之外的任何请求都将由默认后端提供,并显示一个通用的404 nginx错误页面。

好吧,我太傻了:)我有另一个入口在同一主机的默认后端。删除它,一切正常

它是什么类型的群集?埃克斯?裸金属?GKE?AKS?它是裸机,但所有的登陆请求都会转到默认后端。nginx为所有landing.site请求服务的配置应该是什么样的?在nginx pod中,除了默认的上游后端之外,没有其他配置。好的,您可以从ingress资源的spec部分删除ingressClassName字段并应用配置文件。删除它,但不要更改config/etc/nginx/conf.d/default-landing.conf
upstream default-landing-landing.site-landing-80 {
    zone default-landing-landing.site-landing-80 256k;
    random two least_conn;

    server 127.0.0.1:8181 max_fails=1 fail_timeout=10s max_conns=0;

}