0Pricing
DevOps Bootcamp · 课时

资源请求与限制

为 Pod 定义 CPU 和内存的资源请求与限制,以确保高效分配资源并避免资源耗尽。

资源请求与限制 是 CoddyKit 上的免费 DevOps Bootcamp 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 DevOps Bootcamp 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 DevOps Bootcamp 课程共包含 4 节课。

Kubernetes 中的资源需求

和任何应用程序一样,Pod 也需要资源才能运行。Kubernetes 使用资源请求和资源限制来高效管理这些资源。

这些设置会告诉 Kubernetes Pod 需要多少 CPU 和内存,以及允许使用多少资源,从而确保资源得到公平分配。

CPU 请求:保证 CPU 资源

CPU 请求告诉 Kubernetes Pod 舒适运行所需的最小 CPU 资源。这是一项保证!

  • Kubernetes 会根据请求,将 Pod 调度到具有足够可用资源的节点上。
  • 如果节点没有足够的 CPU 满足请求,Pod 就不会被调度到该节点。
  • 这有助于防止关键应用程序的资源耗尽。

CPU 单位与请求示例

CPU 以“核心”或“毫核”(m)为单位进行度量。1000m 等于 1 个 CPU 核心。因此,500m 就是半个核心。

以下是在 Pod 定义中请求 0.5 个 CPU 核心的示例:

apiVersion: v1
kind: Pod
metadata:
  name: cpu-request-pod
spec:
  containers:
  - name: my-container
    image: nginx
    resources:
      requests:
        cpu: "500m"

CPU 限制:防止过度使用

CPU 限制设置 Pod 可以使用的最大 CPU 资源。这相当于一个上限。

  • 如果 Pod 尝试使用超过限制的 CPU,Kubernetes 会对其进行限流。
  • 这意味着 Pod 的 CPU 使用量会受到限制,从而防止它占用同一节点上其他 Pod 的资源。

CPU 限制的实际应用

以下是设置 CPU 限制的示例。如果此 Pod 尝试使用超过 1 个 CPU 核心的资源,就会受到限流,也就是说它的性能会受到限制。

apiVersion: v1
kind: Pod
metadata:
  name: cpu-limit-pod
spec:
  containers:
  - name: my-container
    image: nginx
    resources:
      limits:
        cpu: "1"

内存请求:保证 RAM

与 CPU 类似,内存请求指定 Pod 运行所需的最小 RAM。

  • Kubernetes 会利用此信息查找具有足够可用内存的节点。
  • 如果节点内存耗尽,没有设置请求的 Pod 通常会最先被终止(驱逐),以释放空间。

内存单位与请求示例

内存以字节为单位进行测量。常用单位包括 Mi(兆字节)和 Gi(吉字节)。

100Mi 表示 100 兆字节。以下是请求 256 MiB 内存的写法:

apiVersion: v1
kind: Pod
metadata:
  name: mem-request-pod
spec:
  containers:
  - name: my-container
    image: nginx
    resources:
      requests:
        memory: "256Mi"

内存限制:避免 OOM

内存限制定义了一个容器组最多可以使用的内存量。

  • 如果容器组超过其内存限制,操作系统会立即终止它,并报告“内存不足”(OOM)错误。这通常会显示为“OOMKilled”。
  • 这样可以防止某个失控的容器组耗尽节点的全部内存,导致整个节点崩溃。

内存限制实战

这个容器组的内存限制为 512 MiB。如果它尝试使用更多内存,就会被终止(OOMKilled),从而保护其他工作负载和节点。

apiVersion: v1
kind: Pod
metadata:
  name: mem-limit-pod
spec:
  containers:
  - name: my-container
    image: nginx
    resources:
      limits:
        memory: "512Mi"

最佳实践:请求与限制

最佳实践是为所有容器组同时定义请求和限制。这样可以为集群提供稳定性和可预测性。

  • 请求确保容器组在调度时获得最低资源量。
  • 限制防止其他容器组以及节点本身出现资源耗尽。

以下是一个完整示例:

apiVersion: v1
kind: Pod
metadata:
  name: full-resource-pod
spec:
  containers:
  - name: my-app
    image: my-registry/my-app:1.0
    resources:
      requests:
        cpu: "200m"
        memory: "128Mi"
      limits:
        cpu: "500m"
        memory: "256Mi"

资源检查

您定义了一个容器组,其 CPU 请求为 200m,CPU 限制为 1(即 1000m)。

如果这个容器组尝试使用 1.5 个 CPU 核心,会发生什么?

回顾:资源管理

在本课中,我们学习了 Kubernetes 中的资源请求和资源限制。

  • 请求(CPU 和内存)为容器组调度提供最低资源保障。
  • 限制(CPU 和内存)限制最大使用量,以防止资源争用。
  • 超过 CPU 限制会导致限流;超过内存限制会导致终止(OOMKilled)。
  • 请始终同时定义请求和限制,以确保应用性能稳定且可预测!

常见问题解答

「资源请求与限制」课时是免费的吗?

是的 — 「资源请求与限制」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 DevOps Bootcamp 课程的其余内容,请升级到 CoddyKit PRO。 DevOps Bootcamp 课程共包含 4 节课。

「资源请求与限制」这节课中我会学到什么?

为 Pod 定义 CPU 和内存的资源请求与限制,以确保高效分配资源并避免资源耗尽。 你通过在浏览器中直接运行的动手代码来练习 DevOps Bootcamp,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 DevOps Bootcamp 需要有经验吗?

无需任何先前经验。CoddyKit 上的 DevOps Bootcamp 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。

「资源请求与限制」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 DevOps Bootcamp 课中编写并运行代码吗?

能。每节 DevOps Bootcamp 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 资源请求与限制
  2. 节点选择器与亲和性
  3. 污点与容忍度
  4. Pod 优先级与抢占
← 返回 DevOps Bootcamp