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、内存)。