Kubernetes: Как применить автоматическое масштабирование по горизонтали (HPA) для RC, который содержит несколько контейнеров?

Я попытался использовать HPA для RC, который содержит только один контейнер, и он прекрасно работает. Но когда у меня есть RC с несколькими контейнерами (т. Е. Блок, содержащий несколько контейнеров), HPA не может очистить загрузку ЦП и отображает состояние "Неизвестно", как показано ниже. Как я могу успешно реализовать HPA для RC с несколькими контейнерами. Документы Kuberentes не имеют никакой информации по этому поводу, а также я не нашел никаких упоминаний о том, что это невозможно. Может кто-нибудь, пожалуйста, поделитесь своим опытом или точкой зрения, по этому вопросу. Большое спасибо.

prometheus-watch-ssltargets-hpa   ReplicationController/prometheus   <unknown> / 70%   1         10        0          4s 

Также для справки ниже мой файл HPA yaml.

apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: prometheus-watch-ssltargets-hpa
  namespace: monitoring
spec:
  scaleTargetRef:
    apiVersion: v1
    kind: ReplicationController
    name: prometheus
  minReplicas: 1
  maxReplicas: 5
  targetCPUUtilizationPercentage: 70 

1 ответ

Решение

Безусловно, можно установить HPA для набора RC/Deployment/Replica с несколькими контейнерами. В моем случае проблема заключалась в формате запроса лимита ресурсов. По этой ссылке я выяснил, что если контейнеры модуля не имеют соответствующего набора запросов ресурсов, загрузка ЦП для модуля не будет определена, и HPA не предпримет никаких действий для этого показателя. В моем случае я использовал запрос ресурсов, как показано ниже, что вызвало ошибку (Но, пожалуйста, обратите внимание, что следующий формат запроса ресурсов работает абсолютно нормально, когда я использую его с развертываниями, контроллерами репликации и т. Д. Это только когда, кроме того, я хотел внедрить HPA, вызвавший проблему, упомянутую в вопросе.)

    resources:
      limits:
        cpu: 2
        memory: 200M
      requests:
        cpu: 1
        memory: 100Mi

Но после его изменения, как показано ниже (т. Е. С соответствующим набором запросов ресурсов, который HPA может понять), он работает нормально.

    resources:
      limits:
        cpu: 2
        memory: 200Mi
      requests:
        cpu: 1
        memory: 100Mi
Другие вопросы по тегам