Ich habe gerade kubeadm und kubelet auf v1.8.0 aktualisiert. Installieren Sie das Dashboard nach dem offiziellen document .
$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml
Danach habe ich das Dashboard mit dem Ausführen gestartet
$ kubectl proxy --address="192.168.0.101" -p 8001 --accept-hosts='^*$'
Dann konnte ich glücklicherweise über http://192.168.0.101:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/ auf das Dashboard zugreifen.
Ich wurde zu einer Login-Seite wie dieser weitergeleitet, die ich noch nie zuvor getroffen hatte. Es sieht so aus, als gäbe es zwei Arten der Authentifizierung.
Ich habe versucht, den /etc/kubernetes/admin.conf
als kubeconfig hochzuladen, ist aber fehlgeschlagen. Dann habe ich versucht, das Token zu verwenden, das ich von kubeadm token list
zur Anmeldung erhielt, aber erneut fehlgeschlagen ist.
Die Frage ist, wie ich mich im Dashboard anmelden kann. Es sieht so aus, als hätten sie viele Sicherheitsmechanismen hinzugefügt. Vielen Dank.
Seit Version 1.7 verwendet Dashboard ein sichereres Setup. Es bedeutet, dass durch Standardmäßig hat es minimale Berechtigungen und kann nur über .__ aufgerufen werden. HTTPS. Es wird empfohlen, Access .__ zu lesen. Steuerung Bevor Sie weitere Schritte ausführen.
Ab Version 1.7 unterstützt Dashboard die Benutzerauthentifizierung basierend auf:
- Bearer Token das in Dashboard Login-Ansicht verwendet werden kann.
- Benutzername/Passwort das in Dashboard verwendet werden kann Login-Ansicht .
Hier kann Token
Static Token
, Service Account Token
, OpenID Connect Token
von Kubernetes Authentication sein, nicht jedoch der kubeadm Bootstrap Token
.
Mit kubectl können wir standardmäßig ein Dienstkonto (z. B. Implementierungscontroller) erhalten, das in kubernetes erstellt wird.
$ 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
Benutzer in der kubeconfig-Datei benötigen entweder username & password
oder token
, während admin.conf
nur client-certificate
hat.
$ kubectl config set-credentials cluster-admin --token=bearer_token
Es gibt zwei Möglichkeiten, die Authentifizierung zu umgehen, aber zur Vorsicht verwenden.
$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/alternative/kubernetes-dashboard.yaml
Das Dashboard kann unter http: // localhost: 8001/ui mit kubectl proxy
geladen werden.
$ 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
Anschließend können Sie die Option Skip
auf der Anmeldeseite verwenden, um auf das Dashboard zuzugreifen.
Um das Token in einem einzigen Oneliner zu erhalten:
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | awk '/^deployment-controller-token-/{print $1}') | awk '$1=="token:"{print $2}'
Dies setzt voraus, dass Ihre ~/.kube/config vorhanden und gültig ist. Außerdem gibt kubectl config get-contexts
an, dass Sie den richtigen Kontext (Cluster und Namespace) für das Dashboard verwenden, in dem Sie sich anmelden.
Diese Antwort habe ich aus den Antworten von @ silverfox abgeleitet. Das ist ein sehr informatives Schreiben. Leider kann man nicht sagen, wie man die Informationen tatsächlich in die Praxis umsetzt. Vielleicht habe ich zu lange DevOps gemacht, aber ich denke in Shell. Es ist viel schwieriger für mich, Englisch zu lernen oder zu unterrichten.
Hier ist der Oneliner mit Zeilenumbrüchen und Einrückungen zur besseren Lesbarkeit:
kubectl -n kube-system describe secret $(
kubectl -n kube-system get secret | \
awk '/^deployment-controller-token-/{print $1}'
) | \
awk '$1=="token:"{print $2}'
Es gibt 4 verschiedene Befehle, die in dieser Reihenfolge aufgerufen werden:
deployment-controller-token-
beginnt (der Name des Pods)Wenn Sie dem Dashboard-Dienstkonto keine Administratorberechtigung erteilen möchten, können Sie ein Cluster-Admin-Dienstkonto erstellen.
$ kubectl create serviceaccount cluster-admin-dashboard-sa
$ kubectl create clusterrolebinding cluster-admin-dashboard-sa \
--clusterrole=cluster-admin \
--serviceaccount=default:cluster-admin-dashboard-sa
Anschließend können Sie das Token des gerade erstellten Cluster-Admin-Dienstkontos verwenden.
$ 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
Ich habe es von giantswarm guide zitiert - https://docs.giantswarm.io/guides/install-kubernetes-dashboard/
Kombination von zwei Antworten: 49992698 und 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}')
Alle vorherigen Antworten sind gut für mich. Eine direkte Antwort auf meiner Seite würde jedoch von https://github.com/kubernetes/dashboard/wiki/Creating-sample-user#bearer-token kommen. Verwenden Sie einfach kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}')
. Sie haben viele Werte für einige Schlüssel (Name
, Namespace
, Labels
, ..., token
). Die wichtigste ist die token
, die Ihrem Namen entspricht. Kopieren Sie das Token und fügen Sie es in das Tokenfeld ein. Hoffe das hilft.
Ein selbsterklärender einfacher Einzeiler zum Extrahieren des Tokens für die Anmeldung am kubernetes Dashboard.
kubectl describe secret -n kube-system | grep deployment -A 12
Kopieren Sie das Token und fügen Sie es in das Kubernetes-Dashboard unter Token-Anmeldeoption ein. Sie können dann das Kubernetes-Dashboard verwenden
Das Überspringen der Anmeldung wurde aus Sicherheitsgründen standardmäßig deaktiviert. https://github.com/kubernetes/dashboard/issues/2672
fügen Sie in Ihrem Dashboard yaml dieses Argument hinzu
- --enable-skip-login
um es zurückzubekommen
hinzufügen
type: NodePort for the Service
Führen Sie dann diesen Befehl aus:
kubectl apply -f kubernetes-dashboard.yaml
Finden Sie den freigelegten Port mit dem Befehl:
kubectl get services -n kube-system
Sie sollten das Dashboard unter http: // hostname: exposedport/ Ohne Authentifizierung abrufen können