Phi*_*uez 5 google-cloud-platform kubernetes
Kubernetes top (kubectl top) 命令显示的内存使用情况与在 pod 内运行的 Linux top 命令不同。
我创建了 k8s 部署,其中 YAML 包含这些内存限制:
resources:
limits:
cpu: "1"
memory: 2500Mi
requests:
cpu: 200m
memory: 2Gi
Run Code Online (Sandbox Code Playgroud)
以下命令的输出如图所示:
bash4.4$ kubectl top pod PODNAME
NAME CPU(cores) MEMORY(bytes)
openam-d975d46ff-rnp6h 2m 1205Mi
Run Code Online (Sandbox Code Playgroud)
运行 linux top 命令:
Kubectl exec -it PODNAME top
Mem: 12507456K used, 4377612K free, 157524K shrd,
187812K buff, 3487744K cached
Run Code Online (Sandbox Code Playgroud)
注意 'free -g' 还显示使用了 11Gb。
问题是这与“kubectl top”相矛盾,后者显示仅使用了 1205 mb。
小智 7
命令kubectl top
显示给定 pod 的指标。该信息基于来自cAdvisor 的报告,该报告收集了真实的 Pod 资源使用情况。
如果你top
在 pod 内部运行,就像你在主机系统上运行它一样,因为 pod 使用的是主机系统的内核。Unixtop
使用proc
虚拟文件系统并读取/proc/meminfo
文件以获取有关当前内存状态的实际信息。Pod 内的容器/proc
与主机系统部分共享,包括有关内存和 CPU 信息的路径。
您可以在这些文档中找到更多信息:kubectl-top-pod 手册页、Linux 容器内的内存
归档时间: |
|
查看次数: |
5507 次 |
最近记录: |