k8s oomkilled超出容器的內存限制


超出容器的內存限制

只要節點有足夠的內存資源,那容器就可以使用超過其申請的內存,但是不允許容器使用超過其限制的 資源。如果容器分配了超過限制的內存,這個容器將會被優先結束。如果容器持續使用超過限制的內存, 這個容器就會被終結。如果一個結束的容器允許重啟,kubelet就會重啟他,但是會出現其他類型的運行錯誤。

本實驗,我們創建一個Pod嘗試分配超過其限制的內存,下面的這個Pod的配置文檔,它申請50M的內存, 內存限制設置為100M。

memory-request-limit-2.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: memory-demo-2
spec:
  containers:
  - name: memory-demo-2-ctr
    image: vish/stress
    resources:
      requests:
        memory: 50Mi
      limits:
        memory: "100Mi"
    args:
    - -mem-total
    - 250Mi
    - -mem-alloc-size
    - 10Mi
    - -mem-alloc-sleep
    - 1s

在配置文件里的args段里,可以看到容器嘗試分配250M的內存,超過了限制的100M。

創建Pod:

kubectl create -f https://k8s.io/docs/tasks/configure-pod-container/memory-request-limit-2.yaml --namespace=mem-example

查看Pod的詳細信息:

kubectl get pod memory-demo-2 --namespace=mem-example

這時候,容器可能會運行,也可能會被殺掉。如果容器還沒被殺掉,重復之前的命令直至 你看到這個容器被殺掉:

NAME            READY     STATUS      RESTARTS   AGE
memory-demo-2   0/1       OOMKilled   1          24s

查看容器更詳細的信息:

kubectl get pod memory-demo-2 --output=yaml --namespace=mem-example

這個輸出顯示了容器被殺掉因為超出了內存限制。

lastState:
   terminated:
     containerID: docker://65183c1877aaec2e8427bc95609cc52677a454b56fcb24340dbd22917c23b10f
     exitCode: 137
     finishedAt: 2017-06-20T20:52:19Z
     reason: OOMKilled
     startedAt: null

本實驗里的容器可以自動重啟,因此kubelet會再去啟動它。輸入多幾次這個命令看看它是怎么 被殺掉又被啟動的:

kubectl get pod memory-demo-2 --namespace=mem-example

這個輸出顯示了容器被殺掉,被啟動,又被殺掉,又被啟動的過程:

stevepe@sperry-1:~/steveperry-53.github.io$ kubectl get pod memory-demo-2 --namespace=mem-example
NAME            READY     STATUS      RESTARTS   AGE
memory-demo-2   0/1       OOMKilled   1          37s
stevepe@sperry-1:~/steveperry-53.github.io$ kubectl get pod memory-demo-2 --namespace=mem-example
NAME            READY     STATUS    RESTARTS   AGE
memory-demo-2   1/1       Running   2          40s

查看Pod的歷史詳細信息:

kubectl describe pod memory-demo-2 --namespace=mem-example

這個輸出顯示了Pod一直重復着被殺掉又被啟動的過程:

... Normal  Created   Created container with id 66a3a20aa7980e61be4922780bf9d24d1a1d8b7395c09861225b0eba1b1f8511
... Warning BackOff   Back-off restarting failed container


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM