Minikube 网络

Minikube networking

我有一台 Linux 构建机器,我也安装了 minikube。在 minikube 实例中,我安装了 artifactory,我将使用它来存储各种构建工件

我现在希望能够在我的开发机器(这是一台与 Linux 构建机器位于同一网络上的不相关笔记本电脑)上做一些工作,并将一些构建的工件推送到人工制品中。

但是我不知道怎么去人工制品。当我 ssh 到 Linux 服务器并检查 minikube 服务时,我可以看到人工实例是 运行 在 192.168 地址上。

有没有办法公开人工制品,即在 windows 机器上访问它?或者这是不可能的,我应该只在 Linux 机器上安装 artifactory 而不是在 minikube 中?

暴露你的神器服务

$ minikube service <artifactory-service> -n <namespace>

或获取 URL

$ minikube service <artifactory-service> -n <namespace> --url

如果你想从远程访问,你需要做一些其他的事情。

假设,当您 运行 minikube service <artifactory-service> -n <namespace> --url 时,您会关注

http://192.168.99.100:30654

您可以使用此 URL 在 minikube 中访问 artifactory。但是无法远程访问。

现在这样做,公开端口 30654

ssh -i ~/.minikube/machines/minikube/id_rsa docker@$(minikube ip) -L \*:30654:0.0.0.0:30654

您将可以从其他网络访问。

为了最终让它工作,我在 minikube 上设置了入口,然后通过主机文件中的条目和 nginx 作为反向代理设法让事情正常进行。

是的,我们需要一个入口控制器(如 nginx)来公开 kubernetes 服务以供外部访问。

可以通过三种方式使用 kubernetes 创建 nginx 入口服务 https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services---service-types 并将其公开以供外部访问:

  1. LoadBalancer 自动设置 ExternalIP 的服务类型。当存在外部非 k8s、云提供商的负载均衡器(如 CGE、AWS 或 Azure)时使用,并且此外部负载均衡器将为 nginx 入口服务提供 ExternalIP
  2. ExternalIPshttps://kubernetes.io/docs/concepts/services-networking/service/#external-ips.
  3. NodePort。在这种方法中,可以使用 NodeIP 从集群外部访问服务:NodePort/url/of/the/service.

除了 nginx 入口控制器,您还需要一个入口资源。有关示例,请参阅 https://github.com/nginxinc/kubernetes-ingress/tree/master/examples/complete-example

请记住,Minikube 是一个小型虚拟机,默认情况下具有小型 docker 注册表。因此,可能无法在 Minikube 中存储大量构建工件。