OpenKruise 中使用SidecarSet时maxUnavailable设置的太小,异常Pod会导致升级任务无法进行,有什么优化经验吗?比如怎么判断设置多少合适,有什么办法检测出哪些pod异常导致任务卡住了?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在使用 OpenKruise 的 SidecarSet 进行升级任务时,确实可以遇到由于异常 Pod 导致升级任务无法进行的情况。以下是一些优化经验和建议:
调整 maxUnavailable 值:maxUnavailable 参数指定了在进行升级过程中允许的最大不可用 Pod 数量。如果设置得太小,可能会导致升级任务无法进行。您可以根据应用的特性和资源需求来调整该值。一般建议将其设置为足够大,以容忍一定数量的异常 Pod。
监控和日志记录:通过监控工具(如Prometheus)或集群日志记录(如ELK Stack),可以检测到发生故障或异常的 Pod。这样,您可以及时发现异常 Pod,并采取相应的措施。
使用 Readiness Probe 和 Liveness Probe:合理配置 Pod 的 Readiness Probe 和 Liveness Probe 可以帮助检测并处理异常 Pod。Liveness Probe 用于确定 Pod 是否处于健康状态,Readiness Probe 用于确定 Pod 是否准备好接收流量。如果一个 Pod 处于非健康或不可用状态,OpenKruise 将自动替换它。
回滚策略:配置适当的回滚策略可以帮助您应对升级失败的情况。OpenKruise 提供了多种回滚策略,例如暂停、回滚到指定版本等。根据您的需求,选择合适的回滚策略以确保应用的稳定性。
备份和恢复:在进行升级之前,定期备份关键数据和配置,并建立可靠的恢复机制。这样,即使升级任务受阻,您可以通过快速恢复到先前的稳定状态来避免业务中断。
其实通过 status 那几个字段也能判断出来。可以assgin 给你自己。https://github.com/openkruise/kruise/issues/1331 也可以有一些condition 之类的。。估计这样,你的 上层paas 更好对接了。此回答整理至钉群“OpenKruise 社区交流群”。
阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。