Kubernetes 中的 Traefik v2。无法部署。看不到其他服务
Traefik v2 in Kubernetes. fail to deploy. do not see other services
我一直在尝试 运行 traefik v2.x 在 minikube 中检查它以及它如何将请求路由到所需的服务。我根本无法访问我的服务。很高兴了解我做错了什么。
- minikube 运行在 VirtualBox VM 中
- VM box 有我要发送 URL 请求
的实验室 IP 地址
- 在我的本地主机上,我将主机(
mydomain.local
和 mydomain.com
)设置为 minikube VM 的 IP 地址
如何重现:
- 创建 2 个命名空间
new-ns
和 new-who
- 将命名空间设置为 Ingress 的默认命名空间:
kubectl config set-context --current --namespace=new-ns
所有yaml文件都可以在https://github.com/vencrena-LT/traefik
中找到
- 部署 CustomResourceDefinition
- 部署 ClusterRole、ClusterRoleBinding 和 ServiceAccount(到 new-ns 命名空间)
- 部署 DaemonSet 和服务(到 new-ns 命名空间)
然后想部署 2 个应用程序:在两个命名空间中(用于测试目的)
- 到新 ns 命名空间的部署、服务和 IngressRoute
- 到新命名空间的部署、服务和 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.local
和 mydomain.com
并查看 whoami 服务。为什么在 Traefik 仪表板中看不到路线
您的 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
我一直在尝试 运行 traefik v2.x 在 minikube 中检查它以及它如何将请求路由到所需的服务。我根本无法访问我的服务。很高兴了解我做错了什么。
- minikube 运行在 VirtualBox VM 中
- VM box 有我要发送 URL 请求 的实验室 IP 地址
- 在我的本地主机上,我将主机(
mydomain.local
和mydomain.com
)设置为 minikube VM 的 IP 地址
如何重现:
- 创建 2 个命名空间
new-ns
和new-who
- 将命名空间设置为 Ingress 的默认命名空间:
kubectl config set-context --current --namespace=new-ns
所有yaml文件都可以在https://github.com/vencrena-LT/traefik
中找到- 部署 CustomResourceDefinition
- 部署 ClusterRole、ClusterRoleBinding 和 ServiceAccount(到 new-ns 命名空间)
- 部署 DaemonSet 和服务(到 new-ns 命名空间)
然后想部署 2 个应用程序:在两个命名空间中(用于测试目的)
- 到新 ns 命名空间的部署、服务和 IngressRoute
- 到新命名空间的部署、服务和 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.local
和 mydomain.com
并查看 whoami 服务。为什么在 Traefik 仪表板中看不到路线
您的 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