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。