Kubernetes 中的 LimitRanges 允许您为 Pod 或容器定义最小和最大资源使用量。这有助于确保您的应用程序不会消耗超过预期的资源,这对保持群集的稳定性和性能至关重要。


下面的代码片段演示了如何创建一个 LimitRange,为特定命名空间中的 Pod 设置最小和最大 CPU 和内存限制。

[代码清单]

apiVersion: v1
kind: LimitRange
metadata:
 name: example-limit-range
 namespace: my-namespace
spec:
 limits:
 - default:
   cpu: "500m"
   memory: "512Mi"
  defaultRequest:
   cpu: "250m"
   memory: "256Mi"
  type: Container

[执行结果]

LimitRange 已成功创建,如果检查我的命名空间中 Pod 的资源,它们将反映已定义的限制。

在这个例子中,默认字段指定了容器的最大资源限制,这意味着任何容器都不能使用超过 500 毫CPU 和 512 MiB 的内存。defaultRequest 字段表示将分配给每个容器的最小资源,这有助于 Kubernetes 调度器根据可用资源更好地决定 Pod 的位置。如果 Pod 未指定自己的资源请求或限制,则将应用默认值。

[小知识]

资源请求和限制: 请求是 Pod 运行所需的最少资源,而限制则是它能消耗的最大资源。这种区别有助于 Kubernetes 高效地管理资源。

对调度的影响: 如果 Pod 超过了限制,可能会被节流或终止,从而影响应用性能。相反,如果 Pod 无法满足其请求,在可用资源不足的情况下,它可能不会被调度。

最佳实践: 始终定义资源请求和限制,以避免资源争用,确保在应用程序之间公平分配资源。