我之前在家里的K8s集群上通过Helm安装了Traefik 2。我不记得具体的版本,但我知道它是Traefik 2的某个版本。我的集群实际上是几个Raspberry Pis,我在那里安装了Kubernetes和K3 s。几个月来它一直工作得很好。当我使用Ingress对象创建服务时,Traefik会检测到这一点,并像负载均衡器一样工作。将服务暴露给特定的主机名。
今天我运行了一个任务,这个任务显然有点太耗费资源了,因为它因为OOM错误而驱逐了Traefik pod。即使在杀死这个大任务之后,Traefik pod也没有自己恢复,所以我卸载了Traefik(通过helm uninstall
),然后使用Helm安装了最新版本(2.9.10)。特别是我使用了以下命令来安装它(在这里我替换了 www.example.com with my真实的IP):
helm upgrade --install traefik --set dashboard.enabled=true --set rbac.enabled=true --set="service.externalIPs={1.2.3.4}" --set="additionalArguments={--api=true,--log.level=INFO,--providers.kubernetesingress.ingressclass=traefik-internal,--serversTransport.insecureSkipVerify=true}" traefik/traefik
然而,尽管Traefik现在运行没有任何明显的错误,Ingress Controller功能似乎不起作用。当我在Services下查看Traefik Jmeter 板时,我看到API@internal,dashboard@internal,noop@internal,ping@internal,和prometheus@internal...但没有其他的。以前我看到 Jmeter 板上列出的服务与我定义的每个Ingress对象相对应。如果需要的话,我可以发布任何Ingress对象的完整YAML,但只要说它们都定义了kubernetes.io/ingress.class: traefik
注解就足够了。
Traefik的最新版本有什么变化吗?我使用的helm upgrade --install
命令与我几个月前使用的命令相同。但就像我说的,这一次Ingress Controller功能似乎不再工作。
1条答案
按热度按时间rn0zuynd1#
它“不起作用”,因为你在helm install命令中提供了额外的参数
--providers.kubernetesingress.ingressclass=traefik-internal
,traefik文档对此参数说,指定了这个参数,只有带有注解kubernetes.io/ingress.class: traefik-internal
的Ingress
对象才会被处理。但是,您的
Ingress
对象的注解是kubernetes.io/ingress.class: traefik
--这就是它“不再工作”的原因。要解决这个问题,您可以运行helm upgrade命令,并使用已调整的参数:
helm upgrade --install traefik --set dashboard.enabled=true --set rbac.enabled=true --set="service.externalIPs={1.2.3.4}" --set="additionalArguments={--api=true,--log.level=INFO,--serversTransport.insecureSkipVerify=true}" traefik/traefik
这将使traefik处理所有不带注解、具有空值或值
traefik
* 的Ingress
对象 *如果你想限制我
helm upgrade --install traefik --set dashboard.enabled=true --set rbac.enabled=true --set="service.externalIPs={1.2.3.4}" --set="additionalArguments={--api=true,--log.level=INFO,--providers.kubernetesingress.ingressclass=traefik,--serversTransport.insecureSkipVerify=true}" traefik/traefik