при работе с эталонным инструментом не работает автоскалер с вертикальным отсеком - PullRequest
0 голосов
/ 22 января 2020

У меня есть приложение на основе контейнера, которое используется для получения нагрузки от инструмента тестирования и генерирования использования памяти и процессора. Таким образом, я создал этот файл развертывания для приложения:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: slave-leech-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: slave-leech-deployment
  template:
    metadata:
      labels:
        app: slave-leech-deployment
    spec:
      containers:
      - name: slave-leech
        image: kewynakshlley/slave-leech
        ports:
          - containerPort: 3000
        imagePullPolicy: Always
        resources:
          limits:
            cpu: 100m
            memory: 50Mi
          requests:
            cpu: 100m
            memory: 50Mi

Также у меня есть сервис и манифест вертикального модуля автоматического масштабирования:

Сервис:

kind: Service
metadata:
  name: slave-leech-deployment
spec:
  selector:
    app: slave-leech-deployment
  ports:
    - port: 80
      targetPort: 3000
  type: LoadBalancer```


vertical pod auto scaler manifest:

``` apiVersion: autoscaling.k8s.io/v1beta2
kind: VerticalPodAutoscaler
metadata:
  name: my-vpa
spec:
  targetRef:
    apiVersion: "apps/v1"
    kind:       Deployment
    name:       slave-leech-deployment
  updatePolicy:
    updateMode: "Auto"

Когда я Запустите инструмент тестирования. Я вижу, что загрузка процессора достигает предела, но VPA не запускается, и контейнер не воссоздается с большим количеством ресурсов.

загрузка процессора

вывод kubectl опишите впа my-vpa

Namespace:    default
Labels:       <none>
Annotations:  kubectl.kubernetes.io/last-applied-configuration:
                {"apiVersion":"autoscaling.k8s.io/v1beta2","kind":"VerticalPodAutoscaler","metadata":{"annotations":{},"name":"my-vpa","namespace":"defaul...
API Version:  autoscaling.k8s.io/v1beta2
Kind:         VerticalPodAutoscaler
Metadata:
  Creation Timestamp:  2020-01-21T22:59:28Z
  Generation:          19
  Resource Version:    20357
  Self Link:           /apis/autoscaling.k8s.io/v1beta2/namespaces/default/verticalpodautoscalers/my-vpa
  UID:                 a5958daa-9274-4904-b706-bb81e4948599
Spec:
  Target Ref:
    API Version:  apps/v1
    Kind:         Deployment
    Name:         slave-leech-deployment
  Update Policy:
    Update Mode:  Recreate
Status:
  Conditions:
    Last Transition Time:  2020-01-21T23:00:07Z
    Message:               No pods match this VPA object
    Reason:                NoPodsMatched
    Status:                True
    Type:                  NoPodsMatched
    Last Transition Time:  2020-01-21T23:00:07Z
    Status:                True
    Type:                  RecommendationProvided
  Recommendation:
    Container Recommendations:
      Container Name:  slave-leech
      Lower Bound:
        Cpu:     25m
        Memory:  262144k
      Target:
        Cpu:     126m
        Memory:  262144k
      Uncapped Target:
        Cpu:     126m
        Memory:  262144k
      Upper Bound:
        Cpu:     1490m
        Memory:  428775530
Events: 
         <none>

Ответы [ 2 ]

0 голосов
/ 06 февраля 2020

ffran09 прав в своем ответе, но я хотел бы добавить дополнительную информацию.

Как уже говорилось в моем комментарии:

Попробуйте выполнить эту команду, чтобы увидеть точные запросы процессора на стручках:

kubectl get pod -n dev -o=custom-columns=NAME:.metadata.name,PHASE:.status.phase,CPU-REQUEST:.spec.containers\[0\].resources.requests.cpu 

Чем сравнить с вашими настроенными рекомендациями.

Это поможет вам наблюдать за фактическим использованием ресурсов и, следовательно, установить правильные ограничения для вашего VPA.

Я также рекомендую вам использовать metrics-server для приема метрик модуля. Minikube включает его в качестве дополнения:

minikube addons enable metrics-server

Для получения более подробной информации об этой части и других жизненно важных элементах VPA я настоятельно рекомендую вам go через следующие ресурсы:

Пожалуйста дайте мне знать, если это помогло.

0 голосов
/ 22 января 2020

Максимальная загрузка ЦП модуля составляет .097, что составляет менее 1 ядра, верхняя граница для вашей рекомендации - 1490 м (1,4 ядра), поэтому VPA не будет перепланировать. The VerticalPodAutoscaler uses the lowerBound and upperBound recommendations to decide whether to delete a Pod and replace it with a new Pod. If a Pod has requests less than the lower bound or greater than the upper bound, the VerticalPodAutoscaler deletes the Pod and replaces it with a Pod that has the target recommendation

Автоматическое масштабирование вертикальной ячейки

Понимание ограничений ресурсов в Кубернетес

...