Как включить сервер KubeAPI для показателей автомасштабирования HPA

Я использую версию Kube v1.13.0. Поскольку Heapster устарел с версии v1.11, я застрял в том, чтобы включить сервер API для метрик кластера для реализации HPA.

Прикрепленное изображение для справки

Может ли кто-нибудь помочь мне шаг за шагом включить сервер API Metrics или любое демонстрационное видео. Было бы действительно полезно продолжить работу.

Пожалуйста, дайте мне знать, если потребуется дополнительная информация.

Спасибо Дина


person DeenaDeepak    schedule 11.12.2018    source источник
comment
Пожалуйста, взгляните на [github.com/kubernetes/metrics]   -  person Random_Automation    schedule 11.12.2018


Ответы (1)


Я могу реализовать HPA, используя metrics-server, поскольку heapster обесценивается. Я выполнил следующие шаги:

  1. Клонируйте репозиторий github metrics-server: git clone https://github.com/kubernetes-incubator/metrics-server.git

Перейдите в каталог cd deploy/1.8+ и запустите следующие файлы yaml:

[root@ip-10-0-1-91 1.8+]# kubectl apply -f aggregated-metrics-reader.yaml 
clusterrole.rbac.authorization.k8s.io/system:aggregated-metrics-reader created
[root@ip-10-0-1-91 1.8+]# kubectl apply -f auth-reader.yaml 
rolebinding.rbac.authorization.k8s.io/metrics-server-auth-reader created
[root@ip-10-0-1-91 1.8+]# kubectl apply -f auth-delegator.yaml 
clusterrolebinding.rbac.authorization.k8s.io/metrics-server:system:auth-delegator created
[root@ip-10-0-1-91 1.8+]# kubectl apply -f metrics-apiservice.yaml 
apiservice.apiregistration.k8s.io/v1beta1.metrics.k8s.io created
[root@ip-10-0-1-91 1.8+]# kubectl apply -f resource-reader.yaml 
clusterrole.rbac.authorization.k8s.io/system:metrics-server created
clusterrolebinding.rbac.authorization.k8s.io/system:metrics-server created
[root@ip-10-0-1-91 1.8+]# kubectl apply -f metrics-server-deployment.yaml 
serviceaccount/metrics-server created
deployment.extensions/metrics-server created
[root@ip-10-0-1-91 1.8+]# kubectl apply -f metrics-server-service.yaml 
service/metrics-server created

Теперь создайте модуль, который вы хотите протестировать на автоматическое масштабирование (взято из официальных документов kubernetes):

[root@ip-10-0-1-91 auto]#  kubectl run --generator=run-pod/v1 php-apache -- 
image=k8s.gcr.io/hpa-example --requests=cpu=200m --expose --port=80
service/php-apache created
deployment.apps/php-apache created

Теперь создайте автоматическое масштабирование развертывания:

[root@ip-10-0-1-91 auto]# kubectl autoscale deployment php-apache --cpu-percent=50 --min=1 --max=10
horizontalpodautoscaler.autoscaling/php-apache autoscaled

Теперь проверьте HPA, приходят ваши метрики или нет:

[root@ip-10-0-1-91 manifests]# kubectl get hpa
NAME         REFERENCE               TARGETS   MINPODS   MAXPODS   REPLICAS   AGE
php-apache   Deployment/php-apache   0%/50%    1         10        1          2m

Теперь сгенерируйте нагрузку из другого окна, используя:

kubectl run -i --tty load-generator --image=busybox /bin/sh

Он откроет терминал sh, и вы можете запустить загрузку с этого терминала, используя:

while true; do wget -q -O- http://php-apache.default.svc.cluster.local; done

Потребуется около минуты, чтобы взять на себя достаточную нагрузку на вашу капсулу, и вы увидите штангу:

[root@ip-10-0-1-91 manifests]# kubectl get hpa
NAME         REFERENCE               TARGETS    MINPODS   MAXPODS   REPLICAS   AGE
php-apache   Deployment/php-apache   120%/50%   1         10        4          7m

И масштабирование стручков:

введите описание изображения здесь

Надеюсь, это поможет заставить ваш HPA работать.

РЕДАКТИРОВАТЬ:

Замените metrics-server-deployment.yaml файл в deploy/1.8+ следующим файлом 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:
       - command:
         - /metrics-server
         - --metric-resolution=30s
         - --kubelet-insecure-tls
         - --kubelet-preferred-address-types=InternalIP
         name: metrics-server
         image: k8s.gcr.io/metrics-server-amd64:v0.3.1
         imagePullPolicy: Always
         volumeMounts:
         - name: tmp-dir
           mountPath: /tmp

Также включите --authentication-token-webhook в kubelet.conf, тогда вы сможете получить HPA.

EDIT2: вам необходимо установить следующие свойства в файле развертывания (в вашем случае это tomcat), для которого вы создаете HPA, тогда только ваш HPA может получать метрики из вашего развертывания.

resources:
  requests:
    memory: "64Mi"
    cpu: "250m"
  limits:
    memory: "128Mi"
    cpu: "500m"
person Prafull Ladha    schedule 11.12.2018
comment
Комментарии не подлежат расширенному обсуждению; этот разговор был перешел в чат. - person Samuel Liew♦; 13.12.2018