Senario
Sebuah platform e-dagang menggunakan Kubernetes di AWS EKS dengan Cluster Autoscaler (CA) dan Horizontal Pod Autoscaler (HPA). Mereka mengalami peningkatan kos dan prestasi tidak menentu: kependaman tinggi semasa puncak, penggunaan nod di bawah 30% ketika luar puncak.
Gejala
- Bil bulanan meningkat >25%
- Purata penggunaan CPU nod di bawah 20% ketika luar puncak
- HPA sering mencetus tetapi Pod baharu lambat menjawab
- Log CA menunjukkan ralat "scale-up blocked"
Diagnosis
- Periksa konfigurasi HPA:
kubectl get hpa -n <namespace>untuk sasaran metrik. Pastikan permintaan dan had sumber ditetapkan wajar. - Analisis log CA:
kubectl logs -n kube-system deployment/cluster-autoscaleruntuk punca kegagalan (had kumpulan nod, kuota AWS). - Periksa penggunaan nod:
kubectl top nodesdankubectl describe nodes. - Gunakan AWS Cost Explorer dengan penapis tag untuk kenal pasti perbelanjaan terbuang pada nod terbiar.
Arahan
# Lihat status HPA
kubectl get hpa --all-namespaces
# Papar log CA
export CA_POD=$(kubectl get pods -n kube-system -l app.kubernetes.io/name=aws-cluster-autoscaler -o jsonpath='{.items[0].metadata.name}')
kubectl logs -n kube-system $CA_POD --tail=50
# Ubah saiz kumpulan nod (min/max) melalui AWS CLI
aws autoscaling update-auto-scaling-group --auto-scaling-group-name <ASG_NAME> --min-size 2 --max-size 10
# Tetapkan permintaan & had sumber Pod (contoh deployment)
kubectl set resources deployment <app> -n <ns> --requests=cpu=500m,memory=512Mi --limits=cpu=1,memory=1Gi
Kawalan Risiko
- Sebelum ubah saiz nod, cipta PodDisruptionBudget:
kubectl create pdb <name> --selector=app=<app> --min-available=2 - Tetapkan ambang pengecilan CA (misalnya penggunaan <50% untuk 10 minit) melalui argumen permulaan: tambah
--scale-down-utilization-threshold=0.5 --scale-down-delay-after-add=10m - Gunakan afin dan anti-afin nod untuk elak beban kerja mengganggu kapasiti mengejut
Pengembalian
- Kembalikan saiz nod asal:
aws autoscaling update-auto-scaling-group --auto-scaling-group-name <ASG_NAME> --min-size <asal> --max-size <asal> - Undur perubahan HPA:
kubectl rollout undo deployment/<deployment-name> -n <namespace> - Kembalikan parameter CA:
kubectl edit deployment cluster-autoscaler -n kube-systemdan pulihkan argumen sebelumnya
Pengesahan
- Pantau kos: Gunakan AWS Cost Explorer atau Kubecost untuk lihat perubahan kos harian selama seminggu.
- Sahkan tindak balas penskalaan: Jalankan ujian beban (cth, k6) untuk pastikan HPA dan CA berskala tanpa lengah.
- Periksa penggunaan nod:
kubectl top nodesdankubectl describe nodespastikan penggunaan luar puncak meningkat melebihi 40%.
Bila Hantar Tiket OpsGlobal
- Jika kelewatan penskalaan berterusan (tiada nod baharu dalam 5 minit)
- Log CA menunjukkan "Failed to find node group" atau ralat had laju API AWS
- Perlu bantuan konfigurasi HPA metrik tersuai (cth, berdasarkan panjang giliran)
- Gangguan kerap akibat penamatan Spot instance menjejaskan kestabilan beban kerja
Senario Penggunaan
Sesuai untuk pasukan yang menyelesaikan isu Cloud Migration dan memerlukan aliran kerja yang jelas.
Latar Belakang Masalah
Artikel ini menyediakan langkah-langkah diagnosis dan pengoptimuman untuk Cluster Autoscaler dan HPA dalam Kubernetes bagi mengawal kos, berdasarkan senario sebenar di AWS EKS.
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.