簡體   English   中英

Kubernetes Nginx 入口返回 502 Bad Gateway 使用主機文件

[英]Kubernetes Nginx Ingress returning 502 Bad Gateway using hosts file

成功部署應用程序后(pod 看起來沒問題,日志沒問題),我創建了 ClusterIP 服務,然后創建了 NGINX Ingress 並將主機添加到主機文件。 當我嘗試訪問posts.com/posts時,出現 502 bad gateway 錯誤。

ingress-srv.yaml

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-srv
  annotations:
    nginx.ingress.kubernetes.io/service-upstream: "true"
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - host: posts.com
    http:
      paths:
      - path: /posts
        pathType: Prefix
        backend:
          service:
            name: posts-clusterip-srv
            port:
              number: 4000

posts-depl.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: posts-depl
spec:
  replicas: 1
  selector:
    matchLabels:
      app: posts
  template:
    metadata:
      labels:
        app: posts
    spec:
      containers:
        - name: posts
          image: myUser/posts
          resources:
            limits:
              memory: 512Mi
              cpu: "1"
            requests:
              memory: 256Mi
              cpu: "0.2"
          ports:
            - containerPort: 4000
---
apiVersion: v1
kind: Service
metadata:
  name: posts-clusterip-srv
spec:
  selector:
    app: posts
  ports:
    - name: posts
      protocol: TCP
      port: 4000
      targetPort: 4000
##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1   localhost
255.255.255.255 broadcasthost
::1 localhost
127.0.0.1   posts.com
# Added by Docker Desktop
# To allow the same kube context to work on the host and the container:
127.0.0.1 kubernetes.docker.internal
# End of section

Dockerfile

FROM node:alpine

WORKDIR /app
COPY package.json ./
RUN npm install
COPY ./ ./

CMD ["npm", "start"]

可能是什么問題,至少我應該在哪里尋找?

我看到兩個問題 - 試試這些,讓我知道它是否有幫助:

  1. 您的 Ingress 清單中缺少pathType 必須提供此信息,否則 Kubernetes 將無法理解它是完全匹配還是前綴匹配。 這里閱讀更多。 (我看到@Sahadat 正確地指出了這一點,但不知何故刪除了他的答案)。
  2. 您的部署清單中缺少端口號,應該如下所示:
spec:
  containers:
    - name: posts
      image: myuser/posts
      ports:
      - containerPort: 4000

更新 1:

另一個潛在問題可能是您的主機文件中的此條目 - 127.0.0.1 posts.com ,刪除它並嘗試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM