系列文章
第一章:? k8s入门:裸机部署 k8s 集群 第二章:? k8s入门:部署应用 k8s 集群 第三章:? k8s入门:service 简单使用 第四章:? k8s入门:StatefulSet 简单使用 第五章:? k8s入门:存储(storage) 第六章:? K8S 配置 storageclass 使用 nfs 动态应用本地磁盘空间 第七章:? k8s入门:配置 ConfigMap & Secret 第八章:? k8s入门:k8s入门:Helm 构建 MySQL 第九章:? k8s入门:kubernetes-dashboard 安装 第十章:? k8s入门:kube-prometheus-stack 全家桶搭建(Grafana Prometheus)
文章目录
-
-
-
- 系列文章
- 一、简介
- 二、安装 kubernetes-dashboard
-
- 1.下载配置文件
- 2、 修改默认配置
- 3、安装 kubernetes-dashboard
- 4、访问 web
- 5、获取 token
- 6、测试登录
- 创建新用户
-
-
参考:https://blog.csdn.net/u013068377/article/details/106673434/ k8s 官网:https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/
一、简介
Dashboard 是一个基于 Web 的 Kubernetes 用户界面。您可以使用 Dashboard 将容器化应用程序部署到 Kubernetes 集群、集群资源排除和管理集群应用程序的故障。您可以使用 Dashboard 了解集群上运行的应用程序概述,创建或修改单个应用程序 Kubernetes 资源(例如 Deployment、Jobs、DaemonSet 等)。例如,您可以使用部署导向扩展部署,启动滚动更新,重新启动 pod 或者部署新的应用程序。
仪表板还提供相关集群 Kubernetes 资源状态和任何可能出现的错误信息。
二、安装 kubernetes-dashboard
使用官网提供的 deploy/recommended.yaml 清单安装 kubernetes-dashboard, 或者使用 Helm 安装,可参考 Artifact Hub 地址:https://artifacthub.io/packages/helm/k8s-dashboard/kubernetes-dashboard
1.下载配置文件
可使用下列命令下载 recommended.yaml 修改默认配置
wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.0/aio/deploy/recommended.yaml
安装默认配置 kubernetes-dashboard
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.0/aio/deploy/recommended.yaml
2、 修改默认配置
修改其中 kubernetes-dashboard 的 service ,指定 nodePort 端口为 18443
kind: Service apiVersion: v1 metadata: labels: k8s-app: kubernetes-dashboard name: kubernetes-dashboard namespace: kubernetes-dashboard spec: type: NodePort ports: - port: 443 targetPort: 8443 nodePort: 18443 selector: k8s-app: kubernetes-dashboard
3、安装 kubernetes-dashboard
[root@master dashboard]# kubectl apply -f recommended.yaml namespace/kubernetes-dashboard created serviceaccount/kubernetes-dashboard created service/kubernetes-dashboard created secret/kubrnetes-dashboard-certs created
secret/kubernetes-dashboard-csrf created
secret/kubernetes-dashboard-key-holder created
configmap/kubernetes-dashboard-settings created
role.rbac.authorization.k8s.io/kubernetes-dashboard created
clusterrole.rbac.authorization.k8s.io/kubernetes-dashboard created
rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
clusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
deployment.apps/kubernetes-dashboard created
service/dashboard-metrics-scraper created
deployment.apps/dashboard-metrics-scraper created
4、访问 web
访问指定的 18443 端口,master 节点 IP 为 192.168.25.100,则访问地址:https://192.168.25.100:18443/
5、获取 token
K8S有两种用户:User 和 Service Account,User 给人用,Service Account 给进程用,让进程有相关权限,Dashboard 是一个进程,我们就可以创建一个Service Account 给它
kubectl get serviceaccount -n kubernetes-dashboard
kubectl describe serviceaccount/kubernetes-dashboard -n kubernetes-dashboard
kubectl get secret -n kubernetes-dashboard
kubectl describe secret/kubernetes-dashboard-token-28jqz -n kubernetes-dashboard
如下,上面命令可以简化为一条命令(kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep kubernetes-dashboard | awk '{print $1}')
)
6、测试登录
使用查询到的 token 登录 kubernetes dashboard,登陆成功 出现上述问题的原因是因为,kubernetes-dashboard 这个账户的角色权限不够
7、创建新用户
创建 dashboard-adminuser.yaml,可参考:https://github.com/kubernetes/dashboard/blob/master/docs/user/access-control/creating-sample-user.md
cat > dashboard-adminuser.yaml << EOF
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kubernetes-dashboard
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: admin-user
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: admin-user
namespace: kubernetes-dashboard
EOF
创建登录用户
[root@master dashboard]# kubectl apply -f dashboard-adminuser.yaml
serviceaccount/admin-user created
说明:上面创建了一个叫 admin-user 的服务账号,并放在kubernetes-dashboard 命名空间下,并将 cluster-admin 角色绑定到admin-user账户,这样admin-user账户就有了管理员的权限。默认情况下,kubeadm创建集群时已经创建了cluster-admin角色,我们直接绑定即可。
查看admin-user账户的token
[root@master dashboard]# kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}')
Name: admin-user-token-6wkxr
Namespace: kubernetes-dashboard
Labels: <none>
Annotations: kubernetes.io/service-account.name: admin-user
kubernetes.io/service-account.uid: a90464fd-83bb-4435-90ee-c59493b81889
Type: kubernetes.io/service-account-token
Data
====
ca.crt: 1099 bytes
namespace: 20 bytes
token: eyJhbGciOiJSUzI1NiIsImtpZCI6InhGU29vbVM3TG90R1NzTzZfT2VlTUVWZTIySXlGbHZxUW5laVZ5T29lRTAifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi11c2VyLXRva2VuLTZ3a3hyIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImFkbWluLXVzZXIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiJhOTA0NjRmZC04M2JiLTQ0MzUtOTBlZS1jNTk0OTNiODE4ODkiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZXJuZXRlcy1kYXNoYm9hcmQ6YWRtaW4tdXNlciJ9.gaqvh1E1yH0SmKT-cDhzGOl_-g5aZmiH7SuRLXuAnIdBRAhC1dYFFqmkUenspepRb4zkMX0vojYjq0twGKAP3IAI4h0H24QVXhOBMiMWH1IyZdprZ32K3j2egdCuRkb3BEwm1M0zR8XZlLZRI-__Hl5QCntNwO6Lh21nmRx-f9rG1T-omGSWiZnRn4ZW0kS0N0sunAYFfsRWNKh6Pnd3WzfNqa3rBNaULOeDStlL1DfcO_fhqWbeuWWwnA66Q7fX7Xa3oP5qymt-C_lvM_hod8N3TVzVKY2ToiqMPmGAflQoHf4P-iYdH2sG38_hYM0LJvpmy8zdVvZSo9LNBHsEeQ
注销重新使用 admin-user 服务账号的 token 登录即可
8、设置 token 过期时间
用 token 登陆 kubernetes-dashboard,默认的 token 认证时间是 900s/15 分钟,失效需要重新登录灰常麻烦,下面添加 - --token-ttl=604800
(单位 s)参数修改 token 过期时间为 7 天。 kubernetes-dashboard 平台可使用如下方法,你也可以选择修改 recommended.yaml 文件,重新 apply 即可
步骤:
- 选择
kubernetes-dashboard
命名空间 - 编辑
deployment/kubernetes-dashboard
配置文件 - 在对应位置添加
- --token-ttl=604800
(单位 s) - 点击更新即可生效