flink 1.14.3 run on k8s,application模式,更新升级代码时,如果删除deployment,不删除configmaps,则代码执行逻辑还是旧的,不会更新;如果删除deployment和configmaps,则代码会更新,但是却无法从checkpoint恢复,因为从那个checkpoint恢复写在configmap中,请教大佬如何在代码逻辑更新升级时如何保留confimap,以便自动从检查点恢复吗?
楼主你好,在更新升级代码时,可以考虑使用 RollingUpdate 策略来实现无缝更新。该策略会逐步创建新的 Pod,替换旧的 Pod,在整个过程中保持应用运行。
具体步骤如下:
修改 Deployment 的镜像版本或代码版本。
使用 kubectl apply 命令更新 Deployment:
kubectl apply -f deployment.yaml
kubectl rollout status deployment/<deployment-name>
当 Deployment 更新成功后,可以检查 ConfigMap 是否正确的被应用。如果 ConfigMap 没有被正确的应用,可以使用 kubectl patch 命令来修改 Deployment,强制重新加载 ConfigMap:
kubectl patch deployment <deployment-name> -p '{"spec":{"template":{"metadata":{"annotations":{"date":"'"`date +%s`"'"}}}}}'
需要注意的是,如果应用遇到问题导致无法从checkpoint恢复,则需要进行排查和调试,以确定问题的根本原因。比如,可以检查应用程序的日志、checkpoint 目录是否正确等。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。