Debian上K8S部署性能調優策略
sudo swapoff -a
關閉當前Swap,修改/etc/fstab
文件注釋掉Swap相關行,永久禁用。調整系統內核參數以提升網絡、內存等資源的處理效率。編輯/etc/sysctl.conf
文件,添加或修改以下關鍵參數:
net.core.somaxconn=65535
(擴大監聽隊列長度,避免連接拒絕)、net.ipv4.tcp_max_syn_backlog=65535
(增加SYN隊列大小,應對高并發連接請求)、net.ipv4.tcp_tw_reuse=1
(復用TIME_WAIT狀態的連接,減少資源占用)、net.ipv4.tcp_fin_timeout=30
(縮短FIN_WAIT_2狀態的超時時間,加快連接釋放);vm.swappiness=10
(降低系統使用Swap的傾向,優先使用物理內存);net.ipv4.ip_local_port_range=1024 65535
(擴大客戶端可用的臨時端口范圍,支持更多并發外發連接)。sudo sysctl -p
使配置生效。--max-pods
參數增加節點可運行的Pod數量(默認110,可根據節點資源適當提升,如150);--image-gc-high-threshold=85
(鏡像磁盤使用率達85%時觸發回收)、--image-gc-low-threshold=70
(回收至70%,避免頻繁GC影響性能);--container-runtime=remote
配合--container-runtime-endpoint=unix:///run/containerd/containerd.sock
(提升容器運行時交互效率)。--proxy-mode=ipvs
)替代默認的iptables模式(IPVS采用哈希表實現,大規模集群下轉發效率更高);--conntrack-max=1000000
(擴大連接跟蹤表大小,避免高并發下連接跟蹤失?。?、--conntrack-tcp-timeout-established=3600
(延長已建立連接的跟蹤超時時間,減少無效回收)。--max-requests-inflight=3000
(同一時間處理的非變更請求數,默認200)、--max-mutating-requests-inflight=1000
(同一時間處理的變更請求數,默認400),避免請求堆積導致API Server阻塞;--watch-cache-sizes=node=1000,pod=5000
(調大Node、Pod資源的Watch緩存大小,減少對etcd的直接訪問,提升查詢效率);--kube-api-qps=100
(每秒向API Server發送的請求數,默認50)、--kube-api-burst=150
(突發請求數,默認30),避免因API Server限流導致調度或控制延遲。proxy
插件(proxy . /etc/resolv.conf
),減少DNS查詢延遲(默認緩存時間為5秒,可根據需求調整)。ssd
、hdd
),通過volumeBindingMode: WaitForFirstConsumer
延遲綁定PVC,實現存儲資源的合理分配。resources.requests
(Pod啟動所需的最小資源)和resources.limits
(Pod能使用的最大資源),避免資源爭用(如CPU饑餓)或OOM(內存溢出);nodeAffinity
將Pod調度到特定節點(如需要GPU的Pod調度到帶GPU的節點),使用podAntiAffinity
將同一應用的Pod分散到不同節點(提高可用性);topologySpreadConstraints
實現Pod在Zone、Node等維度的均衡分布(如maxSkew=1
,確保每個Zone的Pod數量差異不超過1);kubectl autoscale deployment myapp --cpu-percent=50 --min=2 --max=10
),匹配負載變化。kube-bench
(檢查集群安全性)、kube-hunter
(模擬攻擊)、locust
(模擬用戶負載)進行性能測試,根據測試結果調整配置。