Вступление
Для запуска команды kubectl top необходимы метрики Kubernetes.
Сервер метрик поможет нам узнать об использовании ресурсов подов и хостов.
При попытке настроить сервер метрик мы могли столкнуться с несколькими проблемами.
Для дальнейшего использования это было задокументировано, что может быть полезно для тех, кто сталкивается с подобными проблемами.
До сих пор я использовал старую версию метрики. Пора обновить.
Установка последней версии Metrics server
Последние манифесты метрик Kubernetes можно скачать отсюда, на момент начала обновления до последней версии os v0.4.2.
Думал, проблемы были бы исправлены в последней версии, и они все еще существуют.
Я использовал последнюю версию и до сих пор сталкиваюсь с некоторыми проблемами.
$ kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.4.1/components.yaml
Вывод:
$ kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.4.1/components.yaml serviceaccount/metrics-server created clusterrole.rbac.authorization.k8s.io/system:aggregated-metrics-reader created clusterrole.rbac.authorization.k8s.io/system:metrics-server created rolebinding.rbac.authorization.k8s.io/metrics-server-auth-reader created clusterrolebinding.rbac.authorization.k8s.io/metrics-server:system:auth-delegator created clusterrolebinding.rbac.authorization.k8s.io/system:metrics-server created service/metrics-server created deployment.apps/metrics-server created apiservice.apiregistration.k8s.io/v1beta1.metrics.k8s.io created
Исправление ошибок метрик Kubernetes для подов
В этом руководстве будут рассмотрены небольшие исправления.
Даже установка последней версии выдает ошибку metric not available
Заменим:
spec: containers: - args: - --cert-dir=/tmp - --secure-port=4443
На:
spec: containers: - args: - --cert-dir=/tmp - --secure-port=4443 - --kubelet-insecure-tls=true - --kubelet-preferred-address-types=InternalIP
Сохраните и выйдите из деплоймента с помощью wq!
kubectl edit deployments.apps -n kube-system metrics-server deployment.apps/metrics-server edited
kubectl top pods NAME CPU(cores) MEMORY(bytes) apacheweb-5c8fcdd556-hq8mz 1m 6Mi apacheweb-5c8fcdd556-mxmc2 1m 6Mi apacheweb-5c8fcdd556-rlvhn 1m 6Mi apacheweb-5c8fcdd556-x7vr7 1m 6Mi apacheweb-5c8fcdd556-zsvkp 1m 6Mi somepod 0m 2Mi
kubectl top nodes NAME CPU(cores) CPU% MEMORY(bytes) MEMORY% k8nod1 163m 8% 742Mi 9% k8mas1 <unknown> <unknown> <unknown> <unknown> k8nod2 <unknown> <unknown> <unknown> <unknown>
Еще раз отредактируйте deployment метрик Kubernetes в пространстве имен kube-system.
$ kubectl edit deployments.apps -n kube-system metrics-server
Добавьте это под политикой DNS или в конец раздела контейнера над политикой перезапуска.
Заключение
Завершить исправление проблемы с метриками Kubernetes в недавно развернутом кластере Kubernetes или в существующем кластере проще, отредактировав файлы yaml депйломентов.