【发布时间】:2023-03-07 09:02:03
【问题描述】:
我有一个部署在 K8S 上的 rails 应用程序。在我的 Web 应用程序中,每天晚上 8 点运行一个 cronjob,需要 6 个小时才能完成。我注意到 OOMkilled 错误发生在 cronjob 启动几个小时后。我还增加了一个 pod 的内存,但错误仍然发生。
这是我的yaml 文件:
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: sync-data
spec:
schedule: "0 20 * * *" # At 20:00:00pm every day
concurrencyPolicy: Forbid
successfulJobsHistoryLimit: 5
failedJobsHistoryLimit: 5
jobTemplate:
spec:
ttlSecondsAfterFinished: 100
template:
spec:
serviceAccountName: sync-data
containers:
- name: sync-data
resources:
requests:
memory: 2024Mi # OOMKilled
cpu: 1000m
limits:
memory: 2024Mi # OOMKilled
cpu: 1000m
image: xxxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/path
imagePullPolicy: IfNotPresent
command:
- "/bin/sh"
- "-c"
- |
rake xxx:yyyy # Will take ~6 hours to finish
restartPolicy: Never
是否有在 K8S 上运行耗时较长的 cronjob 的最佳实践? 欢迎任何帮助!
【问题讨论】:
-
你用的是什么k8s?它是独立的(安装在您的服务器上)还是托管的(EKS/GKE 等)?
标签: kubernetes kubernetes-cronjob