Senario
Kluster Kubernetes anda sering mengalami kegagalan penjadualan Pod semasa puncak perniagaan, manakala sumber terbiar ketika trafik rendah menyebabkan bil awan yang tinggi. Anda perlukan autoscaling untuk memadankan beban dan mengawal kos.
Simptom
- Pod terlekat dalam status Pending kerana kekurangan sumber nod
- Penggunaan nod di bawah 30% selama berjam-jam
- Bil awan bulanan meningkat >20% tanpa pertumbuhan perniagaan yang sepadan
Diagnosis
- Periksa sumber kluster:
kubectl top nodesdankubectl top pods - Lihat peristiwa Pod:
kubectl describe pod <nama-pod>untuk Insufficient memory/cpu - Analisis kos: Dalam AWS Cost Explorer, tapis mengikut perkhidmatan (EC2, EKS) dan tag untuk mengenal pasti sumber terbiar
- Semak status HPA:
kubectl get hpauntuk melihat sasaran berbanding metrik sebenar
Perintah
Konfigurasi HPA (Horizontal Pod Autoscaler)
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: my-app-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: my-app
minReplicas: 2
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 70
Guna: kubectl apply -f hpa.yaml
Konfigurasi Cluster Autoscaler (autoscaling nod)
Andaikan Cluster Autoscaler telah dipasang, tetapkan min/maks nod:
apiVersion: v1
kind: ConfigMap
metadata:
name: cluster-autoscaler-status
namespace: kube-system
data:
config: |
{
"minNodes": 3,
"maxNodes": 20
}
Atau melalui AWS CLI untuk mengemas kini Auto Scaling Group:
aws autoscaling update-auto-scaling-group --auto-scaling-group-name my-asg --min-size 3 --max-size 20
Penandaan kos dan pelaporan
# Label nod untuk penjejakan kos
kubectl label nodes --all cost-center=production
# Guna AWS Cost Explorer untuk kumpulan mengikut tag
Kawalan Risiko
- Tetapkan masa penyejukan HPA:
--horizontal-pod-autoscaler-downscale-stabilization-window=5m - Tetapkan kelewatan skala naik Cluster Autoscaler:
--scale-down-delay-after-add=10m - Guna PodDisruptionBudgets untuk perkhidmatan kritikal
- Uji dalam persekitaran pementasan sebelum pengeluaran
Rollback
- Padam HPA:
kubectl delete hpa my-app-hpa - Pulihkan replika Deployment:
kubectl scale deployment my-app --replicas=3 - Tetapkan semula konfigurasi Cluster Autoscaler: kembalikan saiz min ASG
- Untuk lumpuhkan sepenuhnya:
kubectl scale deployment cluster-autoscaler --replicas=0 -n kube-system
Pengesahan
- Semak penjadualan Pod:
kubectl get pods -o widesemuanya berjalan - Pantau penggunaan sumber:
kubectl top nodesmenunjukkan penggunaan 40-80% - Bandingkan kos: semak bil AWS dua minggu sebelum dan selepas, jangkakan penjimatan sekurang-kurangnya 15%
- Ujian beban:
kubectl run -it --rm load-generator --image=busybox -- /bin/sh -c "while true; do wget -q -O- http://my-app-service; done"dan perhatikan penskalaan
Bila Perlu Menghantar Tiket OpsGlobal
- Autoscaling tidak mencetus walaupun metrik wujud, log menunjukkan isu pelayan metrik
- Cluster autoscaler berayun menyebabkan ketidakstabilan
- Perlu nasihat pengoptimuman kos merentasi pelbagai rantau dan kluster
- Ralat dasar penskalaan menyebabkan gangguan perkhidmatan
Senario Penggunaan
Sesuai untuk pasukan yang menyelesaikan isu Cloud Migration dan memerlukan aliran kerja yang jelas.
Latar Belakang Masalah
Panduan mendalam tentang autoscaling kapasiti awan dan pengoptimuman kos, meliputi senario, simptom, diagnosis, perintah, kawalan risiko, rollback, pengesahan, dan bila perlu menghubungi OpsGlobal.
Langkah Penyelesaian
Sahkan impak dan perubahan terkini, kumpul log, konfigurasi dan metrik, kemudian baiki mengikut risiko.
Contoh Arahan
Gantikan contoh dengan nama sumber sebenar dan simpan kata laluan, token atau kunci dalam pembolehubah persekitaran.
Risiko
Sebelum operasi produksi, semak sandaran, akses, tetingkap perubahan dan pelan rollback.
Pelan Rollback
Simpan konfigurasi dan versi asal; rollback konfigurasi, imej atau perubahan pangkalan data jika metrik tidak normal.
Senarai Serahan
Rekod punca isu, arahan penting, langkah pembaikan, hasil pengesahan dan cadangan susulan.
Perlu bantuan isu teknikal serupa?
Jika pelayan, Kubernetes, Docker, CI/CD, pangkalan data atau pemantauan anda bermasalah, hantar log dan konfigurasi untuk diagnosis jauh.