【问题标题】:Can you expose your local minikube cluster to be accessible from a browser without editing etc/hosts?您可以在不编辑 etc/hosts 的情况下公开您的本地 minikube 集群以从浏览器访问吗?
【发布时间】:2022-06-11 15:03:27
【问题描述】:

我正在关注this 教程,了解如何公开本地集群以供外部访问。 我只需要能够从浏览器中检查我的应用程序,而无需将应用程序暴露在互联网上。

> kubectl get service web
NAME   TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
web    NodePort   10.98.217.114   <none>        8080:32718/TCP   10m

> minikube service web --url
http://192.168.49.2:32718

按照指南进行操作,直到 etc/hosts 部分。我设置了入口:

> kubectl get ingress
NAME              CLASS   HOSTS              ADDRESS        PORTS   AGE
example-ingress   nginx   hello-world.info   192.168.49.2   80      96s

由于各种原因,我无法在我的 Windows 机器上编辑 etc/hosts 文件,它说另一个进程正在使用它。但是,浏览器中的 192.168.49.2 和 http://192.168.49.2:32718 都不会返回任何内容,以及 curl 192.168.49.2 (以及:32718)。我不认为这应该是预期的,因为主机文件只是将 hello-world.info 转发到 IP,我应该能够仅使用 IP 访问我的应用程序。我在这里错过了什么?

Kubectl v1.24.1(kustomize v4.5.4,服务器 v1.23.3)、Minikube v1.25.2、Windows 10、带有 Docker 驱动程序的 Minikube。

【问题讨论】:

  • 只需使用“minikube ssh”ssh 进入 minikube。 “curl 192.168.49.2:32718”现在确实返回“Hello World”
  • 您能否发布相同的答案并接受它。以便对其他社区成员有所帮助
  • 这并没有解决问题。我想从浏览器访问应用程序,而不是通过 Minikube 的 ssh。

标签: kubernetes minikube


【解决方案1】:

好的,我对问题的解决方案是:端口转发到 ingress-controller pod(不是到 ingress 本身的对象,因为这似乎不可能)

名为“web”的服务的示例入口文件:

# example-ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: example-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
    - http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: web
                port:
                  number: 8080

运行它

kubectl apply -f example-ingress.yaml

检查它是否正在运行

> kubectl get ingress
NAME              CLASS   HOSTS   ADDRESS        PORTS   AGE
example-ingress   nginx   *       192.168.49.2   80      23h

如果你 ssh 进入 minikube (minikube ssh),你可以 curl 192.168.49.2:80 并返回正确的输出。

输出 nginx-controller pod:

> kubectl get pod -n ingress-nginx
NAME                                       READY   STATUS      RESTARTS      
AGE
ingress-nginx-admission-create-56gbc       0/1     Completed   0             
46h
ingress-nginx-admission-patch-fqf92        0/1     Completed   0             
46h
ingress-nginx-controller-cc8496874-7znt5   1/1     Running     4 (39m ago)   
46h

将端口转发给它:

> kubectl port-forward ingress-nginx-controller-cc8496874-7znt5 8080:80 -n ingress-nginx

然后查看 localhost:8080。如果它返回 nginx 404,那么您的 Ingress.yaml 设置可能是错误的。否则对我有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-15
    • 1970-01-01
    • 2014-12-24
    • 1970-01-01
    • 2014-09-16
    • 1970-01-01
    • 2019-04-27
    • 1970-01-01
    相关资源
    最近更新 更多