Senario
Sebuah syarikat memindahkan platform e-dagangnya ke persekitaran Kubernetes native awan. Pada awalnya, bilangan nod dan Pod dikonfigurasi manual, menyebabkan isu prestasi semasa puncak dan pembaziran sumber ketika waktu tidak sibuk. Bil awan bulanan meningkat lebih 30%.
Gejala
- Bil awan terus meningkat, namun purata penggunaan CPU/memori di bawah 30%.
- Masa tindak balas pengguna melebihi 5 saat semasa puncak, dengan timeout sekali-sekala.
- Bilangan nod tetap, permintaan Pod kerap mencapai had kadar.
Diagnosis
- Gunakan
kubectl top podsdankubectl top nodesuntuk melihat penggunaan sumber. - Analisis log cluster autoscaler:
kubectl logs -n kube-system cluster-autoscaler. - Periksa konfigurasi HorizontalPodAutoscaler:
kubectl describe hpa <hpa-name>.
Arahan
Konfigurasi HorizontalPodAutoscaler (HPA)
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: web-app-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: web-app
minReplicas: 3
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 70
Guna: kubectl apply -f hpa.yaml.
Konfigurasi Cluster Autoscaler (anggap AWS)
Pastikan kumpulan nod mempunyai saiz min/maks ditetapkan. Anotasi kumpulan auto-skala:
kubectl annotate nodegroup <nodegroup-name> cluster-autoscaler.kubernetes.io/min-size=2
kubectl annotate nodegroup <nodegroup-name> cluster-autoscaler.kubernetes.io/max-size=20
Guna VerticalPodAutoscaler untuk optimumkan permintaan sumber
kubectl apply -f https://raw.githubusercontent.com/kubernetes/autoscaler/master/vertical-pod-autoscaler/deploy/vpa-v1-crd.yaml
kubectl apply -f https://raw.githubusercontent.com/kubernetes/autoscaler/master/vertical-pod-autoscaler/deploy/recommender-deployment.yaml
Kemudian buat VPA:
apiVersion: autoscaling.k8s.io/v1
kind: VerticalPodAutoscaler
metadata:
name: web-app-vpa
spec:
targetRef:
apiVersion: "apps/v1"
kind: Deployment
name: web-app
updatePolicy:
updateMode: "Auto"
resourcePolicy:
containerPolicies:
- containerName: '*'
minAllowed:
cpu: 100m
memory: 128Mi
maxAllowed:
cpu: 1
memory: 512Mi
Kawalan Risiko
- Guna PodDisruptionBudget untuk memastikan ketersediaan:
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
name: web-app-pdb
spec:
minAvailable: 2
selector:
matchLabels:
app: web-app
- Tetap tempoh sejuk HPA untuk elak thrashing: tambah medan
behaviordalam HPA. - Guna instance Spot untuk kurangkan kos pengiraan, tetapi laksanakan pengendalian gangguan yang betul (contohnya, penjadualan keutamaan).
Rollback
- Padam atau ubah konfigurasi HPA/VPA:
kubectl delete hpa web-app-hpa. - Kembalikan kumpulan nod ke saiz asal.
- Pantau metrik sehingga stabil.
Pengesahan
- Periksa perubahan bilangan Pod dengan beban:
kubectl get pods -w. - Bandingkan bil menggunakan alat kos awan (contohnya, AWS Cost Explorer).
- Metrik prestasi: masa tindak balas <1s, kadar ralat <0.1%.
Bila Hantar Tiket OpsGlobal
- Autoscaling gagal memenuhi SLA (contohnya, masih timeout semasa puncak).
- Kumpulan nod gagal skala turun (isu gangguan Spot berbaki).
- Perlu strategi peruntukan kos atau belanjawan yang kompleks.
Senario Penggunaan
Sesuai untuk pasukan yang menyelesaikan isu Cloud Migration dan memerlukan aliran kerja yang jelas.
Latar Belakang Masalah
Panduan praktikal untuk melaksanakan strategi autoscaling pintar yang mengoptimumkan prestasi dan kos, dengan arahan sebenar dan kawalan risiko.
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.