以下是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數據并測試恢復流程。
參考來源: