Files
Deploy-Laboratory/docs/03-01-k3s-traefik-dashboard.md
jack be97836e0d chore: 清理调试脚本并收敛到 Ansible 流程
移除已废弃的调试/验证脚本与空目录,统一文档与脚本说明到 ansible-playbook 的部署方式,避免失效引用和误用路径。

Made-with: Cursor
2026-03-23 19:18:55 +08:00

3.8 KiB
Raw Blame History

03-02-k3s Traefik Dashboard

启用并访问 Traefik Dashboard用于查看路由与服务状态。

前置条件

  • Traefik 已正常运行
  • 已了解 Dashboard 仅用于运维,不建议公网裸露

部署说明(几个 Pod配置存哪如何同步

  • 几个 PodK3s 默认 Traefik 是 Deployment、replicas=1,即只有 1 个 Traefik Pod。该 Pod 可能跑在控制节点或你打了 Traefik 入口标签的任意节点上。
  • 为何每个节点都能访问:流量不是“每个节点一个 Traefik”。每个节点上的 80 端口由 K3s 的 ServiceLBsvclb-traefik 监听,请求被转发到 同一个 Traefik Service再转到上述那 1 个 Traefik Pod。所以多节点能访问是 LB 转发到同一后端,不是每节点一个 Traefik。
  • 配置存在哪里HelmChartConfigIngressRoute 是 Kubernetes 资源,存在 etcd控制节点。Traefik 进程通过 Kubernetes API 监听 Ingress/IngressRoute 等,动态生成路由,不需要在多个 Pod 之间同步配置。若以后把 Traefik 扩成多副本,所有副本都从同一 API 读到的资源,行为一致。

操作步骤

  1. 在控制节点创建 traefik-dashboard.yaml,放入 K3s manifests 目录K3s 启动时自动加载,重启后无需手动 apply

    • 默认路径/var/lib/rancher/k3s/server/manifests/traefik-dashboard.yaml
    • 自定义 data-dir(如 --data-dir=/storage<data-dir>/server/manifests/traefik-dashboard.yaml

    唯一真源(勿与文档内联重复)HelmChartConfig + IngressRoute 完整 YAML。复制到上述 manifests 路径,或在仓库根执行:

    kubectl apply -f ansible/files/traefik-dashboard/traefik-dashboard.yaml
    
  2. 应用配置并等待 Traefik 重载(按实际路径选择其一复制执行):

# 默认路径
kubectl apply -f /var/lib/rancher/k3s/server/manifests/traefik-dashboard.yaml
kubectl -n kube-system rollout status deploy/traefik
# 自定义 data-dir如 /storage
kubectl apply -f /storage/server/manifests/traefik-dashboard.yaml
kubectl -n kube-system rollout status deploy/traefik
  1. 验证:一键对全部节点 IP 做 curl 测试(按实际环境修改 IP 列表):
# 已按 01-02 / 01-06 配置 K3s 默认 LBTraefik 入口标签 + firewalld 基线61~64 任一台 :80 均应返回 200/307
for ip in 192.168.2.61 192.168.2.62 192.168.2.63 192.168.2.64; do
  code=$(curl -s -o /dev/null -w "%{http_code}" --max-time 3 "http://${ip}/dashboard/" 2>/dev/null || echo "---")
  echo "${ip}: ${code}"
done

查看 Traefik 日志(确认无报错):

kubectl -n kube-system logs deploy/traefik --tail=50

可选:只看响应头(单节点)
curl -I --max-time 5 http://192.168.2.61/dashboard/

删除部署与文件

因同一 chart 只能有一份 HelmChartConfig后续做 03-03ACME、03-04Dashboard+ACME 合并)等测试前,建议先删除本部署并删掉 manifest 文件,避免被覆盖或重复加载。

  1. 删除集群内资源HelmChartConfig + IngressRoute
kubectl delete -f /var/lib/rancher/k3s/server/manifests/traefik-dashboard.yaml
kubectl -n kube-system rollout status deploy/traefik
kubectl delete -f /storage/server/manifests/traefik-dashboard.yaml
kubectl -n kube-system rollout status deploy/traefik
  1. 删除宿主机上的 manifest 文件(否则 K3s 重启会再次加载):
# 默认路径
sudo rm -f /var/lib/rancher/k3s/server/manifests/traefik-dashboard.yaml
# 自定义 data-dir如 /storage
sudo rm -f /storage/server/manifests/traefik-dashboard.yaml

下一步

  • 04-03-k3s-nginx-demo.md
  • 04-01-k3s-nodejs-高级部署.md