k8s的webUI管理界面能够更好更直观更便捷的让咱们去管理咱们的k8s集群。html
咱们知道,因为某些缘由咱们没法直接拉取dashboard的镜像,可是国内有些人已经将镜像下载到dockerhub中能够给咱们使用git
1 wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
1 vim kubernetes-dashboard.yaml
1 kubectl apply -f kubernetes-dashboard.yaml
此时会建立不少资源,其中service是访问时的代理,访问service就能够访问到dashboard的webUI,可是默认生成的service访问类型是ClusterIP,因此集群外部不能访问到。github
根据官方文档,目前访问Dashboard有四种方式:NodePort、API Server、kubectl proxy、Ingressweb
为了方便,咱们使用NodePortdocker
1 kubectl edit svc kubernetes-dashboard -n kube-system
此时就能够用浏览器访问集群中任意一节点的30443端口,注意使用https://方式访问。可是会有警告,点击高级接受风险继续json
能够看到有两种登陆方式:kubeconfig文件、token令牌。vim
要想登陆,得先有帐号浏览器
k8s集群中,帐号分为两种:UserAccount(现实中的人)、ServiceAccount(集群内的客户端)安全
因为dashboard在集群中是以Pod方式运行提供的服务,因此要使用ServiceAccount访问,简称saapp
然而并非随随便便找个帐号就能登陆,咱们对帐号还要设置访问控制,哪些资源容许什么样的操做。
这就用到我前面写的RBAC(基于角色的访问控制)这里就再也不细讲,想要了解点击这里。
1 kubectl create serviceaccount mysa(SA_NAME) -n default(NAMESPACE_NAME)
1 kubectl create clusterrolebinding dashboard-admin(NAME) --clusterrole=admin(CLUSTERROLE_NAME) --serviceaccount=default:mysa(NAMESPACE_NAME:SA_NAME)
1 ##将secret中的token使用base64方式进行解码,而后使用变量引用 2 DASH_TOCKEN=$(kubectl get secret mysa-token-wjd28 -o jsonpath={.data.token}|base64 -d) 3 4 ##建立一个集群,将信息输出到/root/dashbord-admin.conf 5 kubectl config set-cluster dashboard-UI --server=192.168.1.100:6443 --kubeconfig=/root/dashbord-admin.conf 6 7 ##建立一个集群用户,并引用sa的token,并输出到/root/dashbord-admin.conf 8 kubectl config set-credentials dashboard-admin --token=$DASH_TOCKEN --kubeconfig=/root/dashbord-admin.conf 9 10 ##建立一个上下文,指定集群名、集群用户名,并输出到/root/dashbord-admin.conf 11 kubectl config set-context dashboard-admin@dashboard-UI --cluster=dashboard-UI --user=dashboard-admin --kubeconfig=/root/dashbord-admin.conf 12 13 ##设置集群中当前使用的用户,并输出到/root/dashbord-admin.conf 14 kubectl config use-context dashboard-admin@dashboard-UI --kubeconfig=/root/dashbord-admin.conf
生成的dashbord-admin.conf便可用于登陆dashboard
能够将此文件复制到其余主机,这样其余主机也能够登陆
不过,无论是刚用到token登陆或kubeconfig文件登陆,设置的权限是整个集群中最高的管理员的权限,切记小心泄露
生产环境中,最好将sa绑定到自定义权限的role或者cluster,能够下降role和cluster的权限,来保证集群安全
但愿对你们有所帮助,谢谢