无法配置Kubernetes Dashboard远程访问,编辑端口提示NotFound
解决Kubernetes Dashboard端口修改及远程访问问题
1. 定位错误原因
你执行kubectl edit service/kubernetes-dashboard时未指定命名空间,而Kubernetes Dashboard的Service默认部署在kubernetes-dashboard命名空间下,因此会提示"NotFound"错误。
2. 正确修改Service配置实现远程访问
方式一:编辑Service资源
执行以下命令进入编辑界面:
kubectl edit svc kubernetes-dashboard -n kubernetes-dashboard
在编辑界面中:
- 将
spec.type从ClusterIP修改为NodePort(云环境也可改为LoadBalancer) - 可选:在
spec.ports下添加nodePort: <指定端口>(端口需在30000-32767范围内,为Kubernetes NodePort默认端口段)
保存退出后,Service会自动更新配置。
方式二:用patch命令快速修改
直接执行命令将Service类型改为NodePort:
kubectl patch svc kubernetes-dashboard -n kubernetes-dashboard -p '{"spec":{"type":"NodePort"}}'
3. 获取访问端口并验证
执行以下命令查看Service的端口映射:
kubectl get svc kubernetes-dashboard -n kubernetes-dashboard
输出示例:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes-dashboard NodePort 10.96.232.185 <none> 443:30007/TCP 1h
其中30007就是可用于远程访问的NodePort,使用远程服务器IP:30007即可访问Dashboard(需确保服务器防火墙已开放该端口)。
4. 补充:解决Dashboard权限不足问题
默认Dashboard账号权限有限,登录后可能无法查看集群资源,需创建管理员账号:
- 创建admin用户的Service Account:
kubectl create serviceaccount admin-user -n kubernetes-dashboard
- 绑定Cluster-admin角色:
kubectl create clusterrolebinding admin-user-binding --clusterrole=cluster-admin --serviceaccount=kubernetes-dashboard:admin-user
- 获取登录令牌:
kubectl get secret $(kubectl get serviceaccount admin-user -n kubernetes-dashboard -o jsonpath="{.secrets[0].name}") -n kubernetes-dashboard -o jsonpath="{.data.token}" | base64 --decode
复制输出的令牌,在Dashboard登录界面选择"Token"方式登录即可获取完整集群权限。
内容的提问来源于stack exchange,提问作者Peter Penzov
相关产品推荐
相关产品推荐

