以下是CentOS上K8s配置的优化方向及具体措施:
一、系统基础优化
- 关闭非必要服务:关闭防火墙、SELinux及swap分区,释放资源。
- 调整内核参数:
- 增加文件句柄限制:
fs.file-max=1048576。
- 优化网络栈:
net.ipv4.ip_local_port_range=1024 65535,net.ipv4.tcp_tw_reuse=1。
- 禁用IPv6(若无需):
net.ipv6.conf.all.disable_ipv6=1。
二、网络优化
- 选择高性能CNI插件:优先使用Calico、Cilium,支持高性能网络策略。
- 调整MTU:设置为1450(避免IP分片),高吞吐场景可尝试9000(Jumbo帧)。
- 启用网络加速:
- 调大全连接队列:
net.core.somaxconn=32768。
- 开启TCP时间戳复用:
net.ipv4.tcp_timestamps=1。
三、存储优化
- 使用SSD存储:etcd、Kubelet数据目录及Pod持久化存储均使用SSD。
- 配置存储类:通过StorageClass动态分配存储资源,区分SSD/HDD场景。
- 优化etcd存储:设置
--quota-backend-bytes(如8G),避免磁盘占满。
四、Kubernetes组件调优
- API Server:
- 调整
--max-requests-inflight(默认400,可增至1000+)和--max-mutating-requests-inflight(默认200)。
- 启用缓存:
--watch-cache-size=1000。
- Controller Manager/Scheduler:根据节点规模调整
--concurrent-deployment-syncs等参数。
- Kubelet:优化
--image-pull-progress-deadline(如30s),避免镜像拉取超时。
五、资源管理与调度
- 合理设置资源请求/限制:为Pod定义
requests和limits,避免资源争用。
- 节点亲和性/反亲和性:通过
nodeAffinity和podAntiAffinity优化Pod分布,提升可用性。
- 水平扩缩容:使用HPA根据负载自动调整Pod副本数。
六、监控与日志
- 监控工具:部署Prometheus+Grafana,监控节点、Pod资源使用及API Server性能。
- 日志管理:使用ELK Stack或Fluentd集中收集日志,分析异常。
七、安全优化
- RBAC权限控制:限制用户/服务账户的权限,避免越权操作。
- 网络策略:通过
NetworkPolicy限制Pod间通信,减少攻击面。
八、其他优化
- 镜像优化:使用多阶段构建减小镜像体积,启用缓存加速部署。
- 定期维护:清理无用Pod、镜像,备份etcd数据并测试恢复流程。
参考来源: