У меня была такая же проблема, как и у вас.Мне помогло это сообщение .
- удалить сервер метрик
- изменить сервер метрик / 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
.