2.8 KiB
2.8 KiB
03-10-k3s-traefik-custom-ports
为 K3s 内置 Traefik 增加 自定义 entrypoints(额外暴露端口),用于多入口/旁路调试/特定设备转发等场景。
TL;DR
- 自动化验收:
./ansible/bin/verify.sh run 03-10 - 关键前置:按本文「前置条件」准备环境变量/Secret/入口 IP
- 成功判据:达到本文「预期」且 playbook 断言通过
- 排障:见本文「排障」
前置条件
- 已完成
01-01-k3s-控制节点含traefik.md,集群内kube-system命名空间的 Traefik 正常运行。 - 了解 Traefik 的 entrypoints 概念(
web/websecure)。
清单路径(唯一真源)
| 项 | 路径 |
|---|---|
| Traefik 自定义端口(HelmChartConfig) | ansible/files/03-10/traefik-custom-ports.yaml |
| 应用 | kubectl apply -f ansible/files/03-10/traefik-custom-ports.yaml |
| 删除 | kubectl delete -f ansible/files/03-10/traefik-custom-ports.yaml |
做了什么
该清单通过 HelmChartConfig 给 K3s 内置 Traefik 注入 values,新增两个示例入口:
web18080:HTTP 端口18080websecure18443:HTTPS 端口18443
你可以按需要改 entrypoint 名称与端口号。
部署与验证
kubectl apply -f ansible/files/03-10/traefik-custom-ports.yaml
# 等待 Traefik 重载(可能触发 rollout)
kubectl -n kube-system rollout status deploy/traefik --timeout=180s
# 验证 Service 端口是否暴露(不同版本/安装方式字段略有差异,以输出为准)
kubectl -n kube-system get svc traefik -o wide
kubectl -n kube-system describe svc traefik | sed -n '/Ports:/,/Selector:/p'
预期:traefik Service 出现新增端口(如 18080/TCP、18443/TCP)或对应的暴露配置生效;若节点/上游负载均衡允许访问,则可在对应端口访问路由(路由规则仍由 Ingress/IngressRoute 决定)。
失败排查
- 端口没有出现:确认清单应用在
kube-system,并且metadata.name: traefik匹配 K3s 内置 chart 名称;查看 Traefik Pod 日志与 Deployment 是否滚动更新。 - 端口出现但访问不通:检查节点防火墙/上游转发(如 OpenWrt/HAProxy)、以及 Traefik Service 类型(ClusterIP/NodePort/LoadBalancer)对外可达性。
- 回滚:执行删除命令后等待 Traefik rollout 结束。
相关文档
03-01-k3s-traefik-dashboard.md03-02-k3s-traefik-acme.md01-06-openwrt-haproxy.md
排障
- 先看 playbook 输出:失败时先定位是 deploy/wait/http_check 哪一步。
- 集群侧总览:
kubectl get nodes -o wide、kubectl -n kube-system get pods -o wide。 - 事件与日志:
kubectl -n <ns> describe ...、kubectl -n <ns> logs ... --tail=200。