首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >nginx-ingress使用默认上游127.0.0.1:8181

nginx-ingress使用默认上游127.0.0.1:8181
EN

Stack Overflow用户
提问于 2020-12-01 01:20:16
回答 2查看 421关注 0票数 0

我是Kubernetes的新手,也许我的问题很愚蠢,但我不知道如何解决它

我使用这个手册https://docs.nginx.com/nginx-ingress-controller/installation/installation-with-manifests/创建了一个带有nodePort服务的nginx-ingress部署

代码语言:javascript
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-ingress
  namespace: nginx-ingress
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx-ingress
  template:
    metadata:
      labels:
        app: nginx-ingress
    spec:
      serviceAccountName: nginx-ingress
      containers:
      - image: nginx/nginx-ingress:1.9.1
        imagePullPolicy: Always
        name: nginx-ingress
        ports:
        - name: http
          containerPort: 80
        - name: readiness-port
          containerPort: 8081
        readinessProbe:
          httpGet:
            path: /nginx-ready
            port: readiness-port
          periodSeconds: 1
        securityContext:
          allowPrivilegeEscalation: true
          runAsUser: 101 #nginx
          capabilities:
            drop:
            - ALL
            add:
            - NET_BIND_SERVICE
        env:
        - name: POD_NAMESPACE
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace
        - name: POD_NAME
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
        args:
          - -nginx-configmaps=$(POD_NAMESPACE)/nginx-config
          - -default-server-tls-secret=$(POD_NAMESPACE)/default-server-secret

和服务:

代码语言:javascript
复制
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

并使用服务创建部署:

代码语言:javascript
复制
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

然后添加入口:

代码语言:javascript
复制
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-ingress POD中,我看到了默认的上行后端,

代码语言:javascript
复制
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;

}

我做错了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-12-01 17:59:50

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

票数 1
EN

Stack Overflow用户

发布于 2020-12-01 05:38:48

这就是nginx入口的工作方式。这里没有什么问题。默认的后端是处理nginx控制器无法理解的所有URL路径。因此,在您的示例中,任何期望landing.site/的请求都将由默认的后端提供服务,并显示一个通用的404nginx错误页面。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65078184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档