Kubeturbo 资源限制

缺省情况下, Kubeturbo 部署没有限制或请求。 如果您更愿意设置限制或请求,那么 Kubeturbo 所需的资源量与它所管理的工作负载和 pod 的数量相关。 工作负载定义为唯一的工作负载控制器,例如 deployment foostatefulset bar

部署 Kubeturbo 后,可以查看 Turbonomic 供应链中的工作负载数量。 将作用域设置为单个容器平台集群,然后查看工作负载控制器实体。

注:

Kubeturbo 每 1 分钟发现,收集和处理 容器平台资源 的度量值,然后每 10 分钟将数据发送到 Turbonomic 以进行分析。 由于数据每 1 分钟收集一次,因此 Kubeturbo 会始终将数据保存在内存中。

使用下表作为设置内存限制的指南:

Pod 数 工作量控制器数量 建议内存上限(Gi)
5,000 名 2,500 4
5,000 名 5,000 名 4
10,000 5,000 名 6
10,000 10,000 6.5
20,000 10,000 9.2
20,000 20,000 12 个月
30,000 15,000 台 13
30,000 30,000 16

要考虑的要点:

  • 为避免 CPU 节流,请勿设置 CPU 限制。

  • 如果需要,可以将内存请求设置为 1 GB。

  • 如有需要,可将 CPU 请求设置为 1 个内核(1000 毫微米)。

  • 如果 Kubeturbo 内存使用量非常高,而且随着时间的推移持续增长,请设置一个低于节点内存容量的限制,以限制内存使用量。 请参考上表。

  • 要配置 Kubeturbo 容器规格限制和请求,请参阅接下来的章节。

YAML 配置:Kubeturbo 容器规格限制和请求

  1. 编辑部署。

    kubectl edit deployment kubeturbo -n turbo
  2. containers 部分,找到并更新 resources: {} 部分,如下例所示:

    resources:
      limits:
        memory: 16Gi
      requests:
        memory: 1Gi

    如果该部分不存在,请按说明创建。

  3. 保存您的更改。

    kubeturbo pod 重启时会自动应用更改。

  4. 验证更改。

    kubectl get pods -n turbo -o custom-columns='NAME:.metadata.name,MEMORY_REQ:spec.containers[].resources.requests.memory,MEM_LIM:spec.containers[].resources.limits.memory'

    输出结果应与下面的示例类似。 该输出结果确认 kubeturbo 的内存限制和请求设置正确。

    NAME MEMORY_REQ MEM_LIM

    kubeturbo-6cbfc74b68-dfvtk 1Gi 16Gi

操作员配置:Kubeturbo 容器规格限制和请求

  1. 编辑部署。

    kubectl edit kubeturbo kubeturbo-release -n turbo
  2. spec 部分,找到并更新 resources: {} 部分,如下例所示。

    resources:
      limits:
        memory: 16Gi
      requests:
        memory: 1Gi

    如果该部分不存在,请按说明创建。

  3. 保存您的更改。

    kubeturbo-release pod 重启时会自动应用更改。

  4. 验证更改。

    kubectl get pods -n turbo -o custom-columns='NAME:.metadata.name,MEMORY_REQ:spec.containers[].resources.requests.memory,MEM_LIM:spec.containers[].resources.limits.memory'

    验证输出是否与下例相似。 该输出结果确认 kubeturbo-release 的内存限制和请求设置正确。

    NAME MEMORY_REQ MEM_LIM

    kubeturbo-release-6cbfc74b68-dfvtk 1Gi 16Gi