通过kubernetes注释检查Traefik运行状况

通过kubernetes注释检查Traefik运行状况,kubernetes,traefik,kubernetes-ingress,Kubernetes,Traefik,Kubernetes Ingress,我想通过Kubernetes注释设置Traefik后端运行状况检查,但根据官方文档,似乎不支持该功能 Traefik不支持Kubernetes入口的功能有什么特别的原因吗?我想知道,因为支持后端的健康检查 我知道在Kubernetes中,您可以为POD配置就绪/活跃度探测器,但我有leader/follower时尚服务,因此Traefik应该只将流量路由到leader UPD: 唯一的引线可以接受来自Traefik的连接;跟随者将拒绝连接 我脑子里有两个准备就绪检查: 服务已启动并运行,准备

我想通过Kubernetes注释设置Traefik后端运行状况检查,但根据官方文档,似乎不支持该功能

Traefik不支持Kubernetes入口的功能有什么特别的原因吗?我想知道,因为支持后端的健康检查

我知道在Kubernetes中,您可以为POD配置就绪/活跃度探测器,但我有leader/follower时尚服务,因此Traefik应该只将流量路由到leader

UPD:

  • 唯一的引线可以接受来自Traefik的连接;跟随者将拒绝连接
  • 我脑子里有两个准备就绪检查:
    • 服务已启动并运行,准备被选为领导者(kubernetes readiness probe)
    • 服务已启动并运行,并作为领导者进行了推广(traefik健康检查)

Traefik依靠Kubernetes提供底层豆荚健康状况的指示,以确定它们是否准备好提供服务。Kubernetes在pod中公开了两种机制,用于向编排层传递信息:

  • 活动性检查在pod中运行的进程转换为中断状态时向Kubernetes提供指示。活性检查失败将导致Kubernetes破坏豆荚并重新创建它
  • 准备就绪检查以确定pod何时准备好提供服务。准备就绪检查失败将导致端点控制器从其提供的任何服务的端点列表中删除pod。然而,它将继续运行
在本例中,您将通过就绪检查向Traefik公开信息。使用就绪检查配置您的POD,如果POD处于不应接收任何流量的状态,该检查将失败。当就绪状态改变时,Kubernetes将根据将流量路由到pod以添加或删除pod的任何服务更新端点列表。Traefik将相应地更新其世界视图,以便从支持入口的端点列表中添加或删除pod

如果每个pod可以确定它是主pod还是从pod,并在准备状态检查中提供适当的指示,则此模型没有理由与您的主/从架构不兼容。但是,如果不特别注意,主/从状态更改和Kubernetes更新其端点之间会有竞争,因为准备状态探测只会定期进行。我建议假设情况就是这样,并构建逻辑来拒绝非主吊舱接收的请求



作为增强健壮性的未来考虑,您可以将服务的入口层从实现主/从系统的业务逻辑中分离出来,允许所有实例与Traefik通信,并将工作排队,以供“主”考虑节点。

我对kubernetes readiness probe不太满意,因为很难区分豆荚处于健康状态但被选为追随者,还是豆荚不健康。我同意这是次优的。如果您不想使用准备就绪检查,则需要考虑重新构建应用程序,以便在其他地方进行路由选择。