我有一个Kubernetes作业,有容器内存限制。例如:
apiVersion: v1
kind: Job
metadata:
name: example-job
spec:
containers:
- name: example-container-name
image: someimage
resources:
limits:
memory: "1Gi"
但是,如果容器消耗的内存超过1GB,则会得到OOMKILLED
。我无法控制我的应用程序占用多少内存,有没有一种方法可以防止Kubernetes杀死pod并限制其内存使用?我希望行为类似于个人电脑-如果你使用太多的内存,一切都变得更慢(由于交换,例如),但该进程不会被杀死的操作系统正常。
2条答案
按热度按时间0qx6xfy61#
这是因为你的应用程序占用了超过1 GB的内存,你确实限制了你的pod最大1 GB,所以当你的应用程序占用超过1 GB内存时,你的应用程序将被Kubernetes杀死,所以最好的措施是让你的应用程序资源使用更有效或增加你的限制。
附加提示:如果你有一个以上的容器在你的pod你需要考虑其他容器的内存使用。如果你有一个sidecar容器或变异的webhook,就会发生这种情况。
hxzsmxv22#
通过在描述符中指定资源限制,您将告诉Kubernetes,如果您超过该限制,则会终止您的pod。所以就像其他人说的,去掉限制,提高限制,或者让你的代码更高效。这是你唯一的选择