Я успешно развернул 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.
Я нашел странный обходной путь, чтобы заставить приборную панель работать , но это не применимо для нас в производстве, возможно, кто-то может объяснить это:
- Я беру, например, сервисный аккаунт
kube-system:default
(Примечание: этот НЕ назначенcluster-admin
на данный момент - Я получаю его токен и авторизируюсь с этим
- Панель инструментов, очевидно, показывает мне «запрещенные всплывающие окна»
- Пока я залогинен, я бегу
kubectl create clusterrolebinding default-admin --clusterrole cluster-admin --serviceaccount=kube-system:default
- Я обновляю вкладку браузера, в которой содержится мой сеанс панели инструментов ... и вуаля, все отображается правильно.
Поэтому я не могу выйти из системы и снова войти в систему, мне всегда приходится удалять clusterrolebinding, входить в систему, а затем снова применять clusterrolebinding.
Похоже, это тесно связано с кластерами, предоставляемыми kubespray, так что кто-нибудь может воспроизвести это с помощью kubespray?
источник
Ответы:
Если вы используете сертификат для подключения, ваш сертификат должен быть в системе: группа мастеров. Включите «Тема: O = система: мастера, CN =»
Вы также можете создать токен и затем использовать токен вместо сертификата:
Может быть вероятность того, что ваша роль кластера связана с «учетной записью службы», но не с вашей группой. Вы должны проверить свою группу в файле yaml. У вашей учетной записи службы есть токен доступа, используйте его для аутентификации вместо вашего сертификата.
Используйте это, чтобы создать токен и использовать его.
лексем:
Обновите kubeconfig, чтобы аутентифицировать себя с использованием этого токена вместо того сертификата, который вы используете в данный момент, и вы должны успешно пройти аутентификацию в качестве этой учетной записи службы кластера-администратора.
Kubernetes RBAC - запрещена попытка предоставления дополнительных привилегий
источник
Хорошо, похоже, это ошибка, которая выдается в репо Kubespray Github # 5347
источник