Kubernetes Dashboard - неизвестная ошибка сервера после входа в систему

9

Я успешно развернул Kubernetes через Kubespray, и все, кажется, работает нормально. Я могу получить доступ к кластеру через kubectl и список узлов, модулей, служб, секретов и так далее. Также возможно применить новые ресурсы, и конечная точка приборной панели получает мне страницу входа в приборную панель.

Я вошел в систему с токенами различных учетных записей служб (по умолчанию, kubernetes-dashboard, kubernetes-admin, ...) ... при каждом входе в систему я получаю те же самые всплывающие окна, как описано, например, в предупреждении о запрете всплывающих окон на панели управления kubespray .

Поэтому я применил кластерную привязку для учетной записи службы по умолчанию, как описано. Когда я вхожу сейчас с токеном по умолчанию, я получаю только

Unknown Server Error (404)
the server could not find the requested resource
Redirecting to previous state in 3 seconds...

окно, которое перенаправляет меня на страницу входа впоследствии. Такое же поведение, если я подключаюсь к Dashboard через kubectl proxy. Доступ по протоколу HTTPS через публичный IP-адрес кластера, а также HTTP через прокси

Я использую Kubernetes 1.16.2 и последний Kubespray master commit 18d19d9e

РЕДАКТИРОВАТЬ: Я уничтожил и повторно подготовил кластер, чтобы получить свежий экземпляр, предоставленный Kubespray, чтобы сделать все шаги детерминированными, добавив больше информации ...

kubectl -n kube-system logs --follow kubernetes-dashboard-556b9ff8f8-jbmgg -- во время попытки входа дает мне

2019/12/16 12:35:02 [2019-12-16T12:35:02Z] Incoming HTTP/2.0 GET /api/v1/csrftoken/login request from 10.233.74.0:57458: { contents hidden }
2019/12/16 12:35:02 [2019-12-16T12:35:02Z] Outcoming response to 10.233.74.0:57458 with 200 status code
2019/12/16 12:35:02 [2019-12-16T12:35:02Z] Incoming HTTP/2.0 POST /api/v1/login request from 10.233.74.0:57458: { contents hidden }
2019/12/16 12:35:02 [2019-12-16T12:35:02Z] Outcoming response to 10.233.74.0:57458 with 200 status code
2019/12/16 12:35:02 [2019-12-16T12:35:02Z] Incoming HTTP/2.0 GET /api/v1/login/status request from 10.233.74.0:57458: {}
2019/12/16 12:35:02 [2019-12-16T12:35:02Z] Outcoming response to 10.233.74.0:57458 with 200 status code
2019/12/16 12:35:02 [2019-12-16T12:35:02Z] Incoming HTTP/2.0 GET /api/v1/csrftoken/token request from 10.233.74.0:57458: {}
2019/12/16 12:35:02 [2019-12-16T12:35:02Z] Outcoming response to 10.233.74.0:57458 with 200 status code
2019/12/16 12:35:02 [2019-12-16T12:35:02Z] Incoming HTTP/2.0 POST /api/v1/token/refresh request from 10.233.74.0:57458: { contents hidden }
2019/12/16 12:35:02 [2019-12-16T12:35:02Z] Outcoming response to 10.233.74.0:57458 with 200 status code
2019/12/16 12:35:02 [2019-12-16T12:35:02Z] Incoming HTTP/2.0 GET /api/v1/login/status request from 10.233.74.0:57458: {}
2019/12/16 12:35:02 [2019-12-16T12:35:02Z] Outcoming response to 10.233.74.0:57458 with 200 status code
2019/12/16 12:35:02 [2019-12-16T12:35:02Z] Incoming HTTP/2.0 GET /api/v1/csrftoken/token request from 10.233.74.0:57458: {}
2019/12/16 12:35:02 [2019-12-16T12:35:02Z] Outcoming response to 10.233.74.0:57458 with 200 status code
2019/12/16 12:35:02 [2019-12-16T12:35:02Z] Incoming HTTP/2.0 POST /api/v1/token/refresh request from 10.233.74.0:57458: { contents hidden }
2019/12/16 12:35:02 [2019-12-16T12:35:02Z] Outcoming response to 10.233.74.0:57458 with 200 status code
2019/12/16 12:35:02 [2019-12-16T12:35:02Z] Incoming HTTP/2.0 GET /api/v1/overview/default?filterBy=&itemsPerPage=10&name=&page=1&sortBy=d,creationTimestamp request from 10.233.74.0:57458: {}
2019/12/16 12:35:03 Getting config category
2019/12/16 12:35:03 Getting discovery and load balancing category
2019/12/16 12:35:03 Getting lists of all workloads
2019/12/16 12:35:03 the server could not find the requested resource
2019/12/16 12:35:03 [2019-12-16T12:35:03Z] Outcoming response to 10.233.74.0:57458 with 404 status code
2019/12/16 12:35:03 No metric client provided. Skipping metrics.
2019/12/16 12:35:03 No metric client provided. Skipping metrics.
2019/12/16 12:35:03 No metric client provided. Skipping metrics.
2019/12/16 12:35:03 Getting pod metrics
2019/12/16 12:35:03 No metric client provided. Skipping metrics.
2019/12/16 12:35:03 No metric client provided. Skipping metrics.
2019/12/16 12:35:03 [2019-12-16T12:35:03Z] Incoming HTTP/2.0 GET /api/v1/systembanner request from 10.233.74.0:57458: {}
2019/12/16 12:35:03 [2019-12-16T12:35:03Z] Incoming HTTP/2.0 GET /api/v1/login/status request from 10.233.74.0:57458: {}
2019/12/16 12:35:03 [2019-12-16T12:35:03Z] Incoming HTTP/2.0 GET /api/v1/rbac/status request from 10.233.74.0:57458: {}
2019/12/16 12:35:03 [2019-12-16T12:35:03Z] Outcoming response to 10.233.74.0:57458 with 200 status code
2019/12/16 12:35:03 [2019-12-16T12:35:03Z] Outcoming response to 10.233.74.0:57458 with 200 status code
2019/12/16 12:35:03 [2019-12-16T12:35:03Z] Outcoming response to 10.233.74.0:57458 with 200 status code
2019/12/16 12:35:12 Metric client health check failed: the server could not find the requested resource (get services heapster). Retrying in 30 seconds.
2019/12/16 12:35:42 Metric client health check failed: the server could not find the requested resource (get services heapster). Retrying in 30 seconds.

Я нашел странный обходной путь, чтобы заставить приборную панель работать , но это не применимо для нас в производстве, возможно, кто-то может объяснить это:

  1. Я беру, например, сервисный аккаунт kube-system:default(Примечание: этот НЕ назначен cluster-adminна данный момент
  2. Я получаю его токен и авторизируюсь с этим
  3. Панель инструментов, очевидно, показывает мне «запрещенные всплывающие окна»
  4. Пока я залогинен, я бегу kubectl create clusterrolebinding default-admin --clusterrole cluster-admin --serviceaccount=kube-system:default
  5. Я обновляю вкладку браузера, в которой содержится мой сеанс панели инструментов ... и вуаля, все отображается правильно.

Поэтому я не могу выйти из системы и снова войти в систему, мне всегда приходится удалять clusterrolebinding, входить в систему, а затем снова применять clusterrolebinding.

Похоже, это тесно связано с кластерами, предоставляемыми kubespray, так что кто-нибудь может воспроизвести это с помощью kubespray?

Юрген Цорниг
источник
Не могли бы вы поделиться журналами модуля панели управления Kubernetes и токеном учетной записи, который вы используете для входа в систему?
Умеш Кумхар
делитесь информацией о развертывании и шагах, которые вы пробовали
P Ekambaram

Ответы:

7

Если вы используете сертификат для подключения, ваш сертификат должен быть в системе: группа мастеров. Включите «Тема: O = система: мастера, CN =»

Вы также можете создать токен и затем использовать токен вместо сертификата:

Может быть вероятность того, что ваша роль кластера связана с «учетной записью службы», но не с вашей группой. Вы должны проверить свою группу в файле yaml. У вашей учетной записи службы есть токен доступа, используйте его для аутентификации вместо вашего сертификата.

Используйте это, чтобы создать токен и использовать его.

kubectl describe secret $(kubectl get secret | grep cluster-admin | awk '{print $1}')

лексем:

Обновите kubeconfig, чтобы аутентифицировать себя с использованием этого токена вместо того сертификата, который вы используете в данный момент, и вы должны успешно пройти аутентификацию в качестве этой учетной записи службы кластера-администратора.

Kubernetes RBAC - запрещена попытка предоставления дополнительных привилегий

redhatvicky
источник
Это возвращает мне маркер служебной учетной записи «default» в пространстве имен «default», так как «cluster-admin» не определен. Даже когда я добавляю «--all-namespaces», кажется, что Kubespray не предоставил учетную запись службы кластера-администратора. В целом: я знаю об использовании токенов для аутентификации в качестве конкретной учетной записи службы, связанной с этим токеном. К сожалению, у меня не работает учетная запись службы, даже если я определяю кластерную привязку
Юрген Цорниг
5

Хорошо, похоже, это ошибка, которая выдается в репо Kubespray Github # 5347

Юрген Цорниг
источник