k8s dashboard token 生成/获取

创建示例用户

在本指南中,我们将了解如何使用 Kubernetes 的服务帐户机制创建新用户、授予该用户管理员权限并使用与该用户绑定的承载令牌登录仪表板。

对于以下每个和的代码片段ServiceAccountClusterRoleBinding您都应该将它们复制到新的清单文件(如)中,dashboard-adminuser.yaml并使用kubectl apply -f dashboard-adminuser.yaml来创建它们。

创建服务帐号

我们首先admin-user在命名空间中创建具有名称的服务帐户。kubernetes-dashboard

yaml 复制代码
apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: kubernetes-dashboard

创建 ClusterRoleBinding

kops在大多数情况下,使用kubeadm或任何其他流行工具配置集群后,ClusterRole cluster-admin集群中已经存在。我们可以使用它并ClusterRoleBinding为我们的创建一个ServiceAccount。如果它不存在,那么您需要先创建此角色并手动授予所需的权限。

yaml 复制代码
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: admin-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: admin-user
  namespace: kubernetes-dashboard

获取 ServiceAccount 的 Bearer Token

现在我们需要找到可以用来登录的令牌。执行以下命令:

shell 复制代码
kubectl -n kubernetes-dashboard create token admin-user

它应该打印类似这样的内容:

复制代码
eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi11c2VyLXRva2VuLXY1N253Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImFkbWluLXVzZXIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiIwMzAzMjQzYy00MDQwLTRhNTgtOGE0Ny04NDllZTliYTc5YzEiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZXJuZXRlcy1kYXNoYm9hcmQ6YWRtaW4tdXNlciJ9.Z2JrQlitASVwWbc-s6deLRFVk5DWD3P_vjUFXsqVSY10pbjFLG4njoZwh8p3tLxnX_VBsr7_6bwxhWSYChp9hwxznemD5x5HLtjb16kI9Z7yFWLtohzkTwuFbqmQaMoget_nYcQBUC5fDmBHRfFvNKePh_vSSb2h_aYXa8GV5AcfPQpY7r461itme1EXHQJqv-SN-zUnguDguCTjD80pFZ_CmnSE1z9QdMHPB8hoB4V68gtswR1VLa6mSYdgPwCHauuOobojALSaMc3RH7MmFUumAgguhqAkX3Omqd3rJbYOMRuMjhANqd08piDC3aIabINX6gP5-Tuuw2svnV6NYQ

查看Kubernetes 文档有关 ServiceAccount 的 API 令牌的更多信息。

获取 ServiceAccount 的长期 Bearer Token

我们还可以创建一个与服务账户绑定的带有secret的token,该token会保存在Secret中:

yaml 复制代码
apiVersion: v1
kind: Secret
metadata:
  name: admin-user
  namespace: kubernetes-dashboard
  annotations:
    kubernetes.io/service-account.name: "admin-user"   
type: kubernetes.io/service-account-token

Secret创建完成后,我们可以执行以下命令来获取Secret中保存的Token:

shell 复制代码
kubectl get secret admin-user -n kubernetes-dashboard -o jsonpath={".data.token"} | base64 -d

查看Kubernetes 文档有关 ServiceAccount 的长效 API 令牌的更多信息。

访问仪表板

现在复制令牌并将其粘贴到Enter token登录屏幕上的字段中。


单击Sign in按钮即可。您现在以管理员身份登录。


清理和后续步骤

删除管理员ServiceAccountClusterRoleBinding

shell 复制代码
kubectl -n kubernetes-dashboard delete serviceaccount admin-user
kubectl -n kubernetes-dashboard delete clusterrolebinding admin-user

为了了解有关如何在 Kubernetes 中授予/拒绝权限的更多信息,请阅读官方验证&授权文档。

https://github.com/kubernetes/dashboard/blob/master/docs/user/access-control/creating-sample-user.md

相关推荐
不爱笑的良田42 分钟前
从零开始的云原生之旅(一):把 Go 应用塞进 Docker
docker·云原生·golang
不爱笑的良田1 小时前
从零开始的云原生之旅(四):K8s 工作负载完全指南
云原生·容器·kubernetes
java_logo3 小时前
Docker 部署 Rocky Linux 全流程教程
linux·运维·服务器·docker·容器·1024程序员节
ydswin3 小时前
K8s Service会话保持导致Pod流量不均:故障排查与深度解析
kubernetes
ghie90903 小时前
利用 Docker 和 Kubernetes 实现微服务部署
docker·微服务·kubernetes
阿里云云原生5 小时前
为什么别人用 DevPod 秒启 DeepSeek-OCR,你还在装环境?
云原生
Gss7775 小时前
Kubernetes 实战入门核心内容总结
容器·kubernetes
不是笨小孩i6 小时前
从局域网工具到全球传输:FastSend的无服务器共享革命
云原生·serverless
scriptsboy7 小时前
可用 Docker (DockerHub) 国内镜像源加速列表 - 长期维护(截至 2025 年 06 月 15 日)
运维·docker·容器
阿里云云原生7 小时前
清理祖传 AK 不怕炸锅:基于 UModel 的云监控 2.0 身份凭证观测实践
云原生