67 lines
2.8 KiB
Markdown
67 lines
2.8 KiB
Markdown
# 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`](../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 端口 `18080`
|
||
- `websecure18443`:HTTPS 端口 `18443`
|
||
|
||
你可以按需要改 entrypoint 名称与端口号。
|
||
|
||
## 部署与验证
|
||
|
||
```bash
|
||
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.md`
|
||
- `03-02-k3s-traefik-acme.md`
|
||
- `01-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`。
|