Сервер метрик Kubernetes не предоставляет все метрики или масштабирование HPA

Следуя примеру здесь https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/#autoscaling-on-metrics-not-related-to-kubernetes-objects, я создал установленные метрики. -server и изменил его следующим образом:

    spec:
      containers:
      - command:
        - metrics-server
        - --secure-port=8443
        - --kubelet-insecure-tls=true
        - --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
        image: docker.io/bitnami/metrics-server:0.3.7-debian-10-r89
        imagePullPolicy: IfNotPresent
        name: metrics-server
        ports:
        - containerPort: 8443
          name: https
          protocol: TCP
        resources: {}

Мои узлы отображаются при запросе:

kubectl get --raw "/apis/metrics.k8s.io/v1beta1/nodes"
{"kind":"NodeMetricsList","apiVersion":"metrics.k8s.io/v1beta1","metadata":{"selfLink":"/apis/metrics.k8s.io/v1beta1/nodes"},"items":[{"metadata":{"name":"eo-test-metrics-35lks","selfLink":"/apis/metrics.k8s.io/v1beta1/nodes/eo-test-metrics-35lks","creationTimestamp":"2020-11-04T04:05:58Z"},"timestamp":"2020-11-04T04:05:28Z","window":"30s","usage":{"cpu":"770120208n","memory":"934476Ki"}},{"metadata":{"name":"eo-test-metrics-35lkp","selfLink":"/apis/metrics.k8s.io/v1beta1/nodes/eo-test-metrics-35lkp","creationTimestamp":"2020-11-04T04:05:58Z"},"timestamp":"2020-11-04T04:05:25Z","window":"30s","usage":{"cpu":"483763591n","memory":"850756Ki"}}]}

Но цели HPA остаются "неизвестными":

kubectl get hpa
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
php-apache Deployment/php-apache <unknown>/50% 1 10 1 31m

Запуск верхних узлов работает, но верхних модулей - нет.

kubectl top nodes
NAME                    CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%
eo-test-metrics-35lkp   93m          4%     934Mi           30%
eo-test-metrics-35lks   166m         8%     1053Mi          33%

Ошибка возврата Top pods error: Metrics not available:

 kubectl top pods
W1104 11:19:27.854485   62798 top_pod.go:266] Metrics not available for pod default/php-apache-d4cf67d68-blt2c, age: 13h1m51.854463s
error: Metrics not available for pod default/php-apache-d4cf67d68-blt2c, age: 13h1m51.854463s

Это на версии сервера Kubernetes v1.19.3 и версия сервера метрик 0.3.6

Журналы с сервера метрик

E1104 21:21:56.496129       1 reststorage.go:160] unable to fetch pod metrics for pod default/php-apache-d4cf67d68-blt2c: no metrics known for pod
E1104 21:22:10.945091       1 reststorage.go:160] unable to fetch pod metrics for pod default/php-apache-d4cf67d68-blt2c: no metrics known for pod
E1104 21:22:26.496814       1 reststorage.go:160] unable to fetch pod metrics for pod default/php-apache-d4cf67d68-blt2c: no metrics known for pod

2 ответа

Проблема решена, когда Docker 19.03 используется в Kubernetes версии 1.19 в связи с этой проблемой восходящего потока: https://github.com/kubernetes/kubernetes/issues/94281

Используйте эту версию сервера метрик

      git clone https://github.com/kodekloudhub/kubernetes-metrics-server
kubectl apply -f kubernetes-metrics-server

Затем следуйте инструкциям, указанным в этой ссылке.

Количество контейнеров будет увеличиваться по мере увеличения нагрузки.

НО я заметил, что автомасштабирование не уменьшает масштаб развертывания после остановки нагрузки. Может пройти некоторое время, пока он снова не уменьшится.

Примечание . Эту версию сервера метрик можно использовать только в среде разработки или обучения.

Я использовал среду Katakoda для проверки ответа.