stop run logs delete kubernetes dashboard

run - kubernetes dashboard



¿Cómo iniciar sesión en el panel de control de Kubernetes? (7)

Desde la versión 1.7, Dashboard utiliza una configuración más segura. Significa que, por defecto, tiene un conjunto mínimo de privilegios y solo se puede acceder a través de HTTPS. Se recomienda leer la guía de control de acceso antes de realizar más pasos.

A partir de la versión 1.7, Dashboard admite la autenticación de usuarios basada en:

--- document

Simbólico

Aquí el Token puede ser Static Token , Static Token Service Account Token , Service Account Token OpenID Connect Token de Kubernetes Authenticating , pero no el Bootstrap Token kubeadm.

Con kubectl, podemos obtener una cuenta de servicio (por ejemplo, controlador de implementación) creada en kubernetes de forma predeterminada.

$ kubectl -n kube-system get secret # All secrets with type ''kubernetes.io/service-account-token'' will allow to log in. # Note that they have different privileges. NAME TYPE DATA AGE deployment-controller-token-frsqj kubernetes.io/service-account-token 3 22h $ kubectl -n kube-system describe secret deployment-controller-token-frsqj Name: deployment-controller-token-frsqj Namespace: kube-system Labels: <none> Annotations: kubernetes.io/service-account.name=deployment-controller kubernetes.io/service-account.uid=64735958-ae9f-11e7-90d5-02420ac00002 Type: kubernetes.io/service-account-token Data ==== ca.crt: 1025 bytes namespace: 11 bytes token: eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkZXBsb3ltZW50LWNvbnRyb2xsZXItdG9rZW4tZnJzcWoiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiZGVwbG95bWVudC1jb250cm9sbGVyIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiNjQ3MzU5NTgtYWU5Zi0xMWU3LTkwZDUtMDI0MjBhYzAwMDAyIiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmUtc3lzdGVtOmRlcGxveW1lbnQtY29udHJvbGxlciJ9.OqFc4CE1Kh6T3BTCR4XxDZR8gaF1MvH4M3ZHZeCGfO-sw-D0gp826vGPHr_0M66SkGaOmlsVHmP7zmTi-SJ3NCdVO5viHaVUwPJ62hx88_JPmSfD0KJJh6G5QokKfiO0WlGN7L1GgiZj18zgXVYaJShlBSz5qGRuGf0s1jy9KOBt9slAN5xQ9_b88amym2GIXoFyBsqymt5H-iMQaGP35tbRpewKKtly9LzIdrO23bDiZ1voc5QZeAZIWrizzjPY5HPM1qOqacaY9DcGc7akh98eBJG_4vZqH2gKy76fMf0yInFTeNKr45_6fWt8gRM77DQmPwb3hbrjWXe1VvXX_g

Kubeconfig

El usuario en el archivo kubeconfig necesita username & password o token , mientras que admin.conf solo tiene client-certificate .

$ kubectl config set-credentials cluster-admin --token=bearer_token

Alternativa (no recomendado para producción)

Aquí hay dos formas de omitir la autenticación, pero úsela con precaución.

Implemente el tablero con HTTP

$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/alternative/kubernetes-dashboard.yaml

El tablero se puede cargar en http://localhost:8001/ui con el kubectl proxy .

Conceder privilegios de administrador a la cuenta de servicio del tablero

$ cat <<EOF | kubectl create -f - apiVersion: rbac.authorization.k8s.io/v1beta1 kind: ClusterRoleBinding metadata: name: kubernetes-dashboard labels: k8s-app: kubernetes-dashboard roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: kubernetes-dashboard namespace: kube-system EOF

Luego puede usar la opción Skip en la página de inicio de sesión para acceder al Panel.

Si está utilizando la versión de tablero v1.10.1 o posterior, también debe agregar --enable-skip-login a los argumentos de la línea de comandos de la implementación. Puede hacerlo agregándolo a los kubectl edit deployment/kubernetes-dashboard --namespace=kube-system en kubectl edit deployment/kubernetes-dashboard --namespace=kube-system .

Ejemplo:

containers: - args: - --auto-generate-certificates - --enable-skip-login # <-- add this line image: k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1

Acabo de actualizar kubeadm y kubelet a v1.8.0. E instale el tablero siguiendo el document oficial.

$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml

Después de eso, comencé el tablero ejecutando

$ kubectl proxy --address="192.168.0.101" -p 8001 --accept-hosts=''^*$''

Entonces, afortunadamente, pude acceder al tablero a través de http://192.168.0.101:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/

Fui redirigido a una página de inicio de sesión como esta que nunca había conocido antes. Parece que hay dos formas de autenticación.

Traté de cargar el /etc/kubernetes/admin.conf como kubeconfig pero fallé. Luego intenté usar el token que obtuve de la kubeadm token list para kubeadm token list sesión, pero fallé nuevamente.

La pregunta es cómo puedo iniciar sesión en el tablero. Parece que agregaron muchos mecanismos de seguridad que antes. Gracias.


TL; DR

Para obtener el token en una sola línea:

kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | awk ''/^deployment-controller-token-/{print $1}'') | awk ''$1=="token:"{print $2}''

Esto supone que su ~ / .kube / config está presente y es válido. Y también que kubectl config get-contexts indica que está utilizando el contexto correcto (clúster y espacio de nombres) para el tablero en el que está iniciando sesión.

Explicación

Derivé esta respuesta de lo que aprendí de la respuesta de @ silverfox. Esa es una redacción muy informativa. Desafortunadamente no llega a decirle cómo poner en práctica la información. Tal vez he estado haciendo DevOps demasiado tiempo, pero creo que en shell. Es mucho más difícil para mí aprender o enseñar en inglés.

Aquí está ese línea con saltos de línea y sangría para facilitar la lectura:

kubectl -n kube-system describe secret $( kubectl -n kube-system get secret | / awk ''/^deployment-controller-token-/{print $1}'' ) | / awk ''$1=="token:"{print $2}''

Hay 4 comandos distintos y se llaman en este orden:

  • Línea 2: este es el primer comando de la sección Token de @ silverfox.
  • Línea 3: imprima solo el primer campo de la línea que comienza con deployment-controller-token- (que es el nombre del pod)
  • Línea 1: este es el segundo comando de la sección Token de @ silverfox.
  • Línea 5: imprima solo el segundo campo de la línea cuyo primer campo es "token:"

Combinando dos respuestas: 49992698 y 47761914 :

# Create service account kubectl create serviceaccount cluster-admin-dashboard-sa # Bind ClusterAdmin role to the service account kubectl create clusterrolebinding cluster-admin-dashboard-sa / --clusterrole=cluster-admin / --serviceaccount=default:cluster-admin-dashboard-sa # Parse the token TOKEN=$(kubectl describe secret $(kubectl -n kube-system get secret | awk ''/^cluster-admin-dashboard-sa-token-/{print $1}'') | awk ''$1=="token:"{print $2}'')




Si no desea otorgar permiso de administrador a la cuenta de servicio del tablero, puede crear una cuenta de servicio de administrador de clúster.

$ kubectl create serviceaccount cluster-admin-dashboard-sa $ kubectl create clusterrolebinding cluster-admin-dashboard-sa / --clusterrole=cluster-admin / --serviceaccount=default:cluster-admin-dashboard-sa

Y luego, puede usar el token de la cuenta de servicio de administración de clúster recién creada.

$ kubectl get secret | grep cluster-admin-dashboard-sa cluster-admin-dashboard-sa-token-6xm8l kubernetes.io/service-account-token 3 18m $ kubectl describe secret cluster-admin-dashboard-sa-token-6xm8l

Lo cité de la guía giantswarm: https://docs.giantswarm.io/guides/install-kubernetes-dashboard/


Todas las respuestas anteriores son buenas para mí. Pero una respuesta directa de mi parte vendría de https://github.com/kubernetes/dashboard/wiki/Creating-sample-user#bearer-token . Simplemente use kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk ''{print $1}'') . Tendrá muchos valores para algunas claves ( Name , Namespace , Labels , ..., token ). Lo más importante es el token que corresponde a tu nombre. copie ese token y péguelo en el cuadro del token. Espero que esto ayude.