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

Networking 如何远程访问本地kubernetes minikube仪表板,networking,kubernetes,virtualbox,portforwarding,Networking,Kubernetes,Virtualbox,Portforwarding,Kubernetes新手(或者更基本的网络)问题: 在我的局域网(IP地址192.168.0.20)中运行的带有virtualbox的ubuntu设备上安装了单节点minikube(0.23版本) minikube启动命令也成功完成 minikube start Starting local Kubernetes v1.8.0 cluster... Starting VM... Getting VM IP address... Moving files into cluster... Setti

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

minikube启动命令也成功完成

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.
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"
如清单所示

在我的情况下是这样的

VBoxManage modifyvm "VM name" --natpf1 "guesthttp,http,,30000,,8080"
我的思路对吗

此外,对于远程访问相同的minikube仪表板地址,我可以设置一个类似no-ip.com的服务。他们要求在linux box上安装他们的实用程序,并在路由器设置中设置端口转发,该设置将从主机端口转发到来宾端口。是这样吗?我在这里遗漏了什么吗?

ssh方式

假设你的ubuntu盒上有ssh

首先运行
kubectl proxy&
以在
http://localhost:8001

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

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

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

要从外部公开它,只需使用no-ip.com公开端口30000,或者将其更改为一些标准端口,如80


请注意,这并不是最简单的解决方案,但在某些情况下,如果没有超级用户权限,该解决方案仍然有效;)您可以在重新启动ubuntu box后使用init脚本并设置连接的公钥来自动登录。

我最近遇到了同样的问题,解决方法如下:

  • 通过在
    网桥
    网络模式下添加另一个网络适配器,将您的minikube虚拟机安装到LAN上。对我来说,这是通过修改VirtualBox UI中的minikube VM和所需的VM停止/启动来完成的。如果您使用hyperkit,不确定这将如何工作。不要乱动minikube配置的默认网络适配器:minikube依赖于这些
  • 如果尚未安装,请在mac上安装kubectl:
  • 将集群和相关配置添加到
    ~/.kube/config
    ,如下所示,修改服务器IP地址以匹配新公开的VM IP。如果需要,还可以修改名称。请注意,由于minikube生成的https证书仅对VM的内部IP地址有效,因此需要
    不安全的skip tls verify:true

    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
    
  • 从linux minikube主机复制配置中引用的
    ~/.minikube/client.
    文件。这些是访问所需的安全密钥文件

  • 设置kubectl上下文:
    kubectl配置设置上下文mykubevm
    。此时,您的minikube群集应该可以访问(请尝试
    kubectl cluster info

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


  • 也可以通过ssh连接到minikube虚拟机。将ssh密钥对从
    ~/.minikube/machines/minikube/id_rsa*
    复制到.ssh目录(重命名以避免吹走其他密钥,例如
    mykubevm
    &
    mykubevm.pub
    )。然后
    ssh-i~/.ssh/mykubevm docker@

    上述方法略有不同

    我有一个带有NodePort 30003的http web服务。我通过运行以下命令使其在端口80外部可用:

    sudossh-v-i~/.ssh/id_rsa-N-L 0.0.0:80:localhost:30003${USER}@$(主机名)
    

    我可以用以下简单的方法开始运行:

    kubectl proxy --address='0.0.0.0' --disable-filter=true
    

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

  • 使用@Jeff的脚本启动代理,默认情况下,它将在“0.0.0.0:8001”上打开代理

    kubectl proxy --address='0.0.0.0' --disable-filter=true
    
  • 通过以下链接访问仪表板:

    curl http://your_api_server_ip:8001/api/v1/namespaces/kube-system/services/http:kubernetes-dashboard:/proxy/
    

  • 更多详细信息请参阅。

    杰夫·普劳蒂添加了有用的答案:


    我可以用一些简单的东西跑步,比如:

    kubectl proxy --address='0.0.0.0' --disable-filter=true
    
    kubectl代理服务器--address='0.0.0.0'--disable filter=true

    但对我来说,一开始并不奏效

    我在CentOS 7机器上运行这个命令,并运行kubectl(本地IP:192.168.0.20)

    当我试图从另一台计算机(显然在LAN中)访问仪表板时:

    然后,我的web浏览器中只有超时

    我的解决方案是,在CentOS 7(可能还有其他发行版)中,您需要在操作系统防火墙中打开端口
    8001

    因此,在我的情况下,我需要在CentOS 7终端中运行:

     sudo firewall-cmd --zone=public --add-port=8001/tcp --permanent
     sudo firewall-cmd --reload
    
    在那之后。它起作用了!:)

    当然,您需要意识到这不是安全的解决方案,因为现在任何人都可以访问您的dashbord。但我认为,对于本地实验室测试来说,这就足够了


    在其他linux发行版中,用于在防火墙中打开端口的命令可能不同。请使用谷歌进行查看。

    感谢您宝贵的回答,如果您必须使用kubectl代理命令无法永久查看,请使用YAML文件中的以下“服务”对象进行远程查看,直到您停止它。创建一个新的yaml文件
    minikube dashboard.yaml
    并手动编写代码,我不建议复制并粘贴它

    apiVersion : v1
    kind: Service
    metadata:
      labels:
        app: kubernetes-dashboard
      name: kubernetes-dashboard-test
      namespace: kube-system
    spec:
      ports:
      - port: 80
        protocol: TCP
        targetPort: 9090
        nodePort: 30000
      selector:
        app: kubernetes-dashboard
      type: NodePort
    
    执行命令

    $ sudo kubectl apply -f minikube-dashboard.yaml
    
    最后,打开URL:
    想通过iamnat链接这个答案

  • 使用
    minikube-ip
    在主机上获取minikube-ip
  • 创建节点端口服务
  • 您应该能够访问
    [my laptop] --ssh--> [remote server with minikube]
    
    minikube dashboard
    kubectl proxy
    
    ssh -L 12345:localhost:8001 myLogin@myRemoteServer
    
    http://localhost:12345/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/
    
    
    http://127.0.0.1:43587/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/
    
    sudo nano /etc/nginx/sites-available/default
    
        location / {
            proxy_set_header Host "localhost";
            proxy_pass http://127.0.0.1:43587;
        }
    
    sudo service nginx restart
    
    http://my_server_ip/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/#/cronjob?namespace=default