簡體   English   中英

當 kubernetes ingress-nginx 在 docker windows 上運行時,找不到 404 頁面

[英]404 page not found when kubernetes ingress-nginx is run on docker windows

I am running docker on windows machine and trying to access the http://posts.com/posts as I get HTTP Error 404.0 - Not Found.

windows 主機配置文件已正確配置

127.0.0.1 個帖子。com

因為我可以瀏覽到http://posts.com

我也可以使用端口號http://posts.com:31783/posts訪問。

我不確定為什么我無法通過端口 80 訪問。

以下是來自 kubernetes 的日志

在此處輸入圖像描述

在此處輸入圖像描述

和入口配置

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata: 
    name: ingress-srv
    annotations: 
        kubernetes.io/ingress.class: nginx
spec:
  rules: 
    - host: posts.com
      http:
        paths:
          - path: /posts
            backend:
              serviceName: posts-clusterip-srv            
              servicePort: 4000

部署和服務文件

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: nishank/posts:latest
---
apiVersion: v1
kind: Service
metadata:
    name: posts-clusterip-srv
spec:
    type: ClusterIP
    selector:
        app: posts
    ports:
        - name: posts
          protocol: TCP
          port: 4000
          targetPort: 4000

好吧,我終於有解決這個問題的辦法了。

首先,這個問題參考了 Stephen Grider 的 Microservices with Node JS and React 課程。 我知道這一點是因為嘗試的服務/配置直接來自課程內容。

在您的 Windows PC 上運行的東西已經在使用端口 80,這就是您收到 404 的原因。要找出執行此操作的進程,首先在 powershell / Z0F4137ED1502B50445D608C 終端實例中運行以下命令:

netstat -ano | findstr ":80" | findstr "LISTENING"

您將看到類似以下內容:

❯ netstat -ano | findstr ":80" | findstr "LISTENING"
TCP    0.0.0.0:80             0.0.0.0:0              LISTENING       13056
TCP    [::]:80                [::]:0                 LISTENING       13056
TCP    [::1]:80               [::]:0                 LISTENING       16852

注意到端口 0.0.0.0 上的 PID 偵聽后,使用“Ctrl+Alt+Delete”和 go 打開任務管理器到詳細信息選項卡。 按 PID 排序並找到您發現偵聽端口 80 的進程。當我遇到問題時,PID 為 4。

有時進程名稱是不同的,有時它只會被稱為“系統”。 所以不管名稱如何,右鍵單擊名稱並單擊“打開文件位置”。

如果您被帶到“ntoskrnl.exe”,那么罪魁禍首很可能是“World Wide Web Publishing Service”。 您可以通過在 Windows 搜索欄中鍵入“服務”,打開服務並在列表中找到它來檢查這一點。 如果它正在運行,則 go 向前並停止它。

如果不是這種情況,那么還有其他服務/流程也會阻礙。 這里的 Stackoverflow 有一堆來自其他人的響應,其他進程位於端口 80。

一旦你解決了這個問題,再次使用你的服務:

kubectl apply -f ingress-srv.yaml

你應該對go很好。

暫無
暫無

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

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