更新目标 pod 时如何减少 nginx 入口路由的停机时间?
How do I reduce downtime of nginx ingress route when updating a destination pod?
我已经设置了一个 nginx ingres,它可以根据主机将流量路由到特定的部署。
host A --> Service A, host B --> Service B
如果我更新部署 A 的配置,该更新会在 不到 2 秒 内完成。但是,在那之后我的主机 A 的 nginx ingress 出现故障,需要 5 到 7 秒 才能指向带有新 pod 的服务 A。
我怎样才能减少这种延迟?有没有办法加快nginx ingress的性能,使其尽快指向新的pod(最好少于3秒?)
谢谢!
您可以使用 nginx.ingress.kubernetes.io/service-upstream
注释来抑制正常的端点行为并直接使用服务。这可以更好地与某些部署模型集成,但 ingress-nginx 需要 5-7 秒才能看到 Endpoints 更新。从 pod 被删除到 ingress-nginx 看到 Endpoint 被删除之间可能有一个短暂的间隔。您通常使用一个只休眠几秒钟的预停止挂钩来解决这个问题,以确保在它实际退出时,端点更改已在所有地方得到处理。
我已经设置了一个 nginx ingres,它可以根据主机将流量路由到特定的部署。
host A --> Service A, host B --> Service B
如果我更新部署 A 的配置,该更新会在 不到 2 秒 内完成。但是,在那之后我的主机 A 的 nginx ingress 出现故障,需要 5 到 7 秒 才能指向带有新 pod 的服务 A。
我怎样才能减少这种延迟?有没有办法加快nginx ingress的性能,使其尽快指向新的pod(最好少于3秒?)
谢谢!
您可以使用 nginx.ingress.kubernetes.io/service-upstream
注释来抑制正常的端点行为并直接使用服务。这可以更好地与某些部署模型集成,但 ingress-nginx 需要 5-7 秒才能看到 Endpoints 更新。从 pod 被删除到 ingress-nginx 看到 Endpoint 被删除之间可能有一个短暂的间隔。您通常使用一个只休眠几秒钟的预停止挂钩来解决这个问题,以确保在它实际退出时,端点更改已在所有地方得到处理。