【问题标题】:Traefik v2 in Kubernetes. fail to deploy. do not see other servicesKubernetes 中的 Traefik v2。部署失败。看不到其他服务
【发布时间】:2021-05-09 05:50:05
【问题描述】:

我一直在尝试在 minikube 中运行 traefik v2.x 来检查它以及它如何将请求路由到所需的服务。我根本无法访问我的服务。了解我做错了什么会很好。

  • minikube 正在 VirtualBox VM 中运行
  • VM box 有实验室 IP 地址,我想向其发送 URL 请求
  • 在我的本地主机上,我将主机(mydomain.localmydomain.com)设置为 minikube VM 的 IP 地址

如何重现:

  1. 创建 2 个命名空间 new-nsnew-who
  2. 将命名空间设置为 Ingress 的默认名称:kubectl config set-context --current --namespace=new-ns

所有yaml文件都可以在https://github.com/vencrena-LT/traefik找到

  1. 部署 CustomResourceDefinition
  2. 部署 ClusterRole、ClusterRoleBinding 和 ServiceAccount(到 new-ns 命名空间)
  3. 部署 DaemonSet 和 Service(到 new-ns 命名空间)

然后想部署 2 个应用程序:在两个命名空间中(用于测试目的)

  1. 部署、服务和 IngressRoute 到 new-ns 命名空间
  2. 部署、服务和 IngressRoute 到新命名空间

仪表板: 路线: 本地播客:

来自 traefik pod 的一些日志:

E0206 08:25:21.798628       1 reflector.go:127] pkg/mod/k8s.io/client-go@v0.19.2/tools/cache/reflector.go:156: Failed to watch *v1alpha1.TLSStore: failed to list 
*v1alpha1.TLSStore: tlsstores.traefik.containo.us is forbidden: User "system:serviceaccount:new-ns:traefik-ingress-controller" cannot list resource "tlsstores" in API group "traefik.containo.us" at the cluster scope

E0206 08:25:34.653633       1 reflector.go:127] pkg/mod/k8s.io/client-go@v0.19.2/tools/cache/reflector.go:156: Failed to watch *v1alpha1.ServersTransport: failed to list
*v1alpha1.ServersTransport: serverstransports.traefik.containo.us is forbidden: User "system:serviceaccount:new-ns:traefik-ingress-controller" cannot list resource "serverstransports" in API group "traefik.containo.us" at the cluster scope

E0206 08:26:02.857094       1 reflector.go:127] pkg/mod/k8s.io/client-go@v0.19.2/tools/cache/reflector.go:156: Failed to watch *v1alpha1.IngressRouteUDP: failed to list
*v1alpha1.IngressRouteUDP: ingressrouteudps.traefik.containo.us is forbidden: User "system:serviceaccount:new-ns:traefik-ingress-controller" cannot list resource "ingressrouteudps" in API group "traefik.containo.us" at the cluster scope

任何提示我做错了什么?为什么无法访问 mydomain.localmydomain.com 并查看 whoami 服务。为什么 Traefik 仪表板中没有看到路由

【问题讨论】:

  • 你能提供来自traefik Pod 的日志吗?您的IngressRoutes 似乎是正确的。也许您最好按照here 的描述使用 Helm Chart 安装Traefik
  • 我在部署 helm chart 时没有任何问题。这是为了学习和充分理解它应该如何工作。关于日志的好提示 - 将输出添加到主要问题。似乎服务帐户没有足够的权限

标签: kubernetes kubernetes-ingress traefik minikube traefik-ingress


【解决方案1】:

您的 ClusterRole 定义有点太细了:

https://github.com/vencrena-LT/traefik/blob/main/2_roles.yml

您可以尝试按照此处的示例进行操作:

https://github.com/sleighzy/k3s-traefik-v2-kubernetes-crd

关于为什么没有看到路线的问题: 当您指定时,Traefik 将从 k8s 路由中提取

        - --providers.kubernetescrd
        - --providers.kubernetesingress

另外请注意 traefik 所在的命名空间,您将在该命名空间上应用 IngressRoutes

【讨论】:

  • @vencrena 这能回答你的问题吗?
猜你喜欢
  • 2020-10-11
  • 2020-01-10
  • 2022-01-12
  • 1970-01-01
  • 2020-08-03
  • 2014-01-09
  • 2016-01-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多