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

如何登录Kubernetes Dashboard容器?Traefik转发K8s Dashboard遇404

解决无法登录Kubernetes Dashboard容器的问题

首先得明确:你遇到的问题根源是官方Kubernetes Dashboard镜像属于distroless(无发行版)镜像——这类镜像只打包了运行Dashboard所需的核心二进制文件,完全没有bash、sh、ls这类常用工具,所以你没法通过kubectl exec进入容器执行任何命令。

针对你的需求的解决方案

1. 验证Dashboard服务是否正常(无需进入容器)

如果你只是想确认Dashboard的首页是否能正常返回,完全不需要进入容器,用kubectl port-forward直接把容器的端口转发到本地即可:

# 转发Dashboard容器的8443端口到本地8443
kubectl port-forward pod/kubernetes-dashboard-6466b68b-mrrs9 8443:8443 -n kube-system

保持这个命令运行,然后打开另一个终端执行:

# 注意是HTTPS,Dashboard默认用HTTPS提供服务,-k忽略自签名证书验证
curl -k -L https://127.0.0.1:8443

这样就能获取到首页的HTML内容了。

2. 必须进入容器调试?用Sidecar容器

如果确实需要查看容器内部的文件或者调试,推荐给Dashboard的Pod添加一个带shell工具的Sidecar容器(不修改主容器的镜像,更安全):

  1. 编辑Dashboard的Deployment:
kubectl edit deployment kubernetes-dashboard -n kube-system
  1. 在spec.template.spec.containers数组里添加一个新的容器配置:
- name: debug-sidecar
  image: busybox:latest
  command: ["sleep", "3600"] # 让容器保持运行状态
  resources:
    limits:
      memory: "128Mi"
      cpu: "500m"
  1. 保存退出后,Kubernetes会自动滚动更新Pod。等新Pod启动完成后,执行以下命令进入Sidecar容器:
# 替换成新的Pod名称,比如kubernetes-dashboard-xxxxxx-yyyyy
kubectl exec -it kubernetes-dashboard-xxxxxx-yyyyy -c debug-sidecar -- /bin/sh -n kube-system

这个Sidecar用的是busybox镜像,自带sh、ls、curl等常用工具,你可以通过它访问主容器的文件系统(Pod内的容器共享网络和存储卷,主容器的文件一般在/路径下,可直接查看)。

3. 为什么之前的命令会报错?

  • 一开始的NotFound错误是因为你没切换到kube-system命名空间,Dashboard默认部署在这个命名空间下;
  • 后来的exec failed错误都是因为主容器镜像里完全没有对应的可执行文件(不管是bash、sh还是ls),所以根本没法执行任何命令。

注意事项

官方用distroless镜像的目的是最小化攻击面,减少镜像体积和潜在的安全风险,所以不建议在生产环境替换Dashboard的镜像为带shell的版本。调试尽量用port-forward或者Sidecar的方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 13:37:44