本文主要介绍如何在k8s v1.9.0上安装dashboard v1.8.2. 安装dashboard的原因就不在此赘述,k8s如何安装也不在本文讨论范围。
1, 查看当前k8s版本,以确定我们使用dashboard的版本。
root@ubuntu1:/home/yangqian# kubectl version
Client Version: version.Info{Major:"1", Minor:"9", GitVersion:"v1.9.0", GitCommit:"925c127ec6b946659ad0fd596fa959be43f0cc05", GitTreeState:"clean", BuildDate:"2017-12-15T21:07:38Z", GoVersion:"go1.9.2", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"9", GitVersion:"v1.9.0", GitCommit:"925c127ec6b946659ad0fd596fa959be43f0cc05", GitTreeState:"clean", BuildDate:"2017-12-15T20:55:30Z", GoVersion:"go1.9.2", Compiler:"gc", Platform:"linux/amd64"}
根据dashboard的release信息, 我们决定使用dashboard v1.8.2
dashboard project在https://github.com/kubernetes/dashboard/releases
2,通过yaml文件安装dashboard, dashboard自身也是k8s的服务,这个yaml文件创建了deployment、service等。 注意:默认不用修改kubernetes-dashboard.yaml文件(我是在master机上下载该文件并apply的)
3, 配置访问权限, k8s 从1.6版本开始使用RBAC(有关基于角色的访问控制,请参考k8s文档), 所以我们需要给dashboard配置一个serviceAccount, 并给该serviceAccount附上权限(也就是和role进行绑定,因为我们是集群,所以执行的是clusterRoleBinding)。
这里我们演示两个帐号,一个是默认就有的default帐号,一个是我们创建的admin-user。其中使用default帐号后我们可以登录,但是没有权限查看cluster中的内容, 而使用admin-user就可以。这是因为我们给admin-user进行授权,就是创建了clusterRoleBinding, 而default没有进行clusterRoleBinding。
创建serviceAccount admin-user(用户名 admin-user可以修改)
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kube-system
进行权限绑定ClusterRoleBinding ,也就是授予权限, 可以看到我们把k8s内置的cluster-admin role赋给了admin-user,这个serviceAccount。
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: admin-user
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: admin-user
namespace: kube-system
获取serviceAccount admin-user的token
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}')
root@ubuntu1:/opt/yamls/dashboardyaml# kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}')
Name: admin-user-token-b7pgn
Namespace: kube-system
Labels:
Annotations: kubernetes.io/service-account.name=admin-user
kubernetes.io/service-account.uid=fab9480e-0c7c-11e8-9fc4-000c29f3dfb1
Type: kubernetes.io/service-account-token
Data
====
token: eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi11c2VyLXRva2VuLWI3cGduIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImFkbWluLXVzZXIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiJmYWI5NDgwZS0wYzdjLTExZTgtOWZjNC0wMDBjMjlmM2RmYjEiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1zeXN0ZW06YWRtaW4tdXNlciJ9.TlPUHtsVmBTkJY8pIp_gNsuHpJSTPvh5FqDHmsNurDIfDEJmdgL9FqvWrqOvliFmt1rd2_sHOwXU_J7wv-9tcaZhZ6bdMHyliONZ_bHhOQauaz9wWgO5ikslReDShB5KvAxpri1MjMwWZHmiGH58zWQIqJhGts3tfPzaMIIWClCKQeggWfFN0LblzmHbCubTDYalkbVMCAY2q66dd1_bY7S2XfqYrggHTb5p8V3Wzz-X77gM9i1WiIwdhaSH8g37rnj1PxuAt1_NweswZ8DU2v0oppTAdXEWT4GGzhBWbxJ73pR9FGelARucgFtKVxVwVflNnMuXCjYxR1MQQoRWMQ
ca.crt: 1025 bytes
namespace: 11 bytes
其中的token部分就是dashboard用来访问dashboard。
4,登录dashboard,查看集群中内容
在enter token中输入token内容,点击sign in.
查看其他内容
参考
https://github.com/kubernetes/dashboard/wiki/Access-control
https://github.com/kubernetes/dashboard/releases
https://github.com/kubernetes/dashboard/wiki/Creating-sample-user