Kubernetes top (kubectl top) 命令显示的内存使用量与在 Pod 内运行的 Linux top 命令不同。
我创建了一个 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
请注意,“free -g”也显示已使用11GB。
问题是这与“kubectl top”相矛盾,后者只显示已使用1205MB。