【问题标题】:Run Ingress in minikube and its address shows localhost在 minikube 中运行 Ingress,它的地址显示为 localhost
【发布时间】:2022-01-14 02:45:27
【问题描述】:

我是 k8s 的新手。我在 minikube 上部署了一个入口,我发现它的地址是 localhost,我猜它不应该是。为此,我不知道如何继续,因为我应该编辑 /etc/hosts/ 以添加 dns 项,但我不能。

这是我的配置文件

kiloson@ubuntu:~$ cat kubia-ingress.yaml 
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: kubia
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
  rules:
  - host: kubia.example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service: 
            name: kubia-nodeport
            port: 
              number: 80

minikube 版本

kiloson@ubuntu:~$ minikube version
minikube version: v1.24.0
commit: 76b94fb3c4e8ac5062daf70d60cf03ddcc0a741b

Ubuntu 信息

kiloson@ubuntu:~$ neofetch
            .-/+oossssoo+/-.               kiloson@ubuntu 
        `:+ssssssssssssssssss+:`           -------------- 
      -+ssssssssssssssssssyyssss+-         OS: Ubuntu 20.04.3 LTS x86_64 
    .ossssssssssssssssssdMMMNysssso.       Host: Virtual Machine 7.0 
   /ssssssssssshdmmNNmmyNMMMMhssssss/      Kernel: 5.11.0-1022-azure 
  +ssssssssshmydMMMMMMMNddddyssssssss+     Uptime: 2 hours, 33 mins 
 /sssssssshNMMMyhhyyyyhmNMMMNhssssssss/    Packages: 648 (dpkg), 4 (snap) 
.ssssssssdMMMNhsssssssssshNMMMdssssssss.   Shell: bash 5.0.17 
+sssshhhyNMMNyssssssssssssyNMMMysssssss+   Terminal: /dev/pts/0 
ossyNMMMNyMMhsssssssssssssshmmmhssssssso   CPU: Intel Xeon E5-2673 v4 (2) @ 2.294GHz 
ossyNMMMNyMMhsssssssssssssshmmmhssssssso   GPU: 00:08.0 Microsoft Corporation Hyper-V virtual VGA 
+sssshhhyNMMNyssssssssssssyNMMMysssssss+   Memory: 1493MiB / 7959MiB 
.ssssssssdMMMNhsssssssssshNMMMdssssssss.
 /sssssssshNMMMyhhyyyyhdNMMMNhssssssss/                            
  +sssssssssdmydMMMMMMMMddddyssssssss+                             
   /ssssssssssshdmNNNNmyNMMMMhssssss/
    .ossssssssssssssssssdMMMNysssso.
      -+sssssssssssssssssyyyssss+-
        `:+ssssssssssssssssss+:`
            .-/+oossssoo+/-.

【问题讨论】:

  • localhost 地址正确。这就是 minikube 的工作原理。您可以使用minikube ip 命令获取您的 minikube 集群 ip。您是否事先使用 minikube addons enable ingress 启用了入口?
  • 你是对的,我使用了节点 IP,它可以工作。但是我在官方文档中看到,有实际的 IP 而不是域名,我想知道为什么会这样。而且我确定我在 minikube 中打开了入口。谢谢!

标签: kubernetes kubernetes-ingress


【解决方案1】:

localhost 地址正确。这就是 minikube 的工作原理。

您可以通过

获取您的 minikube 集群 ip
minikube ip

minikube service <service-name> --url

【讨论】:

    【解决方案2】:

    我也遇到了同样的问题。

    --publish-status-address=localhost 设置在 nginx-ingress-controller 的参数中。 https://github.com/kubernetes/minikube/blob/1b25cac7f5735be22f88a159b35b1996abba3c73/deploy/addons/ingress/ingress-deploy.yaml.tmpl#L373

    我删除了这个 arg 并且它起作用了。

    $ kubectl edit deployments.apps -n ingress-nginx ingress-nginx-controller 
    
      - args:
        - /nginx-ingress-controller
        - --election-id=ingress-controller-leader
        - --controller-class=k8s.io/ingress-nginx
        - --watch-ingress-without-class=true
    -   - --publish-status-address=localhost
        - --configmap=$(POD_NAMESPACE)/ingress-nginx-controller
        - --report-node-internal-ip-address
        - --tcp-services-configmap=$(POD_NAMESPACE)/tcp-services
        - --udp-services-configmap=$(POD_NAMESPACE)/udp-services
        - --validating-webhook=:8443
        - --validating-webhook-certificate=/usr/local/certificates/cert
        - --validating-webhook-key=/usr/local/certificates/key
    

    【讨论】:

    • 是的,我用 ExternalDNS 运行 minikube,一旦出现 publish-status-address=localhost 就失败了,我不知道如何防止它,所以我现在只有一个脚本可以在部署后将其删除.
    【解决方案3】:

    我对此有过一段时间的争论,但它刚刚开始工作,所以我会为其他答案添加颜色。

    首先,正如this related question 中所指出的,当您最初运行minikube addons enable ingress 时,它会打印After the addon is enabled, please run "minikube tunnel" and your ingress resources would be available at "127.0.0.1"

    在完成tutorial 中的步骤并遇到此问题中的问题后,我可以通过启动minikube tunnel 并将127.0.0.1 hello-world.info 添加到我的/etc/hosts 来打开hello-world 应用程序。

    我不确定为什么kubectl get ingress 的教程执行会返回非本地 IP,但在本地运行时会返回 localhost,但这里的主要问题似乎是当您在 docker 上创建入口时运行 minikube 的容器,您需要通过 minikube tunnel 将流量转发到容器,以访问 minikube 中现在打开的入口。

    【讨论】:

      猜你喜欢
      • 2021-12-17
      • 1970-01-01
      • 2021-11-12
      • 1970-01-01
      • 2021-12-18
      • 2020-03-28
      • 1970-01-01
      • 2017-09-07
      相关资源
      最近更新 更多