在 Kubernetes 中,Pod 开销是指 Pod 基础设施在容器请求和限制之上消耗的资源。这些资源是运行 Pod 内部容器之外所需的系统资源。例如,某些容器运行时可能会增加额外的开销,如虚拟机或宿主操作系统所使用的资源。
Pod 开销特别重要的场景包括:
overhead
字段的 RuntimeClass
。kube_pod_overhead_*
指标来监控 Pod 开销的使用情况,并帮助观察带有定义开销的工作负载的稳定性。以下是一个使用 Pod 开销的示例:
# RuntimeClass 定义示例
apiVersion: node.k8s.io/v1
kind: RuntimeClass
metadata:
name: kata-fc
handler: kata-fc
overhead:
podFixed:
memory: "120Mi"
cpu: "250m"
在这个示例中,kata-fc
RuntimeClass 为每个 Pod 增加了 120MiB 的内存和 250m 的 CPU 开销。
# 使用指定 RuntimeClass 的 Pod 示例
apiVersion: v1
kind: Pod
metadata:
name: test-pod
spec:
runtimeClassName: kata-fc
containers:
- name: busybox-ctr
image: busybox:1.28
stdin: true
tty: true
resources:
limits:
cpu: 500m
memory: 100Mi
- name: nginx-ctr
image: nginx
resources:
limits:
cpu: 1500m
memory: 100Mi
在这个 Pod 示例中,通过指定 kata-fc
RuntimeClass,Pod 的创建会自动考虑定义在 RuntimeClass 中的开销。这意味着在资源配额计算、节点调度以及 Pod cgroup 大小调整时,都会将这个额外的开销考虑在内。