Я развернул metrics-server
в моем кластере K8s (версия 1.15)
Я понял, что это стандартный способ выполнения простых проверок использования mem
У меня есть POD, который содержит несколько процессов ( dumb-init
Я хочу узнать точное текущее использование памяти моего POD.
Вывод kube-capacity --util --pods
:
NODE NAMESPACE POD CPU REQUESTS CPU LIMITS CPU UTIL MEMORY REQUESTS MEMORY LIMITS MEMORY UTIL
sj-k8s1 kube-system kube-apiserver-sj-k8s1 250m (6%) 0m (0%) 77m (1%) 0Mi (0%) 0Mi (0%) 207Mi (2%)
...
sj-k8s3 salt-provisioning salt-master-7dcf7cfb6c-l8tth 0m (0%) 0m (0%) 220m (5%) 1536Mi (19%) 3072Mi (39%) 1580Mi (20%)
Показывает, что POD salt-master в настоящее время использует ~ 1,6 Ги, а Kubeapi использует ~ 200Mi * 1014 *
Однако при выполнении sj-k8s3
команда ps aux | awk '$12 ~ /salt-master/ {sum += $6} END {print sum}'
(сумма RSS из вывода PS):
2051208
Что составляет ~ 2 Ги, вывод /sys/fs/cgroup/memory/memory.stats
:
cache 173740032
rss 1523937280
rss_huge 0
shmem 331776
mapped_file 53248
dirty 4096
writeback 0
pgpgin 34692690
pgpgout 34278218
pgfault 212566509
pgmajfault 6
inactive_anon 331776
active_anon 1523916800
inactive_file 155201536
active_file 18206720
unevictable 0
hierarchical_memory_limit 2147483648
total_cache 173740032
total_rss 1523937280
total_rss_huge 0
total_shmem 331776
total_mapped_file 53248
total_dirty 4096
total_writeback 0
total_pgpgin 34692690
total_pgpgout 34278218
total_pgfault 212566509
total_pgmajfault 6
total_inactive_anon 331776
total_active_anon 1523916800
total_inactive_file 155201536
total_active_file 18206720
total_unevictable 0
Этот POD на самом деле содержит два docker контейнера, поэтому фактическая сумма RSS составляет:
2296688
, что еще больше: 2.3Gi
На узле apiserver выполнение только ps aux
показывает, что процесс RSS имеет вид: 447948
Вывод /sys/fs/cgroup/memory/memory.stats
:
cache 78499840
rss 391188480
rss_huge 12582912
shmem 0
mapped_file 69423104
dirty 0
writeback 0
pgpgin 111883
pgpgout 1812
pgfault 100603
pgmajfault 624
inactive_anon 0
active_anon 215531520
inactive_file 253870080
active_file 270336
unevictable 0
hierarchical_memory_limit 8361357312
total_cache 78499840
total_rss 391188480
total_rss_huge 12582912
total_shmem 0
total_mapped_file 69423104
total_dirty 0
total_writeback 0
total_pgpgin 111883
total_pgpgout 1812
total_pgfault 100603
total_pgmajfault 624
total_inactive_anon 0
total_active_anon 215531520
total_inactive_file 253870080
total_active_file 270336
total_unevictable 0
Может кто-нибудь объяснить, почему Заявленное использование памяти POD отличается от простого ps
почти на 40% (для процесса apiserver на 100)?
РЕДАКТИРОВАТЬ: Я обновил сообщенные значения памяти, чтобы включить вывод /sys/fs/cgroup/memory/memory.stat
, который, кажется, + - соответствует использованию POD, сообщенному kube-capacity
Как предложено в первом комментарии: означает ли это, что разница является общей памятью только (сообщается PS, но не метриками POD / cgroup)?
Разница довольно большая