GCP Kubernetes 集群监控限制图

GCP Kubernetes cluster monitoring limit graph

这是我的Kubernetes集群节点监控。 K8s 集群在 GKE 上 运行 并使用堆栈驱动程序监控和日志记录。

簇大小为 4vCPU 和 15GB 内存。在 CPU 图表中,为什么峰值超过了 CPU 的限制?因为我的集群 CPU 是 4vCPU 但限制尖峰在那里。

没有集群自动缩放器、节点自动缩放器、垂直自动缩放器什么都没有运行。

同样的问题为了记忆?

总大小为 15 GB,但容量为 15.77 GB,可分配 13 GB 意味着 2 GB 用于 Kubernetes 系统。

为了完美监控,我安装了默认的 Kubernetes 仪表板

这表明使用量约为 10.2GB,所以我还有 2-3 GB 的 RAM? 可分配的 13 GB 系统是否占用 2 GB?我说得对吗?

我也安装了Grafana

这显示我已导入此仪表板的 450 MB 可用内存。

但是如果它使用大约 10GB 的 RAM,那么在 13GB 中我应该还剩下 2-3GB。

更新:

Kubectl describe node <node>


Resource           Requests         Limits
  --------           --------         ------
  cpu                3073m (78%)      5990m (152%)
  memory             7414160Ki (58%)  12386704Ki (97%)

如果您查看 stackdriver 的第一个图表,因为 RAM 限制的使用增加增加了 tp 15GB,但分配或可用内存仅为 13GB。怎么样?

所以一般来说,我认为机器有能力短暂地超过指定的CPU,这被称为突发。

GKE Dashboard、Kubernetes Dashboard和Grafana可以很好的使用

  • 这些指标的不同来源
  • 不同单位

示例: 在您的 google 摘要中,它显示您有 15.77 GB。好吧,这没有错。 该机器可能指定为 15GB。但在内部,google 不使用 GB、MB、B 或其他东西进行计算。它以千字节计算。 当你运行kubectl describe nodes <node>。您得到以千字节为单位的实际值。

例如:对我来说,15399364 Ki 等于 15.768948736 GB

最后一件事,通常 Google 云控制台在显示此类信息时不是很准确。我总是建议您通过命令行获取指标。

在您的情况下,您有 2 个问题,一个与 CPU 使用相关,另一个与内存使用相关:

您输入的信息有限,CPU和内存使用情况取决于不同方面,例如pods、节点数等

你说你没有为节点使用自动缩放器。

此页面 Stackdriver Monitoring,您可以看到容器的部分,对于 CPU 图表使用“container/cpu/usage_time”,其中解释“累积 CPU 使用所有几秒钟内的核心。这个数字除以经过的时间表示使用的核心数量,而不管可能设置的任何核心限制。每 60 秒采样一次。

在同一页面上谈论内存,您可以阅读此图使用“container/memory/bytes_used”,其中告诉“内存使用量(以字节为单位),按类型细分:可回收和不可回收。每 60 秒采样一次。 memory_type:evictablenon-evictable。可回收内存是可以被内核轻易回收的内存,而非不可回收内存则不能。”,在这种情况下使用不可回收。

关于系统在内存的情况下可分配的大小的问题,这取决于您为集群工作设置的大小。

例如,我继续创建一个具有 1 vCPU 和 4Gb 内存的集群,可分配的内存为 2.77Gb。