【发布时间】:2022-01-15 13:29:44
【问题描述】:
我正在运行 GKE Standard,当我的集群生成新作业时,我收到 pod didn't trigger scale-up: 1 In sufficient cpu, 1 Insufficient memory 错误。本质上,我有一个 24/7 运行的非常小的 pod 来处理一个相当小的节点上的传入请求,但是我的各个 pod 都需要非常强大。但是,我开始了解到该节点至少需要与最大的 pod 一样大。这是否意味着我注定要每天 24/7 花费大量金钱,因为我的 pod 需要很大(至少是 e2-standard-32)。我设置了最小 0 和最大 10 个节点的自动缩放。
我是否需要 GKE Autopilot 来按 CPU 和内存消耗而不是按节点收费?
编辑:我通过关注this tutorial 摆脱了这个错误:基本上,我需要增加节点大小。但我的问题仍然存在。即使我很少使用它,我是否必须 24/7 全天候为这个节点付费?
这是我的工作说明:
apiVersion: batch/v1
kind: Job
metadata:
generateName: opensfm-job-
spec:
template:
spec:
containers:
- name: opensfm
image: gcr.io/fliermapper/opensfm-image:fliermappertag1
imagePullPolicy: Always
command: ["/bin/sh"]
args: (our arguments)
resources:
requests:
memory: "3000Mi"
cpu: "2000m"
limits:
memory: "4000Mi"
cpu: "16000m"
restartPolicy: Never
backoffLimit: 4
【问题讨论】:
-
cpu 请求和 cpu 限制之间存在相当大的差异。您是否预计作业实际上需要 16 个 CPU?
-
是的,在我们的例子中,我们正在从运动中运行图像处理结构,所以我们实际上可能需要 32 个 CPU 甚至 60 个
-
Autopilot 使用 Spot pod 对您来说似乎是一个不错的选择,但每个 pod 最多只能使用约 48 个 CPU。如果您确实每个 pod 可能需要 48 个以上的 CPU,那么现在我建议使用带有节点自动配置 (cloud.google.com/kubernetes-engine/docs/how-to/…) 的 Std,如果您可以容忍抢占,我建议使用 Spot 实例类型。
标签: google-cloud-platform google-kubernetes-engine