最近更新时间:2026-01-28 14:48:26
本文为金山云容器引擎(KCE)环境下,容器化业务的高可用、高并发部署与调优提供标准化指导,助力业务平稳承载高流量压力。
合理的部署配置是业务稳定运行的基础,需结合业务特性针对性调整。
按需调整 Pod 副本数量
基于业务实际流量峰值、负载压力及容灾需求,灵活配置业务容器的 Pod 副本数,保障服务能力与业务诉求匹配。
配置节点反亲和性,规避单点故障
为避免同业务的多个 Pod 部署在同一节点引发的资源抢占或单点故障问题,建议配置Pod 节点反亲和性,强制同业务 Pod 分散部署在不同节点,配置示例如下:
spec:
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: k8s-app
operator: In
values:
- "{label_value}"
topologyKey: kubernetes.io/hostname独占节点部署,保障性能
对性能与稳定性要求严苛的核心业务,可采用节点独占部署方案:创建高规格、少节点的专属节点池,通过污点与容忍度的组合配置,实现单个节点仅运行一个业务 Pod。
该方案可使业务 Pod 独占节点资源,完全不受集群内其他应用的干扰,最大化资源利用率。
高 CPS 场景慎用资源限制
针对每秒连接数(CPS)较高的业务场景,不建议为 Pod 设置资源限制,防止因内存溢出(OOM)导致的流量中断;若业务场景确需配置资源限制,建议将阈值设置为尽可能大的合理值。
优化 Service 转发策略
若业务 Pod 无需集群内跨节点访问 Service 服务,建议将 Service 的ExternalTrafficPolicy参数配置为Local模式。相较于默认的Cluster模式,Local模式可减少跨节点流量转发损耗,提升约 8% 的转发性能。
公网 LB 带宽按需扩容
若业务使用公网负载均衡(LB)暴露服务,需根据实际流量峰值调整公网带宽。默认带宽配置大概率无法满足高并发业务诉求,需提前评估并扩容。
配置 HPA 实现弹性扩缩容
建议为核心业务配置Horizontal Pod Autoscaler(HPA),基于 Pod 资源使用率自动调整副本数量,适配业务流量的动态变化。
以 Nginx Ingress Controller 为例,高负载场景下固定副本数无法满足需求时,HPA 可实现自动扩容。KCE 支持在组件安装阶段或安装后,通过控制台可视化配置 HPA;若控制台暂不支持,可参考以下 YAML 手动配置:
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: {hpa_name}
spec:
maxReplicas: 5
metrics:
- resource:
name: cpu
target:
averageUtilization: 70
type: Utilization
type: Resource
minReplicas: 1
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: {deploy_name}Pod 在弹性扩缩容过程中,可能会引发少量业务连接中断,需结合业务的容灾能力,谨慎配置扩缩容阈值与冷却时间。
金山云 KCE 节点的操作系统已默认优化常规内核参数,针对高并发场景,需额外调整以下核心参数,消除网络瓶颈。
内核参数 | 调优目的 | 默认值 / 规则 |
|---|---|---|
| 解决 TCP 全连接队列溢出问题 | 默认值 4096(不同内核版本略有差异) |
| 解决节点连接跟踪表(conntrack)满的问题 | 默认值为 |
| 扩大本地可用端口范围,解决端口查找缓慢、端口耗尽问题 | 默认范围 32768~60999 |
| 关闭内核安全缓解机制,提升性能 | 仅适用于非生产环境或安全性要求较低的场景,建议搭配新版本系统镜像使用 |
| 开启 TIME_WAIT 端口复用,提升并发连接数 | 客户端侧节点配置,建议设置为 1 |
针对 Nginx(含 Nginx Ingress Controller)组件,通过以下参数调优,可显著提升高并发请求处理能力。
优化 Worker 进程与连接数
worker_processes = CPU核心数:使 Worker 进程数与节点 CPU 核心数完全匹配,最大化利用 CPU 算力。
worker_connections:根据节点内存大小与系统文件句柄(FD)限制,合理调大单个 Worker 进程的最大连接数。
开启长连接复用,降低性能损耗
Nginx 默认采用短连接访问后端服务,高并发场景下建议强制开启长连接复用,减少 TCP 连接创建与销毁的性能开销。同时配置合理的长连接超时参数,让单条连接可处理更多请求。
配置示例如下:
keepalive 320;
keepalive_time 1h;
keepalive_timeout 60s;
keepalive_requests 10000;后端服务执行滚动更新时,若 Pod 收到终止信号后立即退出,易导致两类问题:一是 Pod 上正在处理的请求直接失败;二是因流量转发时序延迟,部分新请求被转发至已退出的 Pod,造成流量损失。
为彻底解决该问题,推荐为所有后端业务 Pod 配置 preStop 生命周期钩子,实现 “端点被摘除后,Pod 继续运行一段时间处理存量请求”,从根本上规避滚动更新引发的流量中断。
配置示例如下:
apiVersion: apps/v1
kind: Deployment
spec:
template:
spec:
containers:
- name: my-app
lifecycle:
# 配置preStop Hook,延迟30秒执行容器退出逻辑
# 前置条件:业务容器内已预装sleep命令
preStop:
exec:
command:
- sleep
- "30"关于业务容器网络的可观测性配置可参考 net-exporter 容器网络可观测性实践
纯净模式
