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-dashboard31xxxx: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
相关产品推荐
相关产品推荐

