我有一个 Kubernetes cronjob,它每天午夜启动一个 pod。里面只有一个容器。它获取一些数据,进行一些计算,上传几个文件并退出(它是一个 python 3.10-...
我有一个 Kubernetes cronjob,它每天午夜启动一个 pod。里面只有 1 个容器。它获取一些数据,进行一些计算,上传几个文件并退出(这是一个 python 3.10-slim 容器,主要执行 git 操作:获取和拉取,这可能会占用大量内存)。容器定义了资源限制,即:
Limits:
cpu: 300m
memory: 2Gi
Requests:
cpu: 300m
memory: 1Gi
kubectl get pods 检查 pod 时 ,我得到以下信息:
NAME READY STATUS RESTARTS AGE
my-scheduled-pod 0/1 OOMKilled 0 11h
kubectl describe pod 查看 pod ,它显示 pod 的状态为“成功”,但对于容器,我看到以下内容:
State: Terminated
Reason: OOMKilled
Exit Code: 0
Started: Thu, 08 Aug 2024 00:09:03 +0200
Finished: Thu, 08 Aug 2024 01:04:57 +0200
Ready: False
Restart Count: 0
然而,一切都按计划进行,容器确实在大约一小时内完成了所有工作,并设法上传了结果文件并成功退出。没有任何迹象表明它已被终止、重新启动或任何不正常的现象。我用 kubectl logs ,在此期间它一直处于正常运行状态。
在下图中,您可以看到 黄色的 container_memory_usage_bytes 绿色的 container_memory_cache
容器内存使用情况随时间变化
您可以看到它在运行一段时间后内存使用量达到最大值,在某个时刻,缓存降至 0,此后不久又开始增加。
查看时,pod 被标记为 'OOMKilled', kubectl get pods 因为从我的角度来看一切正常并且容器没有重新启动或终止。
Pod 状态显示 OOMKilled,但没有终止迹象
下载声明:
本站所有软件和资料均为软件作者提供或网友推荐发布而来,仅供学习和研究使用,不得用于任何商业用途。如本站不慎侵犯你的版权请联系我,我将及时处理,并撤下相关内容!