CentOS K8s安裝后性能測試全流程指南
驗證集群狀態
使用kubectl確認集群節點、Pod及組件健康性:
kubectl get nodes # 確保所有節點狀態為"Ready"
kubectl get pods --all-namespaces # 確保所有Pod狀態為"Running"
部署監控工具
安裝Prometheus+Grafana監控集群資源(CPU、內存、磁盤、網絡)及Pod狀態,為性能分析提供數據支撐??赏ㄟ^Helm快速部署:
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm install prometheus prometheus-community/kube-prometheus-stack
準備測試應用
部署一個輕量級應用(如Nginx)作為負載目標,驗證集群基本功能并模擬真實場景:
# nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
---
# nginx-service.yaml
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
type: LoadBalancer # 或NodePort(測試環境用)
應用配置:kubectl apply -f nginx-deployment.yaml && kubectl apply -f nginx-service.yaml。
使用默認配置運行測試,收集初始性能數據(如響應時間、吞吐量、資源利用率)。常用工具:
test.js):import http from 'k6/http';
import { check } from 'k6';
export let options = {
vus: 10, // 虛擬用戶數
duration: '30s', // 測試時長
};
export default function () {
let res = http.get('http://<nginx-service-ip>/');
check(res, { 'status is 200': (r) => r.status === 200 });
}
運行測試:k6 run test.js(本地運行)或通過K8s Job分布式執行。逐步增加負載(如提升虛擬用戶數、并發請求數),觀察集群在高負載下的表現,識別性能拐點。例如用K6調整vus(虛擬用戶數)至100,運行k6 run --vus 100 --duration 1m test.js,記錄響應時間、錯誤率及節點資源使用率(通過Prometheus查看)。
在高負載(如80%集群容量)下持續運行測試(如1小時),檢查系統穩定性:
kubectl get pods -w查看重啟次數)。模擬節點或網絡故障,驗證集群容錯能力:
kubectl drain <node-name>排空節點(模擬節點宕機),觀察Pod是否自動遷移至其他節點(kubectl get pods -o wide查看Pod分布)。kube-monkey隨機刪除Pod(需提前安裝),檢查服務是否自動恢復(kubectl describe pod <pod-name>查看重啟原因)。針對K8s核心組件進行性能驗證:
etcd-benchmark工具測試etcd的讀寫性能(需進入etcd容器運行)。iperf3測試集群內網絡帶寬(在兩個Pod間運行iperf3 -c <target-pod-ip>),使用netperf測試延遲。ClusterLoader2模擬大規模Pod創建(如1000個Pod),測試調度器性能(生成調度延遲、成功率報告)。數據收集與可視化
從Prometheus導出測試數據,通過Grafana創建儀表盤,展示關鍵指標(如CPU使用率、內存占用、Pod重啟次數、請求延遲)。例如Grafana的Kubernetes集群監控模板可直接使用。
瓶頸識別
分析數據找出性能瓶頸:
resources.requests/limits)。優化調整
根據瓶頸調整配置:
resources.requests(請求資源)和limits(限制資源),避免資源爭搶。Horizontal Pod Autoscaler(HPA)根據CPU/內存使用率自動擴縮容(示例HPA配置):apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: nginx-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: nginx-deployment
minReplicas: 3
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 70
kubeadm join)或升級節點規格(如CPU、內存)。