gpt4 book ai didi

kubernetes-ingress - minikube 的入口在 Mac 和 Ubuntu 上的工作方式不同。何时将 etc/hosts 设置为 127.0.0.1 与 "minikube ip"?

转载 作者:行者123 更新时间:2023-12-05 04:35:45 27 4
gpt4 key购买 nike

我有一个可以在多个环境中工作的简单入口文件,但要访问它,它的行为会有所不同,具体取决于我是在我的 Mac 上还是在我的 Ubuntu 机器上运行我的 minikube 集群。

具体来说,对于我的 mac,我必须添加条目:127.0.0.1 my.kube 到/etc/hosts,同时运行 minikube tunnel让我能够在浏览器中通过 http://my.kube 访问我的应用程序。

但是,对于我的 Ubuntu 系统,我必须获取 minikube ip 并将生成的 ip 放在 /etc/hosts 中,例如 192.168.49.2 my.以 kube 为例。然后我不需要运行 minikube tunnel

虽然我可以看到每个的优点和缺点:

  1. 使用 127.0.0.1 和隧道消除了对 minikube ip 的依赖,如果集群被删除并重新创建,这种依赖可能会改变(尽管已经进行了一些工作以使其持久化)。
  2. 使用 minikube ip 而不需要隧道也很好。

但是,我的问题是为什么事情的表现完全不同?

我已经在两个环境中使用 minikube addons enable ingress 启用了 ingress addon。

当我使用 kubectl get ingress my-ingress -o yaml 检查入口创建的负载均衡器的主机名时,我得到了相同的结果。我希望在使用 minikube IP 的情况下看到一个 IP (Ubuntu)。

....
status:
loadBalancer:
ingress:
- hostname: localhost

同样,所有服务都正常运行,这只是 /etc/hosts 中的内容以及 minikube tunnel 是否正在运行的问题。

此外,需要说明的是,我的 Ubuntu 系统无法使用 127.0.0.1minikube tunnel。我找不到适用于这两种环境的通用方法。

作为引用,这是我的入口文件:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress
spec:
rules:
- host: my.kube
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: my-ui
port:
number: 3000
- path: /api
pathType: Prefix
backend:
service:
name: my-api
port:
number: 8080

一些名称已更改以保护无辜者。

为了完整起见,这些服务很简单:

apiVersion: v1
kind: Service
metadata:
name: my-ui
spec:
selector:
app: my-ui
ports:
- protocol: TCP
port: 3000
targetPort: 3000
---
apiVersion: v1
kind: Service
metadata:
name: my-api
spec:
selector:
app: my-api
ports:
- protocol: TCP
port: 8080
targetPort: 8080

最佳答案

您所描述的行为很可能是因为 ingressingress-dns 插件当前仅在使用 Docker 驱动程序时在 Linux 系统上受支持,如Known Issues minikube 文档的一部分。

关于kubernetes-ingress - minikube 的入口在 Mac 和 Ubuntu 上的工作方式不同。何时将 etc/hosts 设置为 127.0.0.1 与 "minikube ip"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70961901/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com