Centos 7上具有大量CPU且具有Virtualbox或KVM的Minikube

时间:2019-04-19 20:57:00

标签: 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 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

我安装了metrics-server,它输出以下内容:

kubectl top node minikube

NAME       CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%   
minikube   334m         16%    1378Mi          76%

kubectl top pods --all-namespaces

NAMESPACE                NAME                                    CPU(cores)   MEMORY(bytes)   
default                  hello-minikube-56cdb79778-rkdc2         0m           3Mi             
kafka-data-consistency   zookeeper-84fb4cd6f6-sg7rf              1m           36Mi            
kube-system              coredns-fb8b8dccf-2nrl4                 4m           15Mi            
kube-system              coredns-fb8b8dccf-g6llp                 4m           8Mi             
kube-system              etcd-minikube                           38m          41Mi            
kube-system              kube-addon-manager-minikube             31m          6Mi             
kube-system              kube-apiserver-minikube                 59m          186Mi           
kube-system              kube-controller-manager-minikube        22m          41Mi            
kube-system              kube-proxy-m2fdb                        2m           17Mi            
kube-system              kube-scheduler-minikube                 2m           11Mi            
kube-system              kubernetes-dashboard-79dd6bfc48-7l887   1m           25Mi            
kube-system              metrics-server-cfb4b47f6-q64fb          2m           13Mi            
kube-system              storage-provisioner                     0m           23Mi            

问题:

1)是否可以找出为什么要使用这么多CPU? (请注意,我没有产生任何负载,而且我的容器都没有处理任何数据)

2)正常吗?

2 个答案:

答案 0 :(得分:1)

您确定没有任何运行吗?如果您输入kubectl get pods --all-namespaces会怎样?默认情况下,Kubernetes仅显示默认名称空间内的容器(因此不包括系统名称空间内的容器)。

而且,尽管我不是CPU专家,但对于您拥有的硬件来说,这似乎是合理的消耗。

答案 1 :(得分:0)

针对问题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的答案