centos上k8s资源分配策略
导读:CentOS 上 Kubernetes 资源分配策略 一 基础概念与 QoS 在 CentOS 节点上运行的 Kubernetes 通过为容器设置 requests(调度保障)与 limits(上限约束)来进行资源分配;requests...
CentOS 上 Kubernetes 资源分配策略
一 基础概念与 QoS
- 在 CentOS 节点上运行的 Kubernetes 通过为容器设置 requests(调度保障)与 limits(上限约束)来进行资源分配;requests 用于调度器选择节点,limits 用于 kubelet/内核进行限流与回收。未设置 requests 的 Pod 可能被调度到资源紧张的节点,影响稳定性。
- 基于 requests/limits 的组合,Pod 会形成 QoS 等级:
- Guaranteed(每个容器都设置了 requests==limits,且 requests 不为 0):驱逐优先级最低,适合关键有状态服务。
- Burstable(部分容器设置了 requests 且 requests < limits):常规业务常用等级。
- BestEffort(未设置 requests/limits):驱逐优先级最高,不建议生产使用。
- 建议为所有生产容器显式配置 requests/limits,并按业务重要性选择 QoS。
二 命名空间与准入控制
- 在多团队/多环境场景下,用 ResourceQuota 限制命名空间的总量,防止资源被单个团队占满:
- 示例(限制 CPU/Memory 的 requests 与 limits 总量):
- requests.cpu: 1
- requests.memory: 1Gi
- limits.cpu: 2
- limits.memory: 2Gi
- 示例(限制 CPU/Memory 的 requests 与 limits 总量):
- 用 LimitRange 为“未显式设置”的容器提供默认值与取值范围,避免“漏配”:
- 示例(容器默认与默认请求):
- default: memory 512Mi, cpu 500m
- defaultRequest: memory 256Mi, cpu 250m
- 示例(容器默认与默认请求):
- 作用范围覆盖 Pod/Container,可按需扩展到 PersistentVolumeClaim 等。
三 工作负载扩缩容与调度优化
- 弹性扩缩容:
- HPA(Horizontal Pod Autoscaler):基于 CPU/内存或自定义指标 自动增减副本数。示例目标:平均 CPU 利用率 50%,副本数 1–10。
- VPA(Vertical Pod Autoscaler):基于历史使用自动调整 requests/limits,减少“过度配置/配置不足”。示例更新策略 Auto(需与副本数变更策略配合,避免冲突)。
- 调度与拓扑:
- 使用 nodeSelector / nodeAffinity / podAffinity / podAntiAffinity 控制 Pod 分布,提升高可用与资源局部性。
- 使用 podTopologySpreadConstraints 将副本分散到不同节点/机架,降低单点故障风险。
- 启用 CPU Manager(静态策略) 与 拓扑感知调度,优化 NUMA 架构下的 CPU 绑定与性能隔离。
- 特殊资源:
- GPU:部署 NVIDIA Device Plugin 后,在 Pod 中以资源名 nvidia.com/gpu 请求,例如 1 块 GPU。
四 监控 告警与内核网络优化
- 可观测性:部署 Prometheus + Grafana 采集节点/Pod 指标,配置 Alertmanager 告警;结合日志方案(如 ELK/Fluentd)定位资源瓶颈与异常。
- 网络性能:选择高性能 CNI(如 Calico/Flannel),并根据环境设置合适 MTU(如 1450/1500)以避免分片与性能劣化。
- 稳定性:为关键服务配置 Liveness/Readiness 探针,确保异常快速重启与流量摘除。
五 快速落地清单与示例
- 建议的落地顺序:
- 明确 SLO,梳理应用 P50/P95/P99 资源画像;
- 为所有容器设置 requests/limits,优先保障关键服务的 Guaranteed;
- 按命名空间实施 ResourceQuota/LimitRange;
- 上线 HPA(CPU/内存或业务指标),必要时引入 VPA;
- 配置 亲和/反亲和与拓扑分散,启用 CPU Manager;
- 部署 Prometheus/Grafana/Alertmanager 与日志体系;
- 灰度与压测,持续校准 requests/limits 与 HPA 阈值。
- 示例一(容器资源请求与限制):
- 资源配置:requests cpu 250m / memory 64Mi;limits cpu 500m / memory 128Mi。
- 示例二(ResourceQuota):
- 命名空间总量:requests.cpu 1、requests.memory 1Gi、limits.cpu 2、limits.memory 2Gi。
- 示例三(LimitRange 默认与默认请求):
- default:cpu 500m / memory 512Mi;defaultRequest:cpu 250m / memory 256Mi。
- 示例四(HPA):
- 指标:CPU 利用率;目标:50%;副本:1–10。
- 示例五(GPU):
- 资源名:nvidia.com/gpu;数量:1。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos上k8s资源分配策略
本文地址: https://pptw.com/jishu/747719.html
