He implementado con éxito Kubernetes a través de Kubespray y todo parece funcionar bien. Puedo acceder al clúster a través de kubectl y enumerar nodos, pods, servicios, secretos, etc. También es posible aplicar nuevos recursos y el punto final del tablero me da acceso a la página de inicio del tablero.
He iniciado sesión con tokens de diferentes cuentas de servicio (por defecto, kubernetes-dashboard, kubernetes-admin, ...) ... con cada inicio de sesión obtengo las mismas ventanas emergentes como se describe en el panel de control de kubespray, por ejemplo, ventanas emergentes prohibidas .
Así que apliqué el clusterrolebinding para la cuenta de servicio predeterminada como se describe. Cuando inicio sesión ahora con el token de cuenta predeterminado, solo obtengo un
Unknown Server Error (404)
the server could not find the requested resource
Redirecting to previous state in 3 seconds...
cuadro que me redirige a la página de inicio de sesión después. Es el mismo comportamiento si me conecto a Dashboard a través de kubectl proxy
. El acceso es HTTPS sobre una IP de clúster público y también HTTP sobre proxy
Estoy usando Kubernetes 1.16.2 y el último Kubespray master commit 18d19d9e
EDITAR: Destruí y reaprovisioné el clúster para obtener una nueva instancia aprovisionada por Kubespray para hacer que todos los pasos sean deterministas, agregando más información ...
kubectl -n kube-system logs --follow kubernetes-dashboard-556b9ff8f8-jbmgg --
durante un intento de inicio de sesión me da
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.
Encontré una solución alternativa extraña para que el tablero funcione , pero esto no es usable para nosotros en producción, quizás alguien pueda explicar esto:
- Tomo, por ejemplo, la cuenta de servicio
kube-system:default
(Nota: esta NO está asignadacluster-admin
en este momento - Recibo su token e inicio sesión con eso
- Dashboard obviamente me muestra las "ventanas emergentes prohibidas"
- Mientras sigo conectado, ejecuto
kubectl create clusterrolebinding default-admin --clusterrole cluster-admin --serviceaccount=kube-system:default
- Actualizo la pestaña del navegador que contiene mi sesión de tablero ... y listo, todo se muestra correctamente.
Por lo tanto, no puedo cerrar sesión y volver a iniciar sesión, siempre tengo que eliminar el clusterrolebinding, iniciar sesión y luego aplicar clusterrolebinding nuevamente.
Esto parece estar fuertemente relacionado con los clústeres aprovisionados de kubespray, por lo que ¿alguien puede reproducir esto con kubespray?
fuente
Respuestas:
Si está utilizando un certificado para conectarse, su certificado debe estar en el sistema: grupo de maestros Así que incluya el "Asunto: O = sistema: maestros, CN ="
También puede crear un token y luego usar el token en lugar del certificado:
Es posible que su rol de clúster esté vinculado a "Cuenta de servicio" pero no a su grupo. Debe verificar su grupo en el archivo yaml. Su cuenta de servicio tiene un token de acceso, utilícelo para autenticar en lugar de su certificado.
Use esto para crear un token y úselo.
simbólico:
Actualice kubeconfig para autenticarse utilizando ese token, en lugar del certificado que está utilizando actualmente, y debería autenticarse correctamente como esa cuenta de servicio de administrador de clúster.
Kubernetes RBAC - intento prohibido de otorgar privilegios adicionales
fuente
Muy bien, esto parece ser un error que se emite en el número de repositorio Kubespray Github # 5347
fuente