我有一个运行着 4 个工作节点的 kubernetes 集群(Ubuntu 20.04,有 4 个 CPU),我发现所有节点的平均负载都很高。以下是其中一个节点上的 top 结果: 顶部
由于此节点正在运行 111 个容器,我不确定这是否是预期的。是否有其他原因导致平均负载过高,或者仅仅是因为容器太多而我需要更多资源?
答案1
平均负载是正在运行或等待运行的程序的计数。
Top 很不错,但只能展示一半的情况 —— CPU 中正在运行或等待运行的内容。另一半是等待磁盘 I/O 完成的内容。
对于磁盘 I/O,atop
点击显示进程的磁盘使用情况,效果很好d。(通常需要以 root 身份运行才能获得该信息。)
答案2
一个典型的经验法则是,您不希望平均负载超过主机上的核心数量。这是理想情况。超过这个数字并不总是问题。根据我的经验,平均负载本身并不总是表示存在问题。如果您的负载很高、系统 CPU 使用率很高或 iowait 很高,那么您很可能处于一个糟糕的境地。
对于 Kubernetes,我经常听到的一件事是需要设置资源限制。如果没有限制,那么每个 Pod 都可以完全访问一个节点。在我看来,正确调整应用程序的大小并不简单。尤其是当每个人似乎都试图在 Kubernetes 中推出非云原生应用程序时。
建议您可以减少工作量、添加更多工作人员(横向扩展)或向节点添加更多资源(纵向扩展),或者将二者结合起来。