马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
概述
书接上回:《Rancher 系列文章-K3S 集群升级》, 我们提到:通过一键脚本升级 K3S 集群有报错。
接下来开始进行 Traefik 报错的分析和修复, 问题是:
- 所有 Traefik 的 IngressRoute 访问报错 404
问题描述
报错如下:- time="2022-05-05T09:51:21Z" level=error msg="Failed to create middleware keys: middleware kube-system/hsts-header is not in the IngressRoute namespace cert-manager" namespace=cert-manager providerName=kubernetescrd ingress=grafana
复制代码 即无法跨 NameSpace 调用 Traefik MiddleWare.
解决过程
首先根据官方文档说明:Kubernetes IngressRoute & Traefik CRD - Traefik
可以配置 allowCrossNamespace 参数,该参数默认为 false, 如果该参数设置为true, IngressRoutes 可以引用其他 NameSpace 中的资源。
基本上断定根因就是这个了。查看 K3s v1.22.5+k3s2 的 Traefik 配置,确实没有这个参数,如下:- ...
- containers:
- - name: traefik
- image: rancher/mirrored-library-traefik:2.5.0
- args:
- - '--entryPoints.metrics.address=:9100/tcp'
- - '--entryPoints.traefik.address=:9000/tcp'
- - '--entryPoints.web.address=:8000/tcp'
- - '--entryPoints.websecure.address=:8443/tcp'
- - '--api.dashboard=true'
- - '--ping=true'
- - '--metrics.prometheus=true'
- - '--metrics.prometheus.entrypoint=metrics'
- - '--providers.kubernetescrd'
- - '--providers.kubernetesingress'
- - >-
- --providers.kubernetesingress.ingressendpoint.publishedservice=kube-system/traefik
- - '--entrypoints.websecure.http.tls=true'
- ...
复制代码 所以,刚开始就计划通过编辑 Helm 的文件把这个参数加上。
编辑 K3s 的 Manifests Helm 文件
<blockquote>
|