Как я могу использовать metrics-сервер вместо heapster, чтобы увидеть загрузку процессора в HPA - PullRequest
0 голосов
/ 31 января 2019

Как настроить использование сервера метрик для получения загрузки ЦП для HPA?

# kubectl top nodes

ошибка: метрики еще не доступны

# kubectl get pods -n kube-system

NAME READY STATUS RESTARTS AGE

heapster-709db6bd48-f2gba 2/2 Выполнено 0 6h

metrics-server-70647b8f8b-99pja 1/1 Выполнено 0 5h

.....

# kubectl get hpa

НАЗВАНИЕ СПРАВОЧНЫЕ МАРКИ MINPODS MAXPODS REPLICAS AGE

devops-deploy Развертывание / devops-deploy / 50% 4 10 4 1h

1 Ответ

0 голосов
/ 01 февраля 2019

У меня была такая же проблема, как и у вас.Мне помогло это сообщение .

- удалить сервер метрик

- изменить сервер метрик / deploy / 1.8 + / metrics-server-deploy.yaml

-применить снова

-или просто

Ниже более подробная информация:

kubectl delete -f metrics-server/deploy/1.8+

Редактировать metrics-server/deploy/1.8+/metrics-server-deployment.yaml и добавить следующие опции:

    command:
    - /metrics-server
    - --kubelet-insecure-tls
    - --kubelet-preferred-address-types=InternalIP

metrics-server-deploy.yaml должен выглядеть как показано ниже, или просто скопируйте и вставьте его из здесь

---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: metrics-server
  namespace: kube-system
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: metrics-server
  namespace: kube-system
  labels:
    k8s-app: metrics-server
spec:
  selector:
    matchLabels:
      k8s-app: metrics-server
  template:
    metadata:
      name: metrics-server
      labels:
        k8s-app: metrics-server
    spec:
      serviceAccountName: metrics-server
      volumes:
      # mount in tmp so we can safely use from-scratch images and/or read-only containers
      - name: tmp-dir
        emptyDir: {}
      containers:
      - name: metrics-server
        image: k8s.gcr.io/metrics-server-amd64:v0.3.1
        imagePullPolicy: Always
        command:
        - /metrics-server
        - --kubelet-insecure-tls
        - --kubelet-preferred-address-types=InternalIP
        volumeMounts:
        - name: tmp-dir
          mountPath: /tmp

Снова примените файлы metrics-server: kubectl apply -f metrics-server/deploy/1.8+

clusterrole.rbac.authorization.k8s.io / system: aggregated-metrics-reader создал clusterrolebinding.rbac.authorization.k8s.io/metrics-server:system:auth-delegator создал rolebinding.rbac.authorization.k8s.io/metrics-server-auth-reader создал apiservice.apiregistration.k8s.io/v1beta1.metrics.k8s.io создал serviceaccount / metrics-server создал deploy.extensions / metrics-server создал сервис / metrics-сервер создал кластерролл.rbac.authorization.k8s.io/system:metrics-server создал кластерrolebinding.rbac.authorization.k8s.io/system:metrics-server создан

И проверьте результат:

kubectl get hpa    
NAME               REFERENCE                     TARGETS         MINPODS   MAXPODS   REPLICAS   AGE
nginx-deployment   Deployment/nginx-deployment   <unknown>/80%   3         10        10         25

kubectl top nodes
NAME            CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%   
kube-master-1   255m         12%    2582Mi          35%       
kube-worker-1   124m         6%     2046Mi          27

kubectl top pods
NAME                                CPU(cores)   MEMORY(bytes)   
nginx-deployment-76bf4969df-4bbdc   0m           2Mi             
nginx-deployment-76bf4969df-5m6xc   0m           2Mi             
nginx-deployment-76bf4969df-b4zh7   0m           2Mi             
nginx-deployment-76bf4969df-c58wl   0m           2Mi             
nginx-deployment-76bf4969df-cktcg   0m           2Mi             
nginx-deployment-76bf4969df-fbjj9   0m           2Mi             
nginx-deployment-76bf4969df-gh94w   0m           2Mi             
nginx-deployment-76bf4969df-qx6ld   0m           2Mi             
nginx-deployment-76bf4969df-rvt54   0m           2Mi             
nginx-deployment-76bf4969df-vq9gs   0m           2Mi

Кроме того, если вы используете автоматическое масштабирование в модуле на основе процента использования ресурсовдля модуля необходимо указать ограничение ресурсов, иначе он не сможет рассчитать процент используемых ресурсов.При отсутствии ограничений на ресурсы в спецификации модуля для развертывания вам потребуется настроить HPA для масштабирования на основе абсолютных значений с включенными единицами измерения.В случае с CPU вы можете установить его на 300m в виде строки.В случае с ОЗУ вы можете установить, например, 400Mi.Отсутствие ограничения ресурса объясняет, почему вы не видите значение current для метрики при запуске kubectl get hpa в TARGETS.

...