Kubernetes top (kubectl top)命令显示了与在pod中运行的Linux命令不同的内存使用情况。
我创建了k8s部署,其中YAML包含以下内存限制:
resources:
  limits:
    cpu: "1"
    memory: 2500Mi
  requests:
    cpu: 200m
    memory: 2Gi如下所示,输出了以下命令:
bash4.4$ kubectl top pod PODNAME 
NAME                     CPU(cores)   MEMORY(bytes)   
openam-d975d46ff-rnp6h   2m           1205Mi运行linux top命令:
Kubectl exec -it PODNAME top 
Mem: 12507456K used, 4377612K free, 157524K shrd, 
187812K buff, 3487744K cached注:“空闲-g”还显示了使用的11-g。
问题是,这与"kubectl top“相矛盾,而”kubectl top“只显示了1205 mb的使用量。
发布于 2018-08-02 14:25:05
命令kubectl top显示给定pod的度量标准。该信息基于cAdvisor的报告,该报表收集实际的豆荚资源使用情况。
如果在吊舱内运行top,就会像在主机系统上运行它一样,因为pod使用的是主机系统的内核。Unix top使用proc虚拟文件系统并读取/proc/meminfo文件来获取有关当前内存状态的实际信息。豆荚内的容器部分地与主机系统共享/proc,包括关于内存和CPU信息的路径。
在这些文档中可以找到更多信息:kubectl-顶部-pod手册页、Linux容器中的内存
https://stackoverflow.com/questions/51641310
复制相似问题