memory-management - 如何计算Kubernetes集群的节点可分配资源?

标签 memory-management kubernetes resources cpu scaling

我们有一个集群,其中节点资源不足,导致速度缓慢和过度提交问题。这迫使我们频繁重启节点。我们计划实现节点可分配资源策略,以在系统、kubelet 和应用程序 Pod 之间拆分可用的 CPU、内存和临时存储。

遇到了一些有关可分配资源计算的指南 here

它没有指定系统资源和 kubelet 资源之间的分配比例是多少。此外,我们实行开放轮类制,因此不确定其中有多少适用。

最佳答案

正如您所提到的,您正在使用 OpenShift 并且您提供的文档来自 GCP。默认要求、参数可能因云提供商规范而异。

不幸的是,我不是 OpenShift 用户,但您可以在 OS documentation 中找到那:

为节点组件保留的资源基于两个节点设置:kube-reservedsystem-reserved

您可以使用一组 = 对(例如, CPU=200M,内存=512Mi)。

如何计算分配的资源?

资源的分配量根据以下公式计算:

[可分配] = [节点容量] - [kube-reserved] - [系统保留]

如果[Allocatable]为负数,则设置为0。

请查看以下 OpenShift 文档:Allocating node resources , Capacity management , Cluster Limits , Resource Limits

许多因素取决于您想要使用的 Pod/镜像。某些图像可能需要 0.1 CPU,但其他图像可能需要 1CPU 才能启动。

您可以通过创建 Quota 来限制它,设置Pod requests and limits .

请记住,您始终可以在 Containers.containerName.Requests 下检查每个 Pod 中的当前请求/限制:

$ os describe pod <pod-name>

或节点上请求的资源/限制

$ os describe node <node-name>

在此说明的底部,您应该会看到所有 Pod 请求和限制

Non-terminated Pods:         (6 in total)
  Namespace                  Name                                              CPU Requests  CPU Limits  Memory Requests  Memory Limits  AGE
  ---------                  ----                                              ------------  ----------  ---------------  -------------  ---
  default                    nginx-7cdbd8cdc9-b94r9                            100m (10%)    0 (0%)      0 (0%)           0 (0%)         6m2s
  default                    nginx-7cdbd8cdc9-nlsw7                            100m (10%)    0 (0%)      0 (0%)           0 (0%)         6m2s
  kube-system                fluentd-gcp-v3.2.0-lwnqn                          100m (10%)    1 (106%)    200Mi (7%)       500Mi (18%)    5h22m
  kube-system                kube-proxy-gke-stc1-default-pool-094e5c74-4dzj    100m (10%)    0 (0%)      0 (0%)           0 (0%)         5h22m
  kube-system                prometheus-to-sd-lbj57                            1m (0%)       3m (0%)     20Mi (0%)        20Mi (0%)      5h22m
  kube-system                traefik-749d86f748-frs7q                          0 (0%)        0 (0%)      0 (0%)           0 (0%)         158m
Allocated resources:
  (Total limits may be over 100 percent, i.e., overcommitted.)
  Resource                   Requests    Limits
  --------                   --------    ------
  cpu                        401m (42%)  1003m (106%)
  memory                     220Mi (8%)  520Mi (19%)
  ephemeral-storage          0 (0%)      0 (0%)
  attachable-volumes-gce-pd  0           0

希望能有所帮助。

关于memory-management - 如何计算Kubernetes集群的节点可分配资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58054205/

相关文章:

kubernetes - 复制一个 configmap 但在同一命名空间中使用另一个名称 (kubernetes/kubectl)

kubernetes - 为什么 kubernetes 不允许 RoleBinding 的 RoleRef 更新?

java - Android:从 ArrayList 设置资源字符串 ID?

java - 如何执行 C-Heap 分析

ios - 在呈现 ViewController 应用程序时收到内存警告

ios - 访问在 2 个 View Controller 之间传递的属性时的 EXC_BAD_ACCESS

kubernetes - 尝试在 kubernetes 中创建 secret 时遇到一些问题

java - 如何将类设置为始终在其自己的项目文件夹中搜索给定路径?

android - 我可以排除将资源值构建到我的 Android 子项目中吗?

c++ - std::string 内存管理