[ 知识是人生的灯塔,只有不断学习,才能照亮前行的门路 ]
Kubernetes Dashboard 7.10.x
大家好,我是 Weiyigeek,今天我们来聊聊怎样在 Kubernetes 集群上安装和使用 Kubernetes Dashboard (原生可视化管理工具)。如果你正在使用或计划在 Kubernetes 上部署应用,那么这个工具绝对值得你深入了解。
Kubernetes Dashboard 是什么?
它是 Kubernetes (原生) 提供的一个基于网页的用户界面,它可以让用户更方便地管理和监控 Kubernetes 集群,通过这个工具,运维和开辟人员不需要记复杂的命令,直接通过可视化界面操作,轻松完成应用部署、资源管理以及集群状态监控等任务,低落了 Kubernetes 的操作门槛,现在版本为 7.10.x 系列,界面更加简便清爽,功能也更增强大。
功能特点
应用管理:支持通过界面创建、更新和删除 Kubernetes 的各种工作负载(如 Pod、Deployment、DaemonSet、StatefulSet 等)。
可视化监控:实时展示集群中资源的运行状态,包括 CPU、内存等使用情况。
错误诊断:快速查看问题资源的日志、变乱和错误,资助用户排查故障。
访问控制:支持设置权限,确保不同用户只能访问或操作本身负责的部分资源。
简化的多容器支持:对多容器的部署和管理提供了更直观的支持。
Ingress 集成:方便设置和管理网络规则,资助用户更简单地设置外部访问。
界面语言:支持英文、中文等多种语言界面,满意不同用户的需求。
实践情况
操作系统:Kylin Linux Advanced Server V10 (Lance)
内核版本: 4.19.90-52.33.v2207.ky10.x86_64
集群版本:Kubernetes v1.28.1 helm 版本: v3.12.3
温馨提示:现在(2025年2月16日 20:59:30)最新版本为 7.10.4 ,但支持的 kubernetes 集群版本为 v1.29+ 以上,为了最大水平兼容 K8S 集群版本,这里我选择安装 7.10.0 版本安装。
weiyigeek.top-Kubernetes Dashboard Github Release图
安装最新版本:
- # Add kubernetes-dashboard repository
- helm repo add kubernetes-dashboard https://kubernetes.github.io/dashboard/
- # Deploy a Helm Release named "kubernetes-dashboard" using the kubernetes-dashboard chart
- helm upgrade --install kubernetes-dashboard kubernetes-dashboard/kubernetes-dashboard --create-namespace --namespace kubernetes-dashboard
复制代码
安装指定版本:
- VERSION=7.10.0
- wget https://github.com/kubernetes/dashboard/releases/download/v${VERSION}/kubernetes-dashboard-${VERSION}.tgz
- tar -xvf kubernetes-dashboard-${VERSION}.tgz
复制代码
- tee kubernetesui-images.txt <<'EOF'
- docker.io/library/kong:3.6
- docker.io/kubernetesui/dashboard-api:1.10.1
- docker.io/kubernetesui/dashboard-auth:1.2.2
- docker.io/kubernetesui/dashboard-metrics-scraper:1.2.1
- docker.io/kubernetesui/dashboard-web:1.6.0
- EOF
- for image in $(cat kubernetesui-images.txt); do
- docker pull $image
- grep -c "kubernetesui"$image
- if [ $? -eq 0 ]; then
- docker tag $image harbor.weiyigeek.top/library/${image#*/}
- docker push harbor.weiyigeek.top/library/${image#*/}
- else
- docker tag $image harbor.weiyigeek.top/${image#*/}
- docker push harbor.weiyigeek.top/${image#*/}
- fi
- done
复制代码
- helm upgrade k8s-dashboard --namespace kube-system ./kubernetes-dashboard/ -f values.yaml --debug --create-namespace
复制代码
访问权限创建参考文档所在:https://github.com/kubernetes/dashboard/blob/master/docs/user/access-control/creating-sample-user.md
- # 1.创建ServiceAccount和ClusterRoleBinding,赋予admin权限
- cat <<'EOF' | kubectl apply -f -
- # Creating a Service Account
- apiVersion: v1
- kind: ServiceAccount
- metadata:
- name: admin-user
- namespace: kube-system
- EOF
- cat <<'EOF' | kubectl apply -f -
- # Creating a ClusterRoleBinding
- 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: kube-system
- EOF
- # 2.创建token,用于登录Kubernetes Dashboard (注意有效期 24H)
- kubectl -n kube-system create token admin-user
- eyJhbGciOiJSUzI1........*****......qaONP9w
- # 3.为ServiceAccount创建不失效的令牌
- cat <<'EOF' | kubectl apply -f -
- apiVersion: v1
- kind: Secret
- metadata:
- name: admin-user
- namespace: kube-system
- annotations:
- kubernetes.io/service-account.name: "admin-user"
- type: kubernetes.io/service-account-token
- EOF
- kubectl get secret admin-user -n kube-system -o jsonpath="{.data.token}" | base64 -d
复制代码 使用上述天生的token,登录Kubernetes Dashboard,登录界面如下所示:
weiyigeek.top-Kubernetes仪表板图
- # 创建ServiceAccount、ClusterRole和ClusterRoleBinding,赋予只读权限
- cat <<'EOF' | kubectl apply -f -
- # Creating a Service Account
- apiVersion: v1
- kind: ServiceAccount
- metadata:
- name: view-user
- namespace: kube-system
- ---
- apiVersion: rbac.authorization.k8s.io/v1
- kind: ClusterRole
- metadata:
- name: global-view
- rules:
- - apiGroups: ["*"] # 匹配所有 API 组
- resources: ["*"] # 匹配所有资源
- verbs: ["get", "list", "watch"] # 只允许读取操作
- ---
- apiVersion: rbac.authorization.k8s.io/v1
- kind: ClusterRoleBinding
- metadata:
- name: view-user-binding
- roleRef:
- apiGroup: rbac.authorization.k8s.io
- kind: ClusterRole
- name: global-view
- subjects:
- - kind: ServiceAccount
- name: view-user
- namespace: kube-system
- EOF
- # 创建临时访问 token,用于登录Kubernetes Dashboard (注意有效期 24H)
- kubectl -n kube-system create token view-user
- eyJhbGciOiJSUzI1Ni****M8NEGKuKtWUPz9yjiAWKohWaV3M5tgZQJAQFpLfr0G8F-1dz5-0ZRy0-jy_gbLTDwUgsldlw
复制代码
- # 查看服务信息
- kubectl get svc -n kube-system
- NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
- k8s-dashboard-kong-proxy ClusterIP 10.96.27.85 <none> 80/TCP,443/TCP 4d7h
- k8s-dashboard-kubernetes-dashboard-api ClusterIP 10.96.92.63 <none> 8000/TCP 4d8h
- k8s-dashboard-kubernetes-dashboard-auth ClusterIP 10.96.112.178 <none> 8000/TCP 4d8h
- k8s-dashboard-kubernetes-dashboard-metrics-scraper ClusterIP 10.96.51.74 <none> 8000/TCP 4d8h
- k8s-dashboard-kubernetes-dashboard-web ClusterIP 10.96.17.199 <none> 8000/TCP 4d8h
- # 创建ingress规则,暴露访问地址
- vim ingress.yaml
- apiVersion: networking.k8s.io/v1
- kind: Ingress
- metadata:
- annotations:
- ingressclass.kubernetes.io/is-default-class: "true"
- nginx.ingress.kubernetes.io/client-body-buffer-size: 50m
- nginx.ingress.kubernetes.io/proxy-body-size: 50m
- nginx.ingress.kubernetes.io/proxy-buffer-size: 50m
- nginx.ingress.kubernetes.io/proxy-buffering: "on"
- nginx.ingress.kubernetes.io/proxy-buffers-number: "4"
- nginx.ingress.kubernetes.io/proxy-connect-timeout: 60s
- nginx.ingress.kubernetes.io/proxy-read-timeout: 120s
- nginx.ingress.kubernetes.io/proxy-send-timeout: 120s
- nginx.ingress.kubernetes.io/rewrite-target: /$2
- labels:
- app: manager
- ref: manager
- url: manager.weiyigeek.top
- name: manager-sec
- namespace: kube-system
- spec:
- ingressClassName: nginx
- rules:
- - host: manager.weiyigeek.top
- http:
- paths:
- - backend:
- service:
- name: k8s-dashboard-kong-proxy
- port:
- number: 80
- path: /dashboard(/|$)(.*)
- pathType: ImplementationSpecific
- tls:
- - hosts:
- - manager.weiyigeek.top
- secretName: ssl-weiyigeek-top
复制代码 浏览器访问 https://manager.weiyigeek.top/dashboard ,输入 Token 凭据即可访问 Kubernetes Dashboard 7.10.x 管理界面,如下所示:
weiyigeek.top-K8s Dashboard 7.10.x 管理界面图 管理创建的 Deployment、StatefulSet、DaemonSet 以及 Pods 等资源,如下所示:
weiyigeek.top-资源管理图 至此,实践完毕,盼望此文对大家有所资助。
若文章写得不错,不要吝惜手中转发,点赞、在看,如有疑问的小同伴,可在评论区留言你想法哟 |