k3s traefik 默认使用 HostNetwork 模式运行,因此不能被代理。要解决这个问题,可以在 k3s 部署时指定使用 ClusterIP 模式,具体步骤如下:
在部署 k3s 的命令中添加参数
--no-deploy=traefik
,禁止 k3s 内置的 traefik 容器启动。手动创建一个 ClusterIP 类型的 Service,用于暴露 traefik 容器的端口。
使用外部的反向代理工具(如 Nginx、HAProxy 等)进行流量转发。
示例 YAML 文件如下:
apiVersion: v1
kind: Service
metadata:
name: traefik
spec:
selector:
app: traefik
ports:
- name: http
port: 80
targetPort: 80
在执行 kubectl apply -f 命令后,可以通过 kubectl get svc
命令查看创建的 Service 的 IP 地址,然后将其配置到反向代理工具中即可实现代理。