在Ubuntu上进行Kubernetes性能测试的完整流程
在Ubuntu系统上,首先需要搭建Kubernetes集群作为测试目标。常用安装方式有两种:
sudo snap install microk8s --classic
microk8s enable dashboard dns registry
sudo apt-get update && sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update && sudo apt-get install -y containerd.io
sudo kubeadm init --pod-network-cidr=10.244.0.0/16 # 初始化Master节点
安装完成后,使用kubectl get nodes
确认集群状态(所有节点应为Ready
)。
根据测试目标(集群整体性能、应用层负载、网络性能等),选择合适的工具:
以K6为例,部署步骤如下:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys C5AD17C747E3415A
echo "deb https://dl.k6.io/deb stable main" | sudo tee /etc/apt/sources.list.d/k6.list
sudo apt-get update && sudo apt-get install k6
test.js
):模拟100个并发用户,持续30秒的HTTP GET请求:import http from 'k6/http';
import { check, sleep } from 'k6';
export let options = {
vus: 100, // 并发用户数
duration: '30s', // 测试时长
};
export default function () {
let res = http.get('http://your-k8s-service-ip'); // 替换为K8s服务的IP或域名
check(res, {
'status is 200': (r) => r.status === 200,
});
sleep(1); // 模拟用户思考时间
}
kubectl
创建Job运行K6容器:kubectl create job k6-test --image=grafana/k6 -- run --quiet --out=json=./results.json test.js
测试完成后,通过kubectl logs job/k6-test
查看结果。git clone https://github.com/kubernetes/perf-tests.git
cd perf-tests/clusterloader2
./run.sh --nodes=3 --provider=skeleton --testconfig=testing/density/config.yaml --reportdir=./results
# 在Pod1中运行iperf3服务器
kubectl exec -it pod/iperf3-server -- iperf3 -s
# 在Pod2中运行iperf3客户端(测试到Pod1的带宽)
kubectl exec -it pod/iperf3-client -- iperf3 -c <Pod1-IP> -t 30
k6
命令行工具或Grafana可视化:k6 report results.json --summary
kubectl top
命令实时查看Pod、节点的资源使用情况(需安装Metrics Server):kubectl top pods -A # 查看所有命名空间的Pod CPU/内存使用
kubectl top nodes # 查看节点的CPU/内存使用
根据测试结果优化集群配置:
resources.requests/limits
(如增加CPU/内存配额),或扩容Worker节点。--leader-elect-timeout
参数),或增加Scheduler副本。通过以上流程,可在Ubuntu上完成Kubernetes集群的性能测试,识别性能瓶颈并优化集群配置,确保其满足业务需求。