You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VirtualBox虚拟机中microk8s的Kubernetes Dashboard端口转发后宿主机无法访问

解决VirtualBox中MicroK8s Dashboard端口转发后宿主机无法访问的问题

问题根源

kubernetes-dashboard默认是ClusterIP类型服务,仅能在Kubernetes集群内部访问。VirtualBox的端口转发是将宿主机端口映射到虚拟机物理网卡的端口,而非集群内部的ClusterIP端口,直接转发到ClusterIP必然失效。

解决方案

方法1:将Dashboard改为NodePort类型

  • 修改服务类型:
    kubectl edit service kubernetes-dashboard -n kubernetes-dashboard
    
  • 找到spec.type字段,将ClusterIP替换为NodePort,保存退出。
  • 查看自动分配的NodePort:
    kubectl get service kubernetes-dashboard -n kubernetes-dashboard
    
    输出中会显示类似31xxxx:443/TCP的映射,前面的数字就是NodePort。
  • 在VirtualBox设置端口转发:
    • 宿主机端口:7071
    • 虚拟机IP:填写虚拟机的内部IP(可通过ip a在虚拟机内查询)
    • 虚拟机端口:上述获取的NodePort
    • 协议选择TCP
  • 宿主机访问:https://127.0.0.1:7071

方法2:使用kubectl port-forward直接转发(测试首选)

  • 在虚拟机内执行命令,保持终端窗口打开:
    kubectl port-forward service/kubernetes-dashboard 7071:443 -n kubernetes-dashboard
    
  • 宿主机直接访问https://127.0.0.1:7071即可,无需修改VirtualBox端口转发配置。

方法3:修正VirtualBox端口转发配置细节

  • 确保端口转发的目标IP是虚拟机的内部物理IP,而非ClusterIP(10.152.183.162)。
  • 若使用NodePort,目标端口必须是分配的NodePort,而非443。
  • 宿主机访问时优先使用127.0.0.1,避免127.0.1.1的hostname解析异常。

额外排查点

  • 验证虚拟机内通过NodePort访问是否正常:
    curl -vks https://<虚拟机内部IP>:<NodePort>
    
  • 确认MicroK8s的Dashboard插件已启用:
    microk8s status
    

内容的提问来源于stack exchange,提问作者noname7619

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 00:45:34