在Centos 7上使用大量CPU的Virtualbox或KVM Minikube
我已经按照kubernetes的指示安装了minikube。 在启动它并等待了一段时间后,我注意到它使用了大量的CPU,尽管我没有在其中运行什么特别的东西在Centos 7上使用大量CPU的Virtualbox或KVM Minikube,virtualbox,kvm,minikube,Virtualbox,Kvm,Minikube,我已经按照kubernetes的指示安装了minikube。 在启动它并等待了一段时间后,我注意到它使用了大量的CPU,尽管我没有在其中运行什么特别的东西 top显示以下内容: %Cpu(s): 0.3 us, 7.1 sy, 0.5 ni, 92.1 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 32521856 total, 2259992 free, 9882020 used, 20379844 buff/cache KiB S
top
显示以下内容:
%Cpu(s): 0.3 us, 7.1 sy, 0.5 ni, 92.1 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 32521856 total, 2259992 free, 9882020 used, 20379844 buff/cache
KiB Swap: 2097144 total, 616108 free, 1481036 used. 20583844 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
4847 root 20 0 3741112 91216 37492 S 52.5 0.3 9:57.15 VBoxHeadless
lscpu
显示以下内容:
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 8
On-line CPU(s) list: 0-7
Thread(s) per core: 2
Core(s) per socket: 4
Socket(s): 1
NUMA node(s): 1
Vendor ID: AuthenticAMD
CPU family: 21
Model: 2
Model name: AMD Opteron(tm) Processor 3365
如果我使用KVM而不是VirtualBox,我会看到同样的效果
kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 20m
问题:
1) 有没有可能找出它为什么使用这么多CPU?(请注意,我没有生成任何加载,并且我的任何容器都没有处理任何数据)
2) 正常吗?你确定没有任何东西在运行吗?如果键入
kubectl get pods--all namespace
,会发生什么?默认情况下,Kubernetes仅显示默认名称空间内的POD(因此不包括系统名称空间内的POD)
此外,虽然我不是CPU专家,但这似乎是您现有硬件的合理消耗。在回答问题1时):
您可以ssh
进入minikube,然后从那里运行top
查看正在运行的进程:
minikube ssh
top
有很多docker和kublet的东西在运行:
top - 21:43:10 up 8:27, 1 user, load average: 10.98, 12.00, 11.46
Tasks: 148 total, 1 running, 147 sleeping, 0 stopped, 0 zombie
%Cpu0 : 15.7/15.7 31[|||||||||||||||||||||||||||||||| ]
%Cpu1 : 6.0/10.0 16[|||||||||||||||| ]
GiB Mem : 92.2/1.9 [ ]
GiB Swap: 0.0/0.0 [ ]
11842 docker 20 0 24.5m 3.1m 0.7 0.2 0:00.71 R `- top
1948 root 20 0 480.2m 77.0m 8.6 4.1 27:45.44 S `- /usr/bin/dockerd -H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock --tlsverify --tlscacert /etc/docker/ca+
...
3176 root 20 0 10.1g 48.4m 2.0 2.6 17:45.61 S `- etcd --advertise-client-urls=https://192.168.39.197:2379 --cert-file=/var/lib/minikube/certs/etc+
这两个进程的处理器时间分别为27小时和17小时
回答问题2):不知道,但可能是。请参阅@alassane ndiaye的答案您可以运行命令
kubectl top node
和kubectl top pod--containers
,以查看更详细的指标。kubectl top node minikube
起作用。但是我没有运行任何吊舱,这就是为什么这么多CPU被使用的原因。嗨!你找到解决方案了吗?P.S.如果有人感兴趣,我已经注意到Minikube无法在超过2-4个内核上正常运行,它似乎是一个非常未优化的带有活锁的软件,它在空闲模式下消耗40%的资源,如果我给它更多的CPU(6,7..在我的12核桌面上),它的启动速度会慢好几倍Minikube在2020年改进了其性能,但是。到目前为止,我还没有意识到任何解决方案。好吧@alassane ndiaye,没错,还有kube系统的东西——我用新信息更新了帖子。请注意,虽然我没有生成任何负载,而且我的容器都没有处理任何数据,所以说minikube应该占用这么多CPU是很奇怪的。它在做什么?它必须协调所有容器,这不是一件容易的任务。如您所见,有许多组件是使kubernetes发挥最小功能所必需的,如API服务器、etcd存储、各种管理器等等。一般来说,高度分布式的系统必须做大量的工作,以确保系统保持一致性和高可用性,这使得它们比单片系统使用更多的资源。我也不是kubernetes内部的专家:PHi你应该验证为什么有这么大的交换空间。您还可以在启动期间更改minikube参数:minikube start--v=10--cpu 4--memory 8192。请考虑并禁用交换。
top - 21:43:10 up 8:27, 1 user, load average: 10.98, 12.00, 11.46
Tasks: 148 total, 1 running, 147 sleeping, 0 stopped, 0 zombie
%Cpu0 : 15.7/15.7 31[|||||||||||||||||||||||||||||||| ]
%Cpu1 : 6.0/10.0 16[|||||||||||||||| ]
GiB Mem : 92.2/1.9 [ ]
GiB Swap: 0.0/0.0 [ ]
11842 docker 20 0 24.5m 3.1m 0.7 0.2 0:00.71 R `- top
1948 root 20 0 480.2m 77.0m 8.6 4.1 27:45.44 S `- /usr/bin/dockerd -H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock --tlsverify --tlscacert /etc/docker/ca+
...
3176 root 20 0 10.1g 48.4m 2.0 2.6 17:45.61 S `- etcd --advertise-client-urls=https://192.168.39.197:2379 --cert-file=/var/lib/minikube/certs/etc+