【问题标题】:NGINX Ingress 404 not found using docker desktop on windows (not minikube)在 Windows 上使用 docker 桌面找不到 NGINX Ingress 404(不是 minikube)
【发布时间】:2021-11-26 18:35:18
【问题描述】:

我正在尝试让这个基本示例在 windows 上的 docker 桌面上运行,我没有使用 minikube

我设法通过以下方式使用 NodePort 访问服务:

http://localhost:31429

但是当我尝试http://hello-world.info(确保将其添加到主机中)-404 not found

kubectl get svc --all-namespaces
NAMESPACE       NAME                                 TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)                      AGE
default         kubernetes                           ClusterIP      10.96.0.1        <none>        443/TCP                      20m
default         web                                  NodePort       10.111.220.81    <none>        8080:31429/TCP               6m47s
ingress-nginx   ingress-nginx-controller             LoadBalancer   10.107.29.182    localhost     80:30266/TCP,443:32426/TCP   19m
ingress-nginx   ingress-nginx-controller-admission   ClusterIP      10.101.138.244   <none>        443/TCP                      19m
kube-system     kube-dns                             ClusterIP      10.96.0.10       <none>        53/UDP,53/TCP,9153/TCP       20m



kubectl get ingress
NAME              CLASS    HOSTS              ADDRESS   PORTS   AGE
example-ingress   <none>   hello-world.info             80      21m

我迷路了,有人可以帮忙吗? 我还注意到 ADDRESS 是空的。

非常感谢。

【问题讨论】:

  • Hello @dev1334 您可以尝试以下步骤: 1. 检查您的 /etc/hosts 文件 - 是否已经存在 127.0.0.1 kubernetes.docker.internal 行 2. 如果是,则更新您的入口控制器。将- host: hello-world.info 更改为- host: kubernetes.docker.internal 3. 还为您的入口控制器添加下一个注释kubernetes.io/ingress.class: "nginx"

标签: windows docker nginx kubernetes docker-desktop


【解决方案1】:

在 Docker Desktop 4.1.1、Windows 10 Pro 上重现此案例

  1. 安装Ingress Controller for Docker Desktop:

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

  2. 据我了解,@dev1334 使用了来自Set up Ingress on Minikube with the NGINX Ingress Controller 文章的示例。我还尝试了对原始示例进行一些修改。

  3. spec.rules 部分中example-ingress.yaml 文件的示例中,指定了主机hello-world.info。由于 Docker Desktop for Windows 在安装期间添加到 C:\Windows\System32\drivers\etc\hosts 中的主机文件,因此以下条目:127.0.0.1 kubernetes.docker.internal 我将 example-ingress.yaml 中的主机从 hello-world.info 更改为 kubernetes.docker.internal

  4. 但由于以下错误,Ingress 仍然无法按预期工作: "Ignoring ingress because of error while validating ingress class" ingress="default/example-ingress" error="ingress does not contain a valid IngressClass"

    我将这一行 kubernetes.io/ingress.class: "nginx" 添加到 example-ingress.yaml 的注释部分

所以,example-ingress.yaml 文件的最终版本如下。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: example-ingress
  annotations:
    kubernetes.io/ingress.class: "nginx"
    nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
  rules:
    - host: kubernetes.docker.internal
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: web
                port:
                  number: 8080
          - path: /v2
            pathType: Prefix
            backend:
              service:
                name: web2
                port:
                  number: 8080

测试结果

C:\Users\Andrew_Skorkin>kubectl get po -A
NAMESPACE       NAME                                        READY   STATUS      RESTARTS   AGE
default         web-79d88c97d6-c8xnf                        1/1     Running     0          112m
default         web2-5d47994f45-cxtzm                       1/1     Running     0          94m
ingress-nginx   ingress-nginx-admission-create-sjdcq        0/1     Completed   0          114m
ingress-nginx   ingress-nginx-admission-patch-wccc9         0/1     Completed   1          114m
ingress-nginx   ingress-nginx-controller-5c8d66c76d-jb4w9   1/1     Running     0          114m
...

C:\Users\Andrew_Skorkin>kubectl get svc -A
NAMESPACE       NAME                                 TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)                      AGE
default         kubernetes                           ClusterIP      10.96.0.1        <none>        443/TCP                      7d15h
default         web                                  NodePort       10.101.43.157    <none>        8080:32651/TCP               114m
default         web2                                 NodePort       10.100.4.84      <none>        8080:30081/TCP               96m
ingress-nginx   ingress-nginx-controller             LoadBalancer   10.106.138.217   localhost     80:30287/TCP,443:32664/TCP   116m
ingress-nginx   ingress-nginx-controller-admission   ClusterIP      10.111.208.242   <none>        443/TCP                      116m
kube-system     kube-dns                             ClusterIP      10.96.0.10       <none>        53/UDP,53/TCP,9153/TCP       7d15h

C:\Users\Andrew_Skorkin>curl kubernetes.docker.internal
Hello, world!
Version: 1.0.0
Hostname: web-79d88c97d6-c8xnf

C:\Users\Andrew_Skorkin>curl kubernetes.docker.internal/v2
Hello, world!
Version: 2.0.0
Hostname: web2-5d47994f45-cxtzm

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-26
    • 2021-09-26
    • 2020-12-25
    • 2020-05-24
    • 2021-12-18
    • 2021-01-16
    • 1970-01-01
    • 2021-01-29
    相关资源
    最近更新 更多