Senario
Sebuah syarikat sedang memindahkan beban kerja ke kluster Kubernetes. Pada peringkat awal, mereka menyediakan banyak nod tetap, menyebabkan penggunaan sumber rendah (<30%) dan bil awan yang tinggi. Matlamatnya adalah untuk mencapai autoskala yang sepadan dengan permintaan sebenar sambil mengawal kos.
Gejala
- Penggunaan CPU/memori nod kluster sentiasa di bawah 40%.
- Bil awan meningkat bulan ke bulan >20% tanpa pertumbuhan perniagaan.
- Pod kerap dalam status Pending kerana kekurangan sumber, tetapi nod terbiar.
Diagnosis
- Periksa konfigurasi Horizontal Pod Autoscaler (HPA):
bash kubectl get hpa -A kubectl describe hpa <nama> -n <namespace> - Periksa log Cluster Autoscaler:
bash kubectl logs -n kube-system deployment/cluster-autoscaler - Analisis penggunaan nod:
bash kubectl top nodes kubectl describe node <nama-nod> - Gunakan alat kos awan (contohnya AWS Cost Explorer) untuk melihat perbelanjaan mengikut jenis sumber.
Arahan
Sediakan HPA
kubectl autoscale deployment <nama-deployment> --cpu-percent=50 --min=2 --max=10 -n <namespace>
Dayakan Cluster Autoscaler (contoh untuk AWS EKS)
eksctl create iamserviceaccount --name cluster-autoscaler --namespace kube-system \
--cluster <nama-kluster> --attach-policy-arn <policy-arn> --approve
kubectl apply -f https://raw.githubusercontent.com/kubernetes/autoscaler/master/cluster-autoscaler/cloudprovider/aws/examples/cluster-autoscaler-autodiscover.yaml
kubectl -n kube-system annotate deployment.apps/cluster-autoscaler cluster-autoscaler.kubernetes.io/scale-down-disabled=false
Guna instance Spot (jika pembekal awan menyokong)
Buat kumpulan nod:
eksctl create nodegroup --cluster <nama-kluster> --node-type t3.medium --nodes-min 2 --nodes-max 20 \
--node-volume-size 20 --spot --asg-access --managed
Kawalan Risiko
- Tetapkan Pod Disruption Budgets (PDB) untuk mengelakkan gangguan perkhidmatan kritikal:
yaml apiVersion: policy/v1 kind: PodDisruptionBudget metadata: name: app-pdb spec: minAvailable: 2 selector: matchLabels: app: myapp - Tetapkan had minimum dan maksimum replika untuk HPA.
- Gunakan pemilih nod dan taint/toleration untuk beban kerja khusus.
- Uji persekitaran bukan pengeluaran sebelum mendayakan Cluster Autoscaler.
- Tetapkan amaran belanjawan: gunakan pemantauan awan dan PagerDuty untuk memaklumkan anomali kos.
Rollback
Jika autoskala menyebabkan penurunan prestasi atau peningkatan kos:
1. Kembalikan HPA:
bash
kubectl delete hpa <nama> -n <namespace>
2. Pulihkan kumpulan nod ke saiz tetap:
bash
eksctl scale nodegroup --cluster <nama-kluster> --name <nama-ng> --nodes 5 --nodes-min 5 --nodes-max 5
3. Alih keluar Cluster Autoscaler:
bash
kubectl delete -f https://raw.githubusercontent.com/kubernetes/autoscaler/master/cluster-autoscaler/cloudprovider/aws/examples/cluster-autoscaler-autodiscover.yaml
Pengesahan
- Pantau status HPA:
bash kubectl get hpa -w - Perhatikan perubahan bilangan nod:
bash kubectl get nodes -w - Lihat trend kos di konsol awan (harian/mingguan/bulanan).
- Gunakan alat ujian beban (contohnya Locust) untuk mensimulasikan trafik dan mengesahkan tindak balas skala.
Bila Perlu Menghantar Tiket OpsGlobal
- Cluster autoscaler gagal menskala nod dalam masa yang dijangkakan (>10 minit).
- Metrik sasaran HPA tidak dapat dicapai atau berayun liar.
- Kos meningkat mendadak walaupun tingkah laku skala normal.
- Konfigurasi salah kumpulan nod atau autoscaler menyebabkan perkhidmatan tidak tersedia.
- Perlu semakan pakar untuk pengoptimuman kos keseluruhan seni bina.
Senario Penggunaan
Sesuai untuk pasukan yang menyelesaikan isu Cloud Migration dan memerlukan aliran kerja yang jelas.
Latar Belakang Masalah
Artikel ini menyediakan panduan praktikal untuk mengoptimumkan kapasiti dan kos awan menggunakan autoskala Kubernetes semasa migrasi, merangkumi analisis senario, diagnosis gejala, arahan, kawalan risiko, rollback, pengesahan, dan bila perlu menghantar tiket 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.