k8s dashboard 安装
是图形化的方式管理K8S集群。
Dashboard是K8S集群管理的一个GUI的WebUI实现,它是一个k8s附加组件,所以需要单独部署。
我们可以以图形化的方式创建k8s资源。
GitHub地址:
https://github.com/kubernetes/dashboard#kubernetes-dashboard
部署dashboard:
1.下载dashboard的资源清单
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.1/aio/deploy/recommended.yaml
2 :导入镜像
dashboard: https://url69.ctfile.com/d/253469-56659133-6028df?p=2206 (访问密码: 2206)
docker load -i baimei-dashboard_v2.5.1.tar.gz
docker load -i baimei-metrics-scraper_v1.0.7.tar.gz
docker push harbor.baimei.com/add-ons/metrics-scraper:v1.0.7
docker push harbor.baimei.com/add-ons/dashboard:v2.5.1
3.修改资源清单,让svc的类型为NodePort
vim deploy-dashboard.yaml
部署:
kubectl apply -f deploy-dashboard.yaml
验证:
kubectl get pods -o wide --show-labels -n kubernetes-dashboard
4.浏览器访问dashboard页面
https://10.0.0.231:4430/
如果是空白界面, 需要
第一次访问时,需要输入以下代码
thisisunsafe
见证神奇的时刻到了:
这里我们可以看到 需要 token 或者 配置文件。
怎么解决?
5.权限不足解决方案-自定义登录用户
有2中方法, 一种是 token,一种是 configmap 的方式:
方法一、 token方式
5.1 编写K8S的yaml资源清单文件
cat > baimei-dashboard-rbac.yaml <<'EOF'
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
k8s-app: kubernetes-dashboard
# 创建一个名为"baimei"的账户
name: baimei
namespace: kubernetes-dashboard
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard-baimei
namespace: kubernetes-dashboard
roleRef:
apiGroup: rbac.authorization.k8s.io
# 既然绑定的是集群角色,那么类型也应该为"ClusterRole",而不是"Role"哟~
kind: ClusterRole
# 关于集群角色可以使用"kubectl get clusterrole | grep admin"进行过滤哟~
name: cluster-admin
subjects:
- kind: ServiceAccount
# 此处要注意哈,绑定的要和我们上面的服务账户一致哟~
name: baimei
namespace: kubernetes-dashboard
EOF
5.2创建资源清单
kubectl apply -f baimei-dashboard-rbac.yaml
5.3 查看sa资源的Tokens名称
kubectl describe serviceaccounts -n kubernetes-dashboard baimei | grep Tokens
5.4 根据上一步的token名称的查看token值
kubectl -n kubernetes-dashboard describe secrets baimei-token-vt4cr | awk '/^token/{print $2}'
eyJhbGciOiJSUzI1NiIsImtpZCI6InZGS2Z0cTV1OGIwOG5IWWs3cjVNRERGNkpVNzhyMGdlN1dnT3dxS296VEEifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJiYWltZWktdG9rZW4tdnQ0Y3IiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiYmFpbWVpIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiYzQzNDY4NDItOWZkMi00NTFmLTk2YzgtMThmZmUzYTQ0ODEwIiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmVybmV0ZXMtZGFzaGJvYXJkOmJhaW1laSJ9.AgahZ4C8ZBS2f7T0lJ17xQjpOfh6CN1dRk15S9DWJHOh0piXRJgMfK5Z6254F4UhKhyBabCo8fSzFEbrhhWfzVEfy_9tbYfBeWQZlPGVJInW9SXWMW52GrWR5_-q06Pp2Bkpyjka8KKSzmBN-W-tnjq5CeAyCR2IlvCvQpMehxTwj-GvI4oN5w4vl7St6M7FlR5aGD_myfedXIWIXpjA5nRQ4WRhB8rIAy4Wk0JqQa5EGzu6u1m7sV-NpEsYWRL0c4e4wlCxgVOCAt-uayFYuU7i8YzDB0qVZHakt7UtfrsW_ohuAnAeNqtIm1HU3foISATrtYIonDQrG2-e79lrfA
5.5 登录dashboard的WebUI
使用上一步的Token值登录即可(注意,复制时不要有换行)
由于我们创建的ServiceAccount绑定的角色为"cluster-admin"这个角色,因此baimei用户的token是可以访问集群的所有资源的
方法二、使用kubeconfig登录
(1)编写生成kubeconf的配置文件的脚本
cat > baimei-generate-context-conf.sh <<'EOF'
#!/bin/bash
# auther: www.baimeidashu.com
# 获取secret的名称
SECRET_NAME=`kubectl get secrets -n kubernetes-dashboard | grep baimei | awk {'print $1'}`
# 指定API SERVER的地址
API_SERVER=master231:6443
# 指定kubeconfig配置文件的路径名称
KUBECONFIG_NAME=./baimei-k8s-dashboard-admin.conf
# 获取baimei用户的tocken
baimei_TOCKEN=`kubectl get secrets -n kubernetes-dashboard $SECRET_NAME -o jsonpath={.data.token} | base64 -d`
# 在kubeconfig配置文件中设置群集项
kubectl config set-cluster baimei-k8s-dashboard-cluster --server=$API_SERVER --kubeconfig=$KUBECONFIG_NAME
# 在kubeconfig中设置用户项
kubectl config set-credentials baimei-k8s-dashboard-user --token=$baimei_TOCKEN --kubeconfig=$KUBECONFIG_NAME
# 配置上下文,即绑定用户和集群的上下文关系,可以将多个集群和用户进行绑定哟~
kubectl config set-context baimei-admin --cluster=baimei-k8s-dashboard-cluster --user=baimei-k8s-dashboard-user --kubeconfig=$KUBECONFIG_NAME
# 配置当前使用的上下文
kubectl config use-context baimei-admin --kubeconfig=$KUBECONFIG_NAME
EOF
(2)运行上述脚本
sh baimei-generate-context-conf.sh
./baimei-k8s-dashboard-admin.conf
下载上一步生成的配置文件到桌面,如上图所示,选择并选择该文件进行登录
成功:
https://10.0.0.231:4430/#/namespace?namespace=default