我正在Kubernetes集群上运行Traefik来管理Ingress,Ingress已经运行了很长时间。
我最近实现了Cluster-Autoscaling,该方法工作正常,但在一个Node(由Autoscaler新创建)上的Traefik无法启动。它位于CrashLoopBackoff中,当我登录Pod时,我得到:[date] [time] command traefik error: field not found, node: redirect
。
Google未找到相关结果,并且错误本身不是非常具有描述性,因此我不确定在哪里查找。
我最好的猜测是,它与Traefik的配置文件中配置的RedirectRegex中间件有关:
[entryPoints.http.redirect]
regex = "^http://(.+)(:80)?/(.*)"
replacement = "https://$1/$3"
Traefik实际上仍然可以工作-我仍然可以从浏览器中的URL访问我所有的应用程序,即使是那些已死Traefik Pod节点上的应用程序。 其他节点上的其他Traefik Pod仍然运行良好,并且这些节点(至少在理论上是相同的)。
答案 0 :(得分:3)
进一步搜索之后,我在Reddit上发现了this。事实证明Traefik几天前已更新为v2.0,该版本不向后兼容。 只有该Pod才有问题,因为它是唯一为其拉出新(v2.0)映像的Pod(这是最近创建的唯一Node)。 我恢复到v1.7,直到我有时间正确修复它为止。必须将Daemonset更新为使用v1.7,然后杀死Pod,以便可以从旧映像中重新创建它。
答案 1 :(得分:-1)
开发人员有一个Migration Guide,看起来可能会有所帮助。
“重定向”不见了,但是现在有了“ RedirectScheme”和“ RedirectRegex”作为“中间件”的新概念。
它们似乎正在转向管道方法,因此您可以定义一个“中间件”链以应用于“入口点”,以决定如何定向它以及对该链中的数据包进行什么添加/删除/修改。 。 “后端”现在是“提供者”,它们具有更清晰的模块化配置概念。看起来它将比早期版本提供更好的组织。