Kubernetes sidecar 容器中的進程記憶體使用不匹配

Kubernetes sidecar 容器中的進程記憶體使用不匹配

我有一個包含以下資源的邊車容器:

resources:
  limits:
    memory: 512Mi
  requests:
    memory: 64Mi

然而,當我運行時top,我看到了這個:

  • envoy 和 Pilot-agent 似乎分別使用 ~ 363MB 和 61MB
  • 頂部已用記憶體為 54.6MB
  • 運行free -m給出以下結果;看似不相關的答案
$ free -m
              total        used        free      shared  buff/cache   available
Mem:         385307       47140      315018         292       23148      336021
Swap:             0           0           0

邊車上運行

這裡到底發生了什麼,這些進程消耗了多少記憶體?

答案1

此空閒和頂部輸出顯示,主機記憶體總量約為 385,000 MiB,已使用約 50,000 MiB。

容器共享一個內核,因此主機指標通常會顯示節點範圍的數字。即使命名空間只顯示您的進程和檔案。這與專用虛擬機器或實體主機不同,後者的作業系統僅用於支援您的應用程式。

每個容器編號需要查詢 cgroups 編號。在 Stack Overflow 上查看一些實現此目的的方法:檢查 kubernetes pod CPU 和內存。其中許多需要指標伺服器。

請注意新增進程的 RESident 記憶體並期望它是系統的確切記憶體使用量。這不包括共享記憶體或快取。核心對記憶體做了一些奇怪的記帳技巧。你的 3 位有效數字是正確的想法。儘管在少量進程的簡單情況下,主要使用私有內存,但這是一個很好的估計。

相關內容