当前位置: 首页 > 知识库问答 >
问题:

库伯内特斯上衣vsLinux上衣

堵德曜
2023-03-14

库伯内特斯top(kubectl top)命令显示的内存使用情况与pod中运行Linuxtop命令不同。

我创建了 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顶部”相矛盾,后者仅显示使用了1205 mb。

共有1个答案

田慈
2023-03-14

Commandkubectl top显示给定pod的指标。该信息基于来自cAdvisor的报告,该报告收集真实的pod资源使用情况。

如果您在pod中运行top,就像您在主机系统上运行它一样,因为pod使用的是主机系统的内核。Unixtop使用proc虚拟文件系统并读取/proc/meminfo文件以获取有关当前内存状态的实际信息。pod中的容器与主机系统部分共享/proc,包括有关内存和CPU信息的路径。

您可以在这些文档中找到更多信息:kubectl top pod man page,Linux容器中的内存

 类似资料:
  • 我试图有1个redis大师与2个redis复制品绑在一个3法定人数哨兵在Kubernetes。我对Kubernetes很陌生。 我最初的计划是让主控器在一个吊舱上运行,并绑定到一个Kubernetes SVC,而两个副本在自己的吊舱上运行,并绑定到另一个Kubernetes SVC。最后,3个哨兵吊舱将被绑在他们自己的SVC上。副本将被绑定到主SVC(因为没有SVC,ip将会改变)。sentine

  • 我假设没有愚蠢的问题,所以这里有一个我找不到直接答案的问题。 现在的情况 我目前有一个运行1.15的Kubernetes集群。AKS上的x,通过Terraform部署和管理。AKS最近宣布Azure将在AKS上停用Kubernetes的1.15版本,我需要将集群升级到1.16或更高版本。现在,据我所知,直接在Azure中升级集群不会对集群的内容产生任何影响,即节点、豆荚、秘密和当前在那里的所有其他

  • 我在Kubernetes是个新手。我想知道在kubernetes环境中最好的生产部署场景是什么。 在过去的学派中,我习惯于将Web服务器(例如Nginx或Apache)放在DMZ层,而将其放在其他层(我们称之为层)。这样,只有web服务器在DMZ上,恶意攻击只能在web服务器VM上进行。 据我所知,K8S部署不再需要这种方法;这是因为K8S自己处理网络、吊舱和流量。所以我在考虑最确定的部署方案。

  • 我正在分布式模式下使用 cp-kafka-connect Helm chart 在 Google Kubernetes Engine (GKE) 上部署 Kafka-connect。 一个工作的Kafka集群与代理和动物园管理员已经在同一个GKE集群上运行。我知道我可以通过发送帖子请求到endpoint来创建连接器,一旦它可用。但是,Kafka连接容器进入运行状态,然后开始加载jar文件,直到所有

  • 我正试图通过nginx入口从客户端上传文件。在收到413响应后,我在入口上设置了以下注释; 客户端是一个Angular应用程序。它在请求正文中发送文件的bas64字符串。我尝试过上传一些KB的图像,所以我绝对没有达到这些限制。我是库伯内特斯的新手。我是否需要重新启动入口以使这些注释生效? 我也尝试过创建一个ConfigMap; 仍然得到502。 不知道如何通过kubectl访问nginx.conf