You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

k3s集群Traefik找不到请求资源、cert-manager证书签发404问题求助

问题根因定位

从你提供的Traefik Pod日志可直接定位三个核心问题:

  • Traefik使用的ServiceAccount缺少集群级权限,无法读取各类K8s原生资源和Traefik自定义CRD资源
  • Traefik对应版本的自定义CRD未安装/版本不匹配,导致无法识别IngressRouteUDP这类自定义资源
  • cert-manager的HTTP-01挑战返回404是因为Traefik无法正常感知cert-manager创建的挑战Ingress规则,外部请求无法被正确路由到挑战服务

解决方案步骤

第一步:修复Traefik RBAC权限

创建对应的ClusterRole和ClusterRoleBinding,给Traefik的ServiceAccount授权所需的所有资源访问权限,配置文件如下:

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: traefik-ingress-controller
rules:
  - apiGroups: [""]
    resources: ["services", "endpoints", "secrets", "nodes", "pods"]
    verbs: ["get", "list", "watch"]
  - apiGroups: ["extensions", "networking.k8s.io"]
    resources: ["ingresses", "ingressclasses"]
    verbs: ["get", "list", "watch"]
  - apiGroups: ["extensions", "networking.k8s.io"]
    resources: ["ingresses/status"]
    verbs: ["update"]
  - apiGroups: ["traefik.containo.us"]
    resources: ["ingressroutes", "ingressroutetcps", "ingressrouteudps", "middlewares", "traefikservices"]
    verbs: ["get", "list", "watch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: traefik-ingress-controller
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: traefik-ingress-controller
subjects:
  - kind: ServiceAccount
    name: traefik-ingress-controller
    namespace: kube-system

应用配置:
kubectl apply -f traefik-rbac.yaml

第二步:安装匹配版本的Traefik CRD

你当前使用的Traefik版本对应的v1alpha1版本CRD未安装在集群中,你可以下载对应Traefik版本的Kubernetes CRD清单到本地,然后执行以下命令应用:
kubectl apply -f traefik-crds.yaml
如果你使用k3s默认内置的Traefik,建议先卸载默认Traefik及其相关配置后再重新部署自定义版本,避免配置冲突

第三步:修复证书申请配置问题

  1. 你当前Certificate配置中使用的旧版本注解certmanager.k8s.io/cluster-issuer已经在cert-manager v1+版本废弃,直接删除该注解即可,你已经在spec.issuerRef中指定了ClusterIssuer,无需额外配置
  2. 确认你的Traefik Service已经将80端口映射到Traefik的web entrypoint(8000端口)、443端口映射到websecure entrypoint(8443端口),否则Let's Encrypt的HTTP-01挑战请求无法到达集群
  3. 确认你的域名已经正确解析到k3s集群的公网入口IP,且80端口未被运营商屏蔽

第四步:验证修复效果

  1. 重启Traefik Pod,查看日志确认没有forbidden和resource not found报错
  2. 删除之前申请失败的Certificate资源,重新提交修改后的Certificate配置,等待证书自动生成即可

内容的提问来源于stack exchange,提问作者Daniel Booth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 21:06:03