#kubernetes
Вопрос:
Я развернул HPA, конфигурация которого показана внизу. Он масштабируется, когда загрузка процессора или памяти превышает 75%. Начальное количество реплик равно 1, а максимальное-3. Но я вижу, что количество модулей было увеличено до 3 1 через несколько минут после развертывания HPA.
Текущее использование процессора/памяти показано ниже. Вы можете видеть, что это очень мало по сравнению с requested
ресурсами, которые составляют 2 процессора и 8 ГБ памяти. Я не понимаю, почему он масштабируется. Я допустил какую-либо ошибку в конфигурации?
$ kubectl top pod transform-67df4445c5-6qpdd
W0818 16:04:43.199730 63930 top_pod.go:140] Using json format to get metrics. Next release will switch to protocol-buffers, switch early by passing --use-protocol-buffers flag
NAME CPU(cores) MEMORY(bytes)
transform-67df4445c5-6qpdd 250m 495Mi
apiVersion: apps/v1
kind: Deployment
metadata:
name: transform
namespace: default
spec:
replicas: 1
selector:
matchLabels:
name: transform
template:
metadata:
labels:
name: transform
spec:
containers:
- name: transform
image: zhaoyi0113/es-kinesis-firehose-transform
resources:
requests:
cpu: 2
memory: 8
ports:
- containerPort: 8080
---
apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
name: transform
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: transform
minReplicas: 1
maxReplicas: 3
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 75
- type: Resource
resource:
name: memory
target:
type: Utilization
averageUtilization: 75
Ответ №1:
Вы упомянули ресурс без единицы измерения : https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#resource-units-in-kubernetes
resources:
requests:
cpu: 2
memory: 8
для памяти это может быть 8 миль, а использование-450 миль, так что это выше. Это тоже может быть причиной. Вы не упомянули ограничение для ресурса, поэтому всегда рекомендуется добавлять ограничение также в ресурс.
Таким образом, HPA может рассчитать % на основе запроса и ограничения, установленного в разделе ресурсов.
Вы также можете проверить
kubectl get hpa
или
kubectl describe hpa <name>
чтобы проверить % использования и сведения о событии.
вот хорошая статья с рекомендациями от Google : https://cloud.google.com/blog/products/containers-kubernetes/kubernetes-best-practices-resource-requests-and-limits