k3s动态扩容
This commit is contained in:
133
test-hpa-strong.ps1
Normal file
133
test-hpa-strong.ps1
Normal file
@@ -0,0 +1,133 @@
|
||||
Write-Host "=== HPA Stress Test ===" -ForegroundColor Cyan
|
||||
Write-Host ""
|
||||
|
||||
# 配置参数
|
||||
$url = "http://localhost:30301"
|
||||
$jobCount = 50
|
||||
$requestPerJob = 5000
|
||||
|
||||
Write-Host "Configuration:" -ForegroundColor Yellow
|
||||
Write-Host " Target URL: $url" -ForegroundColor White
|
||||
Write-Host " Concurrent Jobs: $jobCount" -ForegroundColor White
|
||||
Write-Host " Requests per Job: $requestPerJob" -ForegroundColor White
|
||||
Write-Host " Total Requests: $($jobCount * $requestPerJob)" -ForegroundColor White
|
||||
Write-Host ""
|
||||
|
||||
# 清理旧任务
|
||||
Write-Host "[1/4] Cleaning up old jobs..." -ForegroundColor Cyan
|
||||
Get-Job | Where-Object { $_.Name -like "HPA-*" } | Stop-Job | Remove-Job
|
||||
Start-Sleep -Seconds 2
|
||||
Write-Host "[OK] Cleaned" -ForegroundColor Green
|
||||
Write-Host ""
|
||||
|
||||
# 启动并发任务
|
||||
Write-Host "[2/4] Starting $jobCount concurrent jobs..." -ForegroundColor Cyan
|
||||
$jobs = @()
|
||||
|
||||
for ($i = 1; $i -le $jobCount; $i++) {
|
||||
try {
|
||||
$job = Start-Job -Name "HPA-$i" -ScriptBlock {
|
||||
param($targetUrl, $totalRequests)
|
||||
$success = 0
|
||||
$failed = 0
|
||||
|
||||
for ($j = 1; $j -le $totalRequests; $j++) {
|
||||
try {
|
||||
$response = Invoke-WebRequest -Uri $targetUrl -Method GET -TimeoutSec 3 -UseBasicParsing
|
||||
if ($response.StatusCode -eq 200) {
|
||||
$success++
|
||||
}
|
||||
} catch {
|
||||
$failed++
|
||||
}
|
||||
|
||||
# 每 500 个请求短暂休息,避免完全耗尽资源
|
||||
if ($j % 500 -eq 0) {
|
||||
Start-Sleep -Milliseconds 50
|
||||
}
|
||||
}
|
||||
|
||||
return @{
|
||||
Success = $success
|
||||
Failed = $failed
|
||||
}
|
||||
} -ArgumentList $url, $requestPerJob
|
||||
|
||||
$jobs += $job
|
||||
|
||||
if ($i % 10 -eq 0) {
|
||||
Write-Host " Started $i/$jobCount jobs..." -ForegroundColor Gray
|
||||
}
|
||||
} catch {
|
||||
Write-Host " Failed to start job $i : $_" -ForegroundColor Red
|
||||
}
|
||||
}
|
||||
|
||||
Write-Host ""
|
||||
Write-Host "[OK] All $jobCount jobs started" -ForegroundColor Green
|
||||
Write-Host ""
|
||||
|
||||
# 显示监控命令
|
||||
Write-Host "[3/4] Monitoring Commands (run in separate windows):" -ForegroundColor Cyan
|
||||
Write-Host " Window 1 - HPA Status:" -ForegroundColor Yellow
|
||||
Write-Host " kubectl get hpa data-engine-hpa -w" -ForegroundColor White
|
||||
Write-Host ""
|
||||
Write-Host " Window 2 - Pod Status:" -ForegroundColor Yellow
|
||||
Write-Host " kubectl get pods -l app=data-engine -w" -ForegroundColor White
|
||||
Write-Host ""
|
||||
Write-Host " Window 3 - Resource Usage:" -ForegroundColor Yellow
|
||||
Write-Host " while(`$true) { Clear-Host; kubectl top pods -l app=data-engine; kubectl get hpa data-engine-hpa; Start-Sleep 3 }" -ForegroundColor White
|
||||
Write-Host ""
|
||||
|
||||
# 等待用户确认
|
||||
Write-Host "[4/4] Load test is running..." -ForegroundColor Green
|
||||
Write-Host "Press any key to stop all jobs and see results..." -ForegroundColor Yellow
|
||||
$null = $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
|
||||
Write-Host ""
|
||||
|
||||
# 停止所有任务
|
||||
Write-Host "Stopping all jobs..." -ForegroundColor Cyan
|
||||
Get-Job -Name "HPA-*" | Stop-Job
|
||||
|
||||
# 收集结果
|
||||
Write-Host "Collecting results..." -ForegroundColor Cyan
|
||||
$results = Get-Job -Name "HPA-*" | Receive-Job -Wait
|
||||
Get-Job -Name "HPA-*" | Remove-Job
|
||||
|
||||
# 统计
|
||||
$totalSuccess = 0
|
||||
$totalFailed = 0
|
||||
foreach ($result in $results) {
|
||||
$totalSuccess += $result.Success
|
||||
$totalFailed += $result.Failed
|
||||
}
|
||||
|
||||
Write-Host ""
|
||||
Write-Host "========================================" -ForegroundColor Cyan
|
||||
Write-Host " TEST RESULTS" -ForegroundColor Cyan
|
||||
Write-Host "========================================" -ForegroundColor Cyan
|
||||
Write-Host ""
|
||||
Write-Host "Total Requests: $($totalSuccess + $totalFailed)" -ForegroundColor White
|
||||
Write-Host "Successful: $totalSuccess" -ForegroundColor Green
|
||||
Write-Host "Failed: $totalFailed" -ForegroundColor $(if ($totalFailed -gt 0) { "Red" } else { "Green" })
|
||||
Write-Host ""
|
||||
|
||||
# 显示最终状态
|
||||
Write-Host "========================================" -ForegroundColor Cyan
|
||||
Write-Host " FINAL STATUS" -ForegroundColor Cyan
|
||||
Write-Host "========================================" -ForegroundColor Cyan
|
||||
Write-Host ""
|
||||
Write-Host "[HPA Status]" -ForegroundColor Yellow
|
||||
kubectl get hpa data-engine-hpa
|
||||
Write-Host ""
|
||||
Write-Host "[Pod List]" -ForegroundColor Yellow
|
||||
kubectl get pods -l app=data-engine
|
||||
Write-Host ""
|
||||
Write-Host "[Resource Usage]" -ForegroundColor Yellow
|
||||
kubectl top pods -l app=data-engine 2>$null
|
||||
if ($LASTEXITCODE -ne 0) {
|
||||
Write-Host " Metrics not available" -ForegroundColor Gray
|
||||
}
|
||||
Write-Host ""
|
||||
Write-Host "========================================" -ForegroundColor Cyan
|
||||
Write-Host "Test completed!" -ForegroundColor Green
|
||||
Reference in New Issue
Block a user