如何远程访问本地kubernetes minikube仪表板

rob*_*jaj 16 networking virtualbox portforwarding kubernetes

Kubernetes新手(或者更基本的网络)问题: 在我的局域网(在IP地址192.168.0.20上)运行的ubuntu盒上安装了单节点minikube(0.23版本)和virtualbox.

minikube start命令也成功完成

minikube start
Starting local Kubernetes v1.8.0 cluster...
Starting VM...
Getting VM IP address...
Moving files into cluster...
Setting up certs...
Connecting to cluster...
Setting up kubeconfig...
Starting cluster components...
Kubectl is now configured to use the cluster.
Run Code Online (Sandbox Code Playgroud)

minikube仪表板也成功上映.(运行于192.168.99.100:30000)

我想要做的是从我的macbook(在192.168.0.11上运行)访问同一局域网中的minikube仪表板.

此外,我想从互联网访问相同的minikube仪表板.

对于局域网访问: 现在根据我的理解我使用的是virtualbox(默认的vm选项),我可以使用vboxnet命令更改网络类型(使用端口转发进行NAT)

VBoxManage modifyvm "VM name" --natpf1 "guestssh,tcp,,2222,,22"
Run Code Online (Sandbox Code Playgroud)

由于上市这里

就我而言,它将是这样的

VBoxManage modifyvm "VM name" --natpf1 "guesthttp,http,,30000,,8080"
Run Code Online (Sandbox Code Playgroud)

我在这里思考的是正确的思路吗?

另外,为了远程访问相同的minikube仪表板地址,我可以设置no-ip.com类似的服务.他们要求在Linux机箱上安装他们的实用程序,并在路由器设置中设置端口转发,这将从主机端口转发到访客端口.那是对的吗?我错过了什么吗?

小智 23

我能够运行一些简单的东西:

kubectl proxy --address='0.0.0.0' --disable-filter=true
Run Code Online (Sandbox Code Playgroud)


S2L*_*S2L 17

我使用搜索关键字访问了这个 url:minikube 仪表板远程。就我而言,minikube(及其仪表板)是远程运行的,我想从我的笔记本电脑安全地访问它。

[my laptop] --ssh--> [remote server with minikube]
Run Code Online (Sandbox Code Playgroud)

按照 gmiretti 的回答,我的解决方案是本地转发 ssh 隧道:

在 minikube 远程服务器上,运行这些:

minikube dashboard
kubectl proxy
Run Code Online (Sandbox Code Playgroud)

在我的笔记本电脑上,运行这些(保持本地主机不变):

ssh -L 12345:localhost:8001 myLogin@myRemoteServer
Run Code Online (Sandbox Code Playgroud)

然后在我的笔记本电脑上的这个 url 上可以使用仪表板:

http://localhost:12345/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/

Run Code Online (Sandbox Code Playgroud)

  • 精彩的!很有魅力。谢谢你! (3认同)
  • 我已经尝试了数十个答案,到目前为止,这个答案很有魅力! (3认同)

Gab*_*tti 12

ssh的方式

假设你的ubuntu盒子上有ssh.

首先运行kubectl proxy &以显示仪表板http://localhost:8001

然后使用ssh的端口转发公开仪表板,执行:

ssh -R 30000:127.0.0.1:8001 $USER@192.168.0.20

现在,您应该从指向浏览器的LAN中的macbook访问仪表板 http://192.168.0.20:30000

要从外部公开它,只需使用no-ip.com公开端口30000,也可以将其更改为某个标准端口,如80.

请注意,这不是最简单的解决方案,但在某些地方可以在没有超级用户权限的情况下工作;)您可以在使用init脚本重新启动ubuntu框并设置公钥进行连接后自动登录.


hao*_*hao 11

@Jeff提供了完美的答案,为新手提供了更多提示。

  1. 使用@Jeff的脚本启动代理,默认情况下,它将在'0.0.0.0:8001'上打开代理。

    kubectl proxy --address='0.0.0.0' --disable-filter=true
    
    Run Code Online (Sandbox Code Playgroud)
  2. 通过以下链接访问仪表板:

    curl http://your_api_server_ip:8001/api/v1/namespaces/kube-system/services/http:kubernetes-dashboard:/proxy/
    
    Run Code Online (Sandbox Code Playgroud)

更多详细信息请参考官方文档

  • 我不确定这是否是最近的更改,但对我来说(使用 Minikube v1.12.1、Kubernetes v1.18.3),仪表板命名空间是 kubernetes-dashboard,因此 url 将使用: ... /api/v1/namespaces/ kubernetes-仪表板/服务 ... (2认同)
  • 如果没有 `--disable-filter=true` ,则无法访问。此时,您应该设置类似“--accept-hosts=^192\.168”的内容以允许某些地址访问。 (2认同)

小智 7

我最近遇到了同样的问题,并按如下方式解决了它:

  1. 通过在bridge网络模式下添加另一个网络适配器,将您的minikube VM放入LAN 。对我而言,这是通过在VirtualBox UI中修改minikube VM以及所需的VM停止/启动来完成的。如果您使用的是hyperkit,则不确定如何使用。不要混用minikube配置的默认网络适配器:minikube取决于这些适配器。https://github.com/kubernetes/minikube/issues/1471
  2. 如果尚未安装,请在Mac上安装kubectl:https://kubernetes.io/docs/tasks/tools/install-kubectl/
  3. 将集群和关联的配置添加到,~/.kube/config如下所示,修改服务器IP地址以匹配新暴露的VM IP。如果需要,还可以修改名称。请注意,这insecure-skip-tls-verify: true是必需的,因为minikube生成的https证书仅对VM的内部IP地址有效。

    clusters:
    - cluster:
        insecure-skip-tls-verify: true
        server: https://192.168.0.101:8443
      name: mykubevm
    contexts:
    - context:
        cluster: mykubevm
        user: kubeuser
      name: mykubevm
    users:
    - name: kubeuser
      user:
        client-certificate: /Users/myname/.minikube/client.crt
        client-key: /Users/myname/.minikube/client.key
    
    Run Code Online (Sandbox Code Playgroud)
  4. ~/.minikube/client.*从linux minikube主机复制配置中引用的文件。这些是访问所需的安全密钥文件。

  5. 设置您的kubectl上下文:kubectl config set-context mykubevm。此时,您的minikube集群应该可以访问(尝试kubectl cluster-info)。

  6. 运行kubectl proxy http://localhost:8000以创建用于访问仪表板的本地代理。在浏览器中导航到该地址。

SSH也可以挂接到minikube VM。将ssh密钥对从复制~/.minikube/machines/minikube/id_rsa*到您的.ssh目录(重新命名,以免浪费其他密钥,例如mykubevmmykubevm.pub)。然后ssh -i ~/.ssh/mykubevm docker@<kubevm-IP>