Docker
了解 Docker 和 Kubernetes 記憶體使用情況
我正在執行一個帶有一個主節點和兩個工作節點的小型 Kubernetes 集群。我正在嘗試了解它的記憶體使用情況以及我是否已經耗盡了資源……如果是這樣,我應該如何準確地檢測到這一點。
每個節點都有 4 GB 的記憶體並且沒有交換(根據最佳實踐)。根據 Docker,查看其中一個節點,容器使用 16 GB 記憶體。這怎麼可能?
khost1:~$ docker stats --no-stream --format 'table {{.MemUsage}}' | sed 's/\.\([0-9]*\)GiB/\1MiB/g' | sed 's/[A-Za-z]*//g' | awk '{sum += $1} END {print sum "MB"}' 16436.8MB khost1:~$ free total used free shared buff/cache available Mem: 4039552 3255808 234400 54336 549344 473648 Swap: 0 0 0
此外,我在 Kubernetes 儀表板上看到的只是 11.3 GB 的 3.6 GB(跨所有三個節點?)已被保留。我認為這是因為我的 pod 大部分都沒有指定請求和限制。我是否需要這樣做才能讓 Kubernetes 有效地管理記憶體?
docker stats
報告用於磁碟記憶體和使用的頁面,這有點誤導。如果您的項目對資源利用敏感,則絕對應該使用資源請求和限制參數。
為了保護您的集群資源耗盡,您可能還需要啟用資源配額
一旦啟用它,您就可以通過命名空間中的 pod 來檢查實際資源使用情況
kubectl describe quota