找出 Kubernetes 节点的磁盘空间
Posted
技术标签:
【中文标题】找出 Kubernetes 节点的磁盘空间【英文标题】:Finding out disk space of Kubernetes node 【发布时间】:2019-06-06 13:24:20 【问题描述】:这是一个 Kubernetes 新手问题。我已经搜索过这个,但似乎无法找到确切的答案。但这可能归结为对 Kubernetes 没有完全了解。我在三个节点上部署了一些 pod,我的问题很简单。
-
如何查看节点上的总磁盘空间?
如何查看每个 pod 占用了多少空间?
【问题讨论】:
你运行的是什么版本的 kubernetes?您在哪里部署了 Kubernetes 集群? 抱歉没有看到 Azure 标签。您想要一个完整的监控解决方案,还是只是能够检查您当前使用的内容?除非您将卷绑定到 Pod,否则 Pod 不会真正使用磁盘空间。 我正在运行 Kubernetes 版本 1.11.3。是的,只是能够检查我正在使用什么。另外,如果 Pod 不使用磁盘空间,这是否意味着我可以部署尽可能多的允许分配给节点的 Pod?在这种情况下是 110。 磁盘空间不是唯一的限制。在遇到磁盘空间问题之前,您很可能会在节点方式上耗尽内存和 cpu。如果您想监控集群的运行状况,您需要监控的不仅仅是磁盘空间。你可以从这里开始:kubernetes.io/docs/tasks/debug-application-cluster/… 进行研究。我个人更喜欢在 Kubernetes 上部署 prometheus 来监控集群的健康状况。 太好了,感谢您的信息! 【参考方案1】:为了计算您可以使用的总磁盘空间
kubectl describe nodes
从那里你可以 grep ephemeral-storage,这是虚拟磁盘大小这个分区也被 Pods 通过 emptyDir 卷、容器日志、镜像层和容器可写层共享和使用
如果您使用的是 Prometheus,则可以使用此公式进行计算
sum(node_filesystem_size_bytes)
【讨论】:
【参考方案2】:我假设您使用的是 AKS,因为这就是问题的标记。
工作节点只是标准的虚拟机,带有大量脚本来引导 Kubernetes 集群。磁盘空间非常重要,因为您下载的每个图像层都将缓存在服务器上,默认情况下,这些服务器的硬盘空间可能非常小(30GB IIRC),除非在创建时进行调整。分区模式也没有特别针对容器交付进行调整。
您可以使用 Azure 中的 OMS 和容器监控解决方案来深入了解您的集群运行状况。 https://docs.microsoft.com/en-us/azure/azure-monitor/insights/containers 或如上所述 - 您可以使用 prometheus / Grafana 或仅使用 ssh in 和 df -h
来查看发生了什么(尽管我不提倡使用 ssh 访问节点)。
节点上的磁盘空间与容器挂载的 PV 有很大的不同。
关于每个节点的最大 pod 数量 - 我认为默认值为 30,除非您专门使用更高数量构建集群。
【讨论】:
我使用MAX_PODS = 3.5 * SUM_NUMBER_CPU_CORES的计算以上是关于找出 Kubernetes 节点的磁盘空间的主要内容,如果未能解决你的问题,请参考以下文章