Kubernetes-GC

Kubernetes集羣中垃圾回收(Garbage Collection)機制由kubelet完成。kubelet按期清理再也不使用的容器和鏡像,每分鐘進行一次容器的GC操做,每五分鐘進行一次鏡像的GC操做。node

容器(Container)的GC設置

可以被清理的容器只能是僅由kubelet管理的容器。在kubelet節點上經過docker run建立的容器不會被kubelet進行GC清理操做。docker

kubelet如下3個參數用於設置容器GC的條件:生命週期

  • --minimum-container-ttl-duration:已中止的容器在被清理以前最小的存活時間,例如「300ms」、「10s」、「2h45m」,超過此存活時間的容器將被標記爲可被GC清理,默認值爲1分鐘。
  • --maximum-dead-containers-per-container:以Pod爲單位的能夠保留的已中止的(屬於同一Pod的)容器集的最大數量。有時,Pod中容器運行失敗或者健康檢查失敗後,會被kubelet自動重啓,這將產生一些中止的容器。默認值爲2。
  • --maximum-dead-containers:在本node上保留的已中止容器的最大數量,因爲中止的容器也會消耗磁盤空間,因此超過該上限後,kubelet會自動清理已中止的容器釋放磁盤空間,默認值爲240。

如需關閉針對容器的GC操做,能夠將--minimun-container-ttl-duration設置爲0,將--maximum-dead-containers-per-container和--maximum-dead-containers設置爲負數。io

鏡像(Image)的GC操做

Kubernetes系統中經過imageController和kubelet中集成的cAdvisor共同管理鏡像的生命週期,主要根據本node的磁盤使用觸發鏡像的GC操做。ast

Kubelet的如下3個參數用於設置GC的條件:集羣

  • --minimum-image-ttl-duration:再也不使用的鏡像在被清理以前最小的存活時間;
  • --image-gc-high-threshold:當磁盤使用率達到該值時,觸發鏡像的GC操做,默認值爲90%;
  • --image-gc-low-threshold:當磁盤使用率降到該值時,GC操做結束,默認值是80%;

刪除鏡像的機制爲:當磁盤使用率達到image-gc-high-threshold(例如90%)時觸發,GC操做從最久未使用(Least Recently Used)的鏡像開始刪除,知道磁盤使用率將爲image-gc-low-threshold(80%)或沒有鏡像可刪爲止。容器

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息