OpenKruise中原地升级,endpoint是什么时候给摘除的,就绪探针失败才会?

OpenKruise中原地升级,endpoint是什么时候给摘除的,就绪探针失败才会?

展开
收起
十一0204 2023-10-24 20:26:33 105 分享 版权
4 条回答
写回答
取消 提交回答
  • 在OpenKruise中,endpoint的摘除时机与就绪探针的状态密切相关。当Pod变为非就绪状态时,Readiness Probe会持续进行探测以判断容器的健康状态。如果探测结果表明Pod的健康状态不佳,系统将会将此Pod从相应Service的后端endpoint列表中隔离出去。此外,如果探测过程中发现Pod一直处于非健康状态,那么系统将会根据预先设置的策略触发告警。因此,OpenKruise中的endpoint摘除是基于Pod的健康状态和就绪探针的结果进行的。

    2023-10-26 15:27:01
    赞同 展开评论
  • OpenKruise 中的原地升级是指在不替换 Pod 的前提下,直接更新 Pod 中的应用镜像版本。
    在原地升级过程中,当旧的 Pod 被终止时,Endpoint Controller 会检查新的 Pod 是否已准备好接收流量。这是通过读取新 Pod 的 Readiness Probe 来完成的。
    如果新 Pod 的 Readiness Probe 失败,那么 Endpoint Controller 将不再将该 Pod 的 IP 地址添加到相应的 Service 对象中,从而使得旧 Pod 所承载的服务不可用。这就是所谓的 "endpoint 删减"。
    因此,在 OpenKruise 中,只有当新 Pod 的 Readiness Probe 成功时,Endpoint Controller 才会给新 Pod 加入到 Service 对象中,并删除旧 Pod 的 endpoint。如果 Readiness Probe 失败,Endpoint Controller 不会给新 Pod 加入到 Service 对象中,而是等待新 Pod 在经过一段时间的重试后再次尝试。Endpoint Controller 的行为可能受到 Service 对象的属性的影响,例如 externalTrafficPolicysessionAffinity 等。这些属性可能会影响 Endpoint Controller 如何处理旧 Pod 的 IP 地址。

    2023-10-25 16:09:39
    赞同 展开评论
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    在OpenKruise中原地升级时,Endpoint会在升级完成后被摘除。在升级过程中,Endpoint会继续接收流量,然后在升级完成后被摘除。至于就绪探针失败是否会导致Endpoint被摘除,这取决于您的配置和策略。如果您启用了就绪探针,并且设置了合理的超时时间,那么当就绪探针失败时,Endpoint会被摘除。但是,如果您没有启用就绪探针,或者没有设置合理的超时时间,那么Endpoint可能不会被摘除。建议您根据您的需求和环境,配置和调整就绪探针的设置,以确保Endpoint能够在升级完成后被正确地摘除。

    2023-10-25 14:02:56
    赞同 展开评论
  • 意中人就是我呀!

    "原地升级之前会先把 pod 设置为 not ready,你可以关注一下 gracePeriodSeconds 字段,可以 not ready 一段时间之后,再执行 原地升级的行为。是不是就满足你的需求了。 https://openkruise.io/docs/user-manuals/cloneset#update-types

    那么就不会有这个事件
    虽然不会有 delete 事件,但是我们会把 pod 设置为 not ready,endpoint 也是可以摘流到的。此答案整理至钉群“OpenKruise 社区交流群”"

    2023-10-24 21:06:11
    赞同 展开评论