apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
metadata:
  name: myservice
  namespace: mynamespace
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: myservice
  minReplicas: 1
  maxReplicas: 3
  metrics:
  - type: Resource
    resource:
      name: memory
      targetAverageValue: 700Mi

Setelah 15 menit, saya melihat REPLIKAS tumbuh menjadi 2. Sejak itu tidak turun.

C:\Users\myuser>kubectl get hpa
NAME            REFERENCE                  TARGETS           MINPODS   MAXPODS   REPLICAS   AGE
myservice    Deployment/myservice    490412032/700Mi          1         3         2          4h14m

Tidak ada lalu lintas ke layanan ini, seperti yang ditunjukkan di bawah MEMORY jauh di bawah 700Mi (seperti yang disebutkan dalam metrik HPA).

C:\Users\myuser>kubectl top pod
NAME                                     CPU(cores)   MEMORY(bytes)
myservice-6ff6bdc8d-jx4pc             29m          463Mi
myservice-6ff6bdc8d-zktnm             29m          471Mi

Saya bingung mengapa replika ke-2 telah dibuat dan mengapa tidak turun? Apakah saya melewatkan sesuatu? tolong sarankan.

-1
Kumar 10 Desember 2019, 15:47

1 menjawab

Jawaban Terbaik

Alasannya tidak turun:

Cara pengontrol HPA menghitung jumlah replika adalah

desiredReplicas = ceil[currentReplicas * ( currentMetricValue / desiredMetricValue )]

Dalam kasus Anda, currentMetricValue dihitung dari rata-rata metrik yang diberikan di seluruh pod, jadi (463 + 471)/2 = 467Mi karena targetAverageValue ditetapkan.

desiredMetricValue adalah 700Mi, jadi desiredReplicas adalah

ceil[2 * (467 / 700)] = ceil[1.34] = 2

Karena ceil(x) akan memberi Anda bilangan bulat terkecil yang lebih besar atau sama dengan x.


Alasannya naik:

Dengan asumsi pod pertama sekitar 463Mi, desiredReplicas adalah

ceil[2 * (463 / 700)] = ceil[1.32] = 2

Jadi jika Anda ingin hanya menjadi satu pod untuk beban kerja itu, targetAbsoluteValue harus setidaknya 950Mi.

2
char 10 Desember 2019, 16:21