Ubuntu 上 Kubernetes 资源限制设置指南
在 Ubuntu 节点上,Kubernetes 通过为 Pod/容器 设置 requests/limits 来管理 CPU、内存 等资源;调度器依据 requests 选择节点,kubelet 与 cgroups 在节点上强制执行 limits。常见单位:CPU 以毫核 1000m=1 核,内存以 Mi/Gi。若只设置 limits 而未设置 requests,多数准入控制器会把该 limits 值同时作为 requests 使用。自 v1.34 起(默认启用),可在 Pod 级 声明资源边界,便于多容器共享与预算控制。
一、容器与 Pod 级配置
apiVersion: v1
kind: Pod
metadata:
name: resource-demo
spec:
containers:
- name: app
image: nginx:1.14.2
resources:
requests:
memory: "64Mi"
cpu: "250m"
limits:
memory: "128Mi"
cpu: "500m"
apiVersion: v1
kind: Pod
metadata:
name: pod-level-demo
namespace: default
spec:
resources:
requests:
cpu: "1"
memory: "100Mi"
limits:
cpu: "1"
memory: "200Mi"
containers:
- name: ctr1
image: nginx
resources:
requests:
cpu: "0.5"
memory: "50Mi"
limits:
cpu: "0.5"
memory: "100Mi"
- name: ctr2
image: busybox
command: ["sleep","inf"]
二、命名空间级治理
apiVersion: v1
kind: ResourceQuota
metadata:
name: team-a-quota
namespace: ns-test
spec:
hard:
requests.cpu: "10"
requests.memory: "40Gi"
limits.cpu: "20"
limits.memory: "100Gi"
pods: "50"
apiVersion: v1
kind: LimitRange
metadata:
name: default-limits
namespace: ns-test
spec:
limits:
- default:
cpu: "200m"
memory: "256Mi"
defaultRequest:
cpu: "100m"
memory: "128Mi"
type: Container
三、进阶设置与注意事项
四、验证与排错