Kubernetes n'a pas pu trouver d'api métrique-serveur. J'utilise Kubernetes avec Docker sur Mac. J'essayais de faire HPA à partir de l'exemple suivant [ https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/] . Cependant, lorsque j'exécute la commande kubectl get hpa
, Ma cible était encore inconnue. Ensuite, j'ai essayé, kubectl describe hpa
. Ce qui m'a donné une erreur comme ci-dessous:
Name: php-Apache
Namespace: default
Labels: <none>
Annotations: <none>
CreationTimestamp: Sun, 07 Oct 2018 12:36:31 -0700
Reference: Deployment/php-Apache
Metrics: ( current / target )
resource cpu on pods (as a percentage of request): <unknown> / 5%
Min replicas: 1
Max replicas: 10
Conditions:
Type Status Reason Message
---- ------ ------ -------
AbleToScale True SucceededGetScale the HPA controller was able to get the target's current scale
ScalingActive False FailedGetResourceMetric the HPA was unable to compute the replica count: unable to get metrics for resource cpu: no metrics returned from resource metrics API
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning FailedComputeMetricsReplicas 1h (x34 over 5h) horizontal-pod-autoscaler failed to get cpu utilization: unable to get metrics for resource cpu: no metrics returned from resource metrics API
Warning FailedGetResourceMetric 1m (x42 over 5h) horizontal-pod-autoscaler unable to get metrics for resource cpu: no metrics returned from resource metrics API
J'utilise [ https://github.com/kubernetes-incubator/metrics-server] comme suggéré dans la documentation de Kubernetes. J'ai également essayé de faire la même chose en utilisant Minikube. Mais cela n'a pas fonctionné non plus.
Fonctionnement kubectl get --raw /apis/metrics.k8s.io/v1beta1/nodes
les sorties :
{
"kind": "NodeMetricsList",
"apiVersion": "metrics.k8s.io/v1beta1",
"metadata": {
"selfLink": "/apis/metrics.k8s.io/v1beta1/nodes"
},
"items": []
}
Solution (si vous utilisez Minikube):
Changement du contexte de Kubernetes en Minikube.
Serveur de métriques activé et tas de mémoire désactivé dans le minikube.
minikube addons disable heapster
minikube addons enable metrics-server
Déployez le serveur de métriques dans votre cluster en utilisant les étapes suivantes:
git clone https://github.com/kubernetes-incubator/metrics-server.git
cd metrics-server
kubectl create -f deploy/1.7/
(si Kubernetes version 1.7)
[~ # ~] ou [~ # ~]
kubectl create -f deploy/1.8+/
(si Kubernetes version 1.8+)
Début minikube dashboad
et minikube service [your service]
.
Essayez kubectl top node
.
J'ai trouvé cette ressource ( https://kubernetes.io/docs/tasks/configure-pod-container/assign-memory-resource/ ) utile.
Lors de l'utilisation de minikube 1.4.0, il n'est pas nécessaire de faire autre chose que minikube start
: kubectl top node/pod
devrait fonctionner immédiatement.
Je sais que c'est une réponse tardive, mais j'ai eu quelques problèmes avec Docker Kubernetes et Autoscaler moi-même sans trouver de bonne réponse sur Internet. Après plusieurs jours de débogage, j'ai découvert qu'il y avait des problèmes de connectivité avec le metrics-server
(impossible de se connecter aux pods).
J'ai désactivé TLS dans metrics-server
et il a commencé à fonctionner .. J'ai répondu à mon propre message ici si quelqu'un d'autre rencontre le même problème:
Docker Kubernetes (Mac) - Autoscaler incapable de trouver des métriques