Debian上优化Kubernetes资源分配
一 基础与系统层优化
sudo swapoff -a && sudo sed -i '/ swap / s/^/#/' /etc/fstab。sudo tee /etc/modules-load.d/containerd.conf <<EOFoverlaybr_netfilterEOFsudo modprobe overlay && sudo modprobe br_netfiltersudo tee /etc/sysctl.d/99-kubernetes-k8s.conf <<EOFnet.bridge.bridge-nf-call-iptables = 1net.ipv4.ip_forward = 1net.bridge.bridge-nf-call-ip6tables = 1EOFsudo sysctl --systemlimits: { nvidia.com/gpu: "1" }。二 工作负载资源配置
resources: requests: cpu: "500m" memory: "512Mi" limits: cpu: "1" memory: "1Gi"hard: pods: "50" requests.cpu: "4" requests.memory: "4Gi" limits.cpu: "8" limits.memory: "8Gi"metrics:- type: Resource resource: name: cpu target: type: Utilization averageUtilization: 70三 调度策略与碎片治理
affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: disk operator: In values: ["ssd"] podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: app operator: In values: ["myapp"]topologyKey: kubernetes.io/hostnamekubectl top pods 与监控定位热点与空转;四 监控 告警与容量规划
五 快速检查清单
| 优化项 | 关键动作 | 验证命令/指标 |
|---|---|---|
| 系统层 | 关闭 swap、启用 br_netfilter、开启 ip_forward | free -h、sysctl net.bridge.bridge-nf-call-iptables |
| 运行时 | 安装并启用 containerd | systemctl status containerd |
| 资源配置 | 设置 requests/limits、定义 QoS | `kubectl describe pod |
| 配额治理 | 配置 ResourceQuota/LimitRange | kubectl get resourcequota,limitrange -n <ns> |
| 调度策略 | 节点亲和/反亲和、拓扑感知 | kubectl get pods -o wide、kubectl describe node <node> |
| 伸缩能力 | 部署 HPA/VPA | kubectl get hpa、kubectl describe hpa <hpa> |
| 监控告警 | 部署 Metrics Server、Prometheus/Grafana | kubectl top nodes、kubectl top pods |