Kubernetes 库伯内特斯·克罗恩的工作

Kubernetes 库伯内特斯·克罗恩的工作,kubernetes,kubernetes-cronjob,Kubernetes,Kubernetes Cronjob,我有一个部署在K8S上的rails应用程序。在我的web应用程序中,有一个cronjob每天晚上8点运行,需要6个小时才能完成。我注意到,从cronjob启动几小时后,出现了OOMkilled错误。我还增加了一个吊舱的内存,但错误仍然发生 这是我的yaml文件: apiVersion:batch/v1beta1 种类:克朗乔 元数据: 名称:同步数据 规格: 日程安排:“0 20***”#每天晚上20:00:00 并发策略:禁止 成功工作存储限制:5 作业失败存储限制:5 作业模板: 规格: t

我有一个部署在K8S上的rails应用程序。在我的web应用程序中,有一个cronjob每天晚上8点运行,需要6个小时才能完成。我注意到,从cronjob启动几小时后,出现了
OOMkilled
错误。我还增加了一个吊舱的内存,但错误仍然发生

这是我的
yaml
文件:

apiVersion:batch/v1beta1
种类:克朗乔
元数据:
名称:同步数据
规格:
日程安排:“0 20***”#每天晚上20:00:00
并发策略:禁止
成功工作存储限制:5
作业失败存储限制:5
作业模板:
规格:
ttlSecondsAfterFinished:100
模板:
规格:
serviceAccountName:同步数据
容器:
-名称:同步数据
资源:
请求:
内存:2024Mi#OOMKilled
cpu:1000m
限制:
内存:2024Mi#OOMKilled
cpu:1000m
图片:xxxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/path
imagePullPolicy:如果不存在
命令:
-“/bin/sh”
-“-c”
- |
rake xxx:yyyy#需要约6小时才能完成
餐馆政策:永不
在K8S上运行长时间的cronjob有什么最佳实践吗?
欢迎任何帮助

老实说,kubernetes中没有正确的资源请求/限制内容,因为这完全取决于你的pod在做什么。我建议或者您可以做的一件事是部署垂直吊舱自动缩放,并观察垂直吊舱自动缩放器为您的cron作业提供的完美资源请求/限制。这是一篇非常好的文章,你可以从它开始,你将了解如何在你的需求中利用它


老实说,kubernetes中没有正确的资源请求/限制内容,因为它完全取决于你的pod正在做什么。我建议或者您可以做的一件事是部署垂直吊舱自动缩放,并观察垂直吊舱自动缩放器为您的cron作业提供的完美资源请求/限制。这是一篇非常好的文章,你可以从它开始,你将了解如何在你的需求中利用它


发生OOM死亡有两个原因

  • 您的pod占用的内存超过了指定的限制。在这种情况下,您需要明显增加限制

  • 如果节点中的所有吊舱占用的内存超过了它们的请求,那么Kubernetes将杀死一些吊舱以释放空间。在这种情况下,你可以给这个吊舱更高的优先级


  • 您应该有适当的监控来实际确定原因。适当的监控将向您显示哪些POD符合预期,哪些不符合预期。您还可以对长时间运行的pod使用节点选择器,并设置优先级类,该类将首先删除非cron pod。

    OOM死机有两个原因

  • 您的pod占用的内存超过了指定的限制。在这种情况下,您需要明显增加限制

  • 如果节点中的所有吊舱占用的内存超过了它们的请求,那么Kubernetes将杀死一些吊舱以释放空间。在这种情况下,你可以给这个吊舱更高的优先级


  • 您应该有适当的监控来实际确定原因。适当的监控将向您显示哪些POD符合预期,哪些不符合预期。您还可以对长时间运行的POD使用节点选择器,并设置优先级级别,这将首先删除非cron POD。

    您使用的k8s是什么?它是独立的(安装在您的服务器上)还是管理的(EKS/GKE等)?您使用的k8s是什么?它是独立的(安装在您的服务器上)还是管理的(EKS/GKE等)?