我刚刚将kubeadm和kubelet升级到v1.8.0 . 并按照官方document安装仪表板 .
$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml
之后,我通过运行启动了仪表板
$ kubectl proxy --address="192.168.0.101" -p 8001 --accept-hosts='^*$'
幸运的是,我能够通过http://192.168.0.101:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/访问仪表板
我被重定向到这样的登录页面,这是我以前从未见过的 .
看起来有两种身份验证方式 .
我试图上传 /etc/kubernetes/admin.conf
作为kubeconfig但是失败了 . 然后我尝试使用从 kubeadm token list
获得的令牌登录但又失败了 .
问题是我如何在仪表板中登录 . 看起来他们添加了许多安全机制 . 谢谢 .
6 回答
令牌
这里
Token
可以是Static Token
,Service Account Token
,OpenID Connect Token
来自Kubernetes Authenticating,但不是kubeadmBootstrap Token
.使用kubectl,我们可以获得默认情况下在kubernetes中创建的服务帐户(例如部署控制器) .
Kubeconfig
kubeconfig文件中的用户需要
username & password
或token
,而admin.conf
只有client-certificate
.替代方案(不建议用于 生产环境 )
以下是绕过身份验证的两种方法,但请谨慎使用 .
使用HTTP部署仪表板
可以使用
kubectl proxy
在http://localhost:8001/ui加载仪表板 .授予仪表板服务帐户的管理员权限
之后,您可以在登录页面上使用
Skip
选项来访问仪表板 .TL; DR
要在单个oneliner中获取令牌:
这假设您的〜/ .kube / config存在且有效 . 而且
kubectl config get-contexts
表示您正在使用正在登录的仪表板的正确上下文(集群和命名空间) .解释
我从@ silverfox的回答中得到了这个答案 . 这是一篇非常翔实的文章 . 不幸的是,它没有告诉你如何将信息付诸实践 . 也许我一直在做DevOps太长时间,但我想在shell中 . 我用英语学习或教学要困难得多 .
这是oneliner带有换行符和缩进的可读性:
有4个不同的命令,它们按此顺序调用:
第2行 - 这是来自@ silverfox的 Token 部分的第一个命令 .
第3行 - 仅打印以
deployment-controller-token-
开头的行的第一个字段(即窗格名称)第1行 - 这是来自@ silverfox的 Token 部分的第二个命令 .
第5行 - 仅打印第一个字段为"token:"的第二个字段
如果您不想向仪表板服务帐户授予管理员权限,则可以创建群集管理服务帐户 .
然后,您可以使用刚刚创建的集群管理服务帐户的令牌 .
我从giantswarm指南中引用它 - https://docs.giantswarm.io/guides/install-kubernetes-dashboard/
结合两个答案:49992698和47761914:
所有以前的答案对我都很好 . 但我身边的直接回答将来自https://github.com/kubernetes/dashboard/wiki/Creating-sample-user#bearer-token . 只需使用
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}')
. 对于某些键,您将拥有许多值(Name
,Namespace
,Labels
,...,token
) . 最重要的是与你的名字相对应的token
. 复制该令牌并将其粘贴到令牌框中 . 希望这可以帮助 .下载https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/alternative/kubernetes-dashboard.yaml
加
然后运行此命令:
使用以下命令查找公开的端口:
您应该能够在http://hostname:exposedport/获取仪表板而无需身份验证