Centos7

kubernetes - 物理 kubernetes 節點上的 OOM 事件 - 如何限制?

  • July 1, 2020

我有自己的物理 Kubernetes 節點,託管在物理機器上。(12 核,16GB 記憶體)我注意到在重負載期間,我在日誌中有失敗的 pod 和 OOM 事件(記憶體不足終止)。

如果 RAM 耗盡,我如何強制 kubernetes 不在節點上安排任何作業?我正在kubernetes v1.16.11跑步CentOS Linux 7 3.10.0-1127.10.1.el7.x86_64

PS 我添加了一段有問題的 pod 程式碼,我正在使用請求和限制

   containers:
 - name: jnlp
 (...)
   resources:
     requests:
       cpu: 500m
       memory: 1024Mi
     limits:
       memory: 2048Mi

- name: build
 (...)
   resources:
     requests:
       cpu: 3000m
       memory: 4096Mi

requests正如其他人所指出的那樣,您很可能缺少limits您的 Pod。在您的情況下,由於即使您的核心也報告 OOM 事件,所以您的 Pod 似乎會消耗大量記憶體。您可以在此處閱讀有關資源管理的更多資訊:https ://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

因此,請檢查您的 Pod 並嘗試強制執行容器資源。下面是一個容器的範例,它“保留”了 300Mi 的記憶體(容器保證獲得的資源),但最多可以使用 600Mi 的記憶體:

apiVersion: v1
kind: Pod
metadata:
 name: example-pod
spec:
 containers:
 - name: example-container
   image: example-image:1.0
   resources:
     requests:
       memory: "300Mi"
       cpu: "1000m"
     limits:
       memory: "600Mi"
       cpu: "2000m"

如果容器嘗試使用超過 600Mi 的記憶體,它將被 OOMKilled。

引用自:https://serverfault.com/questions/1023327