通常是由于?cgroup v2?導致的兼容性問題。Ubuntu 22.04 默認使用?cgroup v2,而舊版本的 cAdvisor 可能不完全支持它。以下是解決方案:
方法 1:啟用 cgroup v1(推薦)
臨時切換回?cgroup v1(cAdvisor 兼容性更好):
1、編輯?GRUB 配置:
sudo vi?/etc/default/grub
?2、找到?GRUB_CMDLINE_LINUX
,并添加:
systemd.unified_cgroup_hierarchy=0
?例如:
GRUB_CMDLINE_LINUX="systemd.unified_cgroup_hierarchy=0"
?3、更新 GRUB 并重啟:
sudo update-grub
sudo reboot
4、重啟后,檢查是否已切換回?cgroup v1:
stat -fc %T /sys/fs/cgroup/
如果返回?
tmpfs
?或?cgroup
?→?cgroup v1(成功)如果返回?
cgroup2fs
?→?cgroup v2(未生效)
?5、重新運行 cAdvisor:
docker run \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:ro \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
--volume=/dev/disk/:/dev/disk:ro \
--volume=/sys/fs/cgroup:/sys/fs/cgroup:ro \
--publish=18080:8080 \
--detach=true \
--name=cadvisor \
--privileged \
--device=/dev/kmsg \
google/cadvisor:latest
?
方法 2:使用支持 cgroup v2 的 cAdvisor 版本
如果不想切換回 cgroup v1,可以嘗試較新版本的 cAdvisor(如?v0.47.0+
):
docker run \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:ro \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
--volume=/dev/disk/:/dev/disk:ro \
--volume=/sys/fs/cgroup:/sys/fs/cgroup:ro \
--publish=18080:8080 \
--detach=true \
--name=cadvisor \
--privileged \
--device=/dev/kmsg \
gcr.io/cadvisor/cadvisor:v0.47.0
?驗證 cAdvisor 是否運行成功
docker logs cadvisor
如果成功,訪問?http://<your-server-ip>:18080
?應該能看到 cAdvisor 的監控界面。