【问题标题】:unable to access kubernetes dashboard via token无法通过令牌访问 Kubernetes 仪表板
【发布时间】:2018-06-12 19:30:27
【问题描述】:
  1. 我已经使用 kubeadm v1.8.5 设置了一个 kubernetes
  2. 使用以下方法设置仪表板:
wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.8.0/src/deploy/recommended/kubernetes-dashboard.yaml`

kubectl create -f kubernetes-dashboard.yaml

kubectl create -f kubernetes-dashboard-admin.rbac.yaml
  1. 然后设置 kubectl 代理,建议使用 http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/

  2. 当我尝试使用 kubernetes-dashboard-admin 令牌登录时。使用以下命令收到令牌:

    kubectl -n kube-system get secret | grep -i dashboard-admin | awk '{print $1}' | xargs -I {} 
    kubectl -n kube-system describe secret {}

我的问题来了:我无法通过令牌访问仪表板,当我粘贴令牌并单击“登录”按钮时,什么也没发生。而且我的日志中什么也没有[使用 tail -f /var/log/messages 和 journalctl -xeu kubelet]。我是k8s的新手,谁能告诉我日志在哪里?

这是我的 k8s 集群信息:

[root@k8s-1 pki]# kubectl cluster-info

Kubernetes master is running at https://172.16.1.15:6443
KubeDNS is running at https://172.16.1.15:6443/api/v1/namespaces/kube-system/services/kube-dns/proxy
kubernetes-dashboard is running at https://172.16.1.15:6443/api/v1/namespaces/kube-system/services/kubernetes-dashboard/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

[root@k8s-1 pki]# kubectl get nodes

NAME      STATUS    ROLES     AGE       VERSION
k8s-1     Ready     master    4d        v1.8.5
k8s-2     Ready     <none>    4d        v1.8.5
k8s-3     Ready     <none>    4d        v1.8.5

[root@k8s-1 pki]# kubectl get pods --all-namespaces

NAMESPACE     NAME                                    READY     STATUS    RESTARTS   AGE
kube-system   etcd-k8s-1                              1/1       Running   2          4d
kube-system   kube-apiserver-k8s-1                    1/1       Running   2          4d
kube-system   kube-controller-manager-k8s-1           1/1       Running   1          4d
kube-system   kube-dns-545bc4bfd4-94vxx               3/3       Running   3          4d
kube-system   kube-flannel-ds-97frd                   1/1       Running   2          4d
kube-system   kube-flannel-ds-bl9tp                   1/1       Running   2          4d
kube-system   kube-flannel-ds-bn9hp                   1/1       Running   1          4d
kube-system   kube-proxy-9ncdm                        1/1       Running   0          4d
kube-system   kube-proxy-qjm9k                        1/1       Running   1          4d
kube-system   kube-proxy-rknz4                        1/1       Running   0          4d
kube-system   kube-scheduler-k8s-1                    1/1       Running   2          4d
kube-system   kubernetes-dashboard-7486b894c6-tszq9   1/1       Running   0          2h

kubernetes-dashboard-admin-rbac.yaml 是:

[root@k8s-1 仪表板]# cat kubernetes-dashboard-admin.rbac.yaml

---
apiVersion: v1
kind: ServiceAccount
metadata:
  labels:
    k8s-app: kubernetes-dashboard
    kubernetes.io/cluster-service: "true"
    addonmanager.kubernetes.io/mode: Reconcile
  name: kubernetes-dashboard-admin
  namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  name: kubernetes-dashboard-admin
  annotations:
    rbac.authorization.kubernetes.io/autoupdate: "true"
  labels:
    k8s-app: kubernetes-dashboard
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: kubernetes-dashboard-admin
  namespace: kube-system

有什么建议吗?谢谢!!!

【问题讨论】:

  • 查看日志... "kubectl logs -h" ,您将找到有关如何使用它的帮助

标签: dashboard kubeadm kubernetes


【解决方案1】:

尝试使用 https 连接,我有同样的问题,这对我有用

Kubernetes 手册:

注意:仪表板不应使用 kubectl 代理公开 命令,因为它只允许 HTTP 连接。对于域以外的 localhost 和 127.0.0.1 将无法登录。没有 单击登录页面上的登录按钮后将发生。登录是 仅在通过 HTTPS 访问仪表板或域为 本地主机或 127.0.0.1。这样做是为了安全 原因。按预期关闭。

【讨论】:

    【解决方案2】:

    试试这个令牌(输出):

     kubectl -n kube-system get secret |grep  kubernetes-dashboard-token |cut -f1 -d ' ' |  xargs kubectl -n kube-system describe  secret
    

    如果不起作用,请使用此令牌(输出)尝试/测试登录:

    kubectl -n kube-system get secret |grep  namespace-controller-token  |cut -f1 -d ' ' |  xargs kubectl -n kube-system describe  secret
    

    祝你好运..

    【讨论】:

      【解决方案3】:

      您应该先创建一个管理员用户,然后将 cluster-admin clusterrolebinding 添加到其中:

      使用这些文件 admin-user.yamladmin-user-clusterrolebinding.yaml 创建具有 cluster-admin clusterrolebinding 的管理员用户:

      [root@k8s-1 kubernetes-via-kubeadm]# kubectl create -f admin-user.yaml
      serviceaccount "admin-user" created
      
      [root@k8s-1 kubernetes-via-kubeadm]# kubectl create -f admin-user-clusterrolebinding.yaml 
      clusterrolebinding "admin-user" created
      

      获取此管理员用户的令牌:

      [root@k8s-1 kubernetes-via-kubeadm]# kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}') | grep ^token: | sed 's/token:[ ]*/Token:\n/'
      Token:
      eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi11c2VyLXRva2VuLW1oNzIyIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImFkbWluLXVzZXIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiIwNWM0ZDZmZC0yZjYyLTExZTgtYTMxNi1jMDNmZDU2MmJiNzciLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1zeXN0ZW06YWRtaW4tdXNlciJ9.butKxegADx3JQvKpn9Prf7RL_SoxaEyi_scYOvXurm4BAwEj8zfC9a7djqQ9mBtd5cQHlljvMb-3qFc6UPOzAwR8fc5khk-nAkH-5XeahpT8WsyxMcKxqLuyAg8gh4ZtMKvBPk9kOWDtyRBzAeGkisbLxr43ecKO71F5G8D7HR2UGSm-x4Pvhq0uqj8GyIcHw902Ti92BPuBRf-SyTl8uDCQJSDkS5Tru5w0p82borNuVXd1mmDwuI87ApQrqXTY9rbJ61m8iTr0kKJBqw5bHAUAhxwAVtVEKQNNKT6cxWp1FlhHbNkM9bhcj1qj8bN1QCMjPWlWKj7NkPbbBAJthQ
      

      您可以使用令牌登录到您的 kubernetes-dashboard。

      【讨论】:

      【解决方案4】:

      我最近在将 k8s 版本升级到 1.16 后遇到了这个问题。通常,我无需任何登录即可在本地访问仪表板,但升级后,它首先开始打开登录页面,即使我使用了有效的令牌,它也没有让我进入仪表板。 (没有反应,页面卡住了)

      为了解决这个问题,我首先删除了仪表板相关资源。

      kubectl delete clusterrolebinding kubernetes-dashboard
      

      然后我使用以下命令部署了最新的仪表板版本。

      kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml
      

      在上述步骤之后,我再次运行代理命令,这一次,通过输入令牌,它进入了仪表板页面。

      编辑:如果您收到与集群角色相关的错误并且无法打开任何实际内容,您可能需要运行以下命令:

      kubectl delete clusterrolebinding kubernetes-dashboard
      kubectl create clusterrolebinding kubernetes-dashboard --clusterrole=cluster-admin --serviceaccount=kube-system:kubernetes-dashboard --user=clusterUser
      

      【讨论】:

        【解决方案5】:

        运行以下两条命令:

        sym@symserver:~/Downloads$ token=$(microk8s.kubectl -n kube-system get secret | grep default-token | cut -d " " -f1)

        sym@symserver:~/Downloads$ microk8s.kubectl -n kube-system describe secret $token

        以上命令将生成用于仪表板访问的令牌

        【讨论】:

          【解决方案6】:

          您应该能够从分配的集群 IP 地址访问和登录仪表板。要获取集群 IP,只需执行

          kubectl get svc -n kube-system kubernetes-dashboard
          

          并将您的浏览器指向此地址 (https)。

          【讨论】:

          • 在撰写本文时,它在最新版本中运行良好。从那以后就没有检查了。关于你认为有什么问题的详细信息比投反对票更有帮助。
          【解决方案7】:

          来自我的other answer

          获取服务令牌

          $ kubectl -o json get secret k8s-dashboard-sa-token-XXXXX | jq -r '.data.token' | base64 -d
          eyJhbGci    ... sjcuNA8w
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-09-14
            • 2016-12-08
            • 2020-03-19
            • 2022-07-20
            • 2019-01-26
            • 2019-02-09
            • 2020-06-02
            相关资源
            最近更新 更多