kubernetes dashboard安装

  本文主要介绍如何在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:       <none>
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.
  查看其他内容
这里写图片描述

  查看admin-user的token
这里写图片描述

  default的token可以登录,但是不能查看其他内容
这里写图片描述

参考
https://github.com/kubernetes/dashboard/wiki/Access-control
https://github.com/kubernetes/dashboard/releases
https://github.com/kubernetes/dashboard/wiki/Creating-sample-user

猜你喜欢

转载自blog.csdn.net/russle/article/details/79288092