Kubernetes 集群中安装和配置 Kubernetes Dashboard

ops/2025/1/18 15:01:47/

安装 Dashboard教程

上两篇文章已经成功部署了Kubernetes的集群,这篇来介绍安装Dashboard。Dashboard 是基于网页的 Kubernetes 用户界面。 你可以使用 Dashboard 将容器应用部署到 Kubernetes 集群中,也可以对容器应用排错,还能管理集群资源。 你可以使用 Dashboard 获取运行在集群中的应用的概览信息,也可以创建或者修改 Kubernetes 资源 (如 Deployment、Job、DaemonSet 等等)。 例如,你可以对 Deployment 实现弹性伸缩、发起滚动升级、重启 Pod 或者使用向导创建新的应用。

Dashboard 同时展示了 Kubernetes 集群中的资源状态信息和所有报错信息。

准备工作

选择 Dashboard版本

前往 Dashboard官方下载页面,选择适配的版本进行下载。
因为系统中Kubernetes的版本是1.30.8,所以选择kubernetes-dashboard-7.7.0
在这里插入图片描述
在这里插入图片描述

从版本 7.0.0 开始,官方已经停止了对基于 Manifest 文件的安装支持,转而仅支持 Helm 基础的安装方式。

Helm和Kubernetes版本

Helm 版本与支持的 Kubernetes 版本对应关系:https://helm.sh/docs/topics/version_skew/。根据官方推荐安装Helm3.15.x的版本
在这里插入图片描述

安装Helm

用二进制版本安装

每个Helm 版本都提供了各种操作系统的二进制版本,这些版本可以手动下载和安装。

  1. 下载 需要的版本
  2. 解压(tar -zxvf helm-v3.0.0-linux-amd64.tar.gz)
  3. 在解压目录中找到helm程序,移动到需要的目录中(mv linux-amd64/helm /usr/local/bin/helm)

然后就可以执行客户端程序并 添加稳定仓库: helm help.

kubernetesdashboard_32">安装kubernetes-dashboard命令介绍

根据官方提示安装dashboard

# 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

如果想指定版本用下面这条命令

helm install kubernetes-dashboard kubernetes-dashboard/kubernetes-dashboard \--namespace kubernetes-dashboard \--create-namespace \--version 7.0.0 \--timeout 600s

如果在尝试从 GitHub 下载 Chart 文件时遇到了网络问题或超时。可以手动下载 Helm Chart 文件并在本地安装。

配置

请参阅values.yaml 了解有效值及其默认值。

--set key=value[,key=value]使用 的参数指定每个参数helm install/upgrade。例如,

helm install kubernetes-dashboard/kubernetes-dashboard --name kubernetes-dashboard \--set=api.containers.resources.limits.cpu=200m

或者,可以在安装图表时提供指定上述参数值的 YAML 文件。例如,

helm install kubernetes-dashboard/kubernetes-dashboard --name kubernetes-dashboard -f values.yaml

提示:您可以使用默认使用的values.yaml作为参考

kubernetesdashboard_76">安装kubernetes-dashboard

  1. 手动下载 Helm Chart:

访问 Kubernetes Dashboard Releases 页面,找到你需要的版本(例如 v7.0.0),下载 .tgz 文件。

  1. 保存到本地目录:

将下载的 .tgz 文件保存到本地目录,例如 /root。

  1. 使用本地文件安装:
helm install kubernetes-dashboard /root/kubernetes-dashboard-7.7.0.tgz  --namespace kubernetes-dashboard  --create-namespace

在这里插入图片描述

在这里插入图片描述

命令行代理

1.使用 Port Forwarding
如果您只需要临时访问 Dashboard,可以使用 kubectl port-forward 命令。

安装完成后,kubectl您可以通过运行以下命令,使用命令行工具启用对仪表板的访问:

kubectl -n kubernetes-dashboard port-forward svc/kubernetes-dashboard-kong-proxy 8443:443

可以通过按下Ctrl+C来终止端口转发

Kubectl 将使仪表板在https://localhost:8443上可用。

可从执行命令的机器访问UI 。请参阅kubectl port-forward --help以了解更多选项。

在这里插入图片描述

  1. 方法二:修改服务类型为 NodePort
    如果您希望可以通过节点 IP 和端口访问 Dashboard,请将服务类型更改为 NodePort。

改服务类型为 NodePort

kubectl patch svc kubernetes-dashboard-kong-proxy -n kubernetes-dashboard --type='json' -p '[{"op":"replace","path":"/spec/type","value":"NodePort"}]'
  1. 添加 nodePort 字段
    您可以指定一个可用的端口号(例如 30000),或者让 Kubernetes 自动分配一个。这里我们指定 30000 作为示例。
kubectl patch svc kubernetes-dashboard-kong-proxy -n kubernetes-dashboard --type='json' -p '[{"op":"add","path":"/spec/ports/0/nodePort","value":30000}]'

也可以是使用编辑器进行修改,命令如下

kubectl edit svc kubernetes-dashboard -n kubernetes-dashboard

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
如果显示您的连接不是私密连接,在当前页面用键盘输入thisisunsafe,不是在地址栏输入,就直接输入,页面即会自动刷新进入网页。不行就多输入几次,但是要确保输入是正确的。具体请查看这篇博客
在这里插入图片描述

在这里插入图片描述
方法三:配置 Ingress
如果您有 Ingress 控制器(如 NGINX Ingress Controller),通过配置 Ingress 来访问 Kubernetes Dashboard 是一种推荐的方式,特别是对于生产环境。以下是详细的步骤,帮助您配置 Ingress 以访问 Kubernetes Dashboard。
前提条件
Ingress 控制器已安装:确保您的 Kubernetes 集群中已经安装了一个 Ingress 控制器(如 NGINX Ingress Controller)。如果没有安装,可以按照官网步骤进行安装。
因为网络原因,我还是以安装包的形式进行安装
根据官方说明下载合适的版本安装包

在这里插入图片描述

  1. 配置 Ingress 资源
    接下来,配置 Ingress 资源以将流量路由到 kubernetes-dashboard-web 服务。
    创建 Ingress 资源文件
    创建一个新的 YAML 文件 dashboard-ingress.yaml,内容如下:
    apiVersion: networking.k8s.io/v1kind: Ingressmetadata:name: kubernetes-dashboardnamespace: kubernetes-dashboardannotations:nginx.ingress.kubernetes.io/ssl-redirect: "false"nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"spec:rules:- host: dashboard.example.com  # 替换为您的域名http:paths:- path: /pathType: Prefixbackend:service:name: kubernetes-dashboard-webport:number: 8000

应用 Ingress 配置

 kubectl apply -f dashboard-ingress.yaml

kubernetesdashboard%0A____3__DNS__IP_%0A_dashboardexamplecom__Ingress__IP_%0A%0A_DNS_%0A_DNS__A__dashboardexamplecom__Ingress__IP_%0A%0A___dashboardexamplecom__A__1921681100%0A____DNS_%0ADNS_%0A_IP_%0A_Ingress__IP__Dashboard%0A%0Akubectl_get_svc_n_ingressnginx_ingressnginxcontroller_o_jsonpathstatusloadBalanceringress0ip%0A_http1921681100__https1921681100%0Atoken%0Acat__dashboarduseryaml__EOF%0AapiVersion_v1%0Akind_ServiceAccount%0Ametadata%0A__name_adminuser%0A__namespace_kubesystem_185">验证 Ingress 配置
kubectl get ingress -n kubernetes-dashboard
3. 配置 DNS 或 IP 地址
确保您的域名 dashboard.example.com 指向 Ingress 控制器的外部 IP 地址。您可以使用以下方法之一:
方法一:使用域名
配置 DNS 记录
在您的 DNS 提供商处添加一个 A 记录,将 dashboard.example.com 指向 Ingress 控制器的外部 IP 地址。
示例:
dashboard.example.com. A 192.168.1.100
等待 DNS 传播
DNS 记录可能需要几分钟到几小时才能传播。
方法二:使用 IP 地址
如果您没有域名,可以直接使用 Ingress 控制器的外部 IP 地址访问 Dashboard。
.
kubectl get svc -n ingress-nginx ingress-nginx-controller -o jsonpath=‘{.status.loadBalancer.ingress[0].ip}’
然后访问 http://192.168.1.100 或 https://192.168.1.100。
创建临时token
cat > dashboard-user.yaml << EOF
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kube-system

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

kubectl apply -f dashboard-user.yaml

创建token

kubectl -n kube-system create token admin-user

eyJhbGciOiJSUzI1NiIsImtpZCI6Im5vZExpNi1tTERLb09ONVM2cEE0SWNCUnA4eTZieE81RnVGb1IwSk5QVFEifQ.eyJhdWQiOlsiaHR0cHM6Ly9rdWJlcm5ldGVzLmRlZmF1bHQuc3ZjLmNsdXN0ZXIubG9jYWwiXSwiZXhwIjoxNzA4MjQ4NjM4LCJpYXQiOjE3MDgyNDUwMzgsImlzcyI6Imh0dHBzOi8va3ViZXJuZXRlcy5kZWZhdWx0LnN2Yy5jbHVzdGVyLmxvY2FsIiwia3ViZXJuZXRlcy5pbyI6eyJuYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsInNlcnZpY2VhY2NvdW50Ijp7Im5hbWUiOiJhZG1pbi11c2VyIiwidWlkIjoiMTQ1YTdmZTktMTQ0YS00NDZmLWI1M2QtNDk4OGM3YjIyZjgyIn19LCJuYmYiOjE3MDgyNDUwMzgsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlLXN5c3RlbTphZG1pbi11c2VyIn0.H2Oxxrb5BVLH1iDOA-Uo1I7aiAUZX1wK-xBiV9NJXQ32EDyQvss95yQbCNHtPMhQZ8jFE3NRhyjkgZMZmX7kR9J-89QXLqKhE8Qnihd1mq5HOEVQ8tjZ6ix8ymxs5QkfSvd_OUzILKBtfYAMb4Fer67Dyf14oBHWVKU9LQkCdtFaLxerK–N7gLWeGXzavqzOlEPZR5UZWUPwP5dJmAQtvSToPVMaKiA49LjaGJid0F5Pxnutr80oZRsLfKr0MpoEG6jrow1QeJ2PgVksDTcqMTpye-M6jmIbuxabsRSskTT_zEDT0J86BiLYIHnh79D-P7IUUq6GOp8DgG-wXhICQ

创建长期token
cat > dashboard-user-token.yaml << EOF
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 apply -f dashboard-user-token.yaml

查看密码

kubectl get secret admin-user -n kube-system -o jsonpath={“.data.token”} | base64 -d
成功登录
在这里插入图片描述

7.0以前的版本安装

在这里插入图片描述

2、下载配置文件
进入到master节点,下载dashboard对应版本的 recommended.yaml 文件

bash
wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.1/aio/deploy/recommended.yaml

3、添加 Dashboard 的Service类型
指定 Service 的类型为 NodePort
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

[root@k8s-master ~]# vim setup_dashboard_token.sh
[root@k8s-master ~]#    chmod +x setup_dashboard_token.sh
[root@k8s-master ~]#       chmod +x setup_dashboard_token.sh
[root@k8s-master ~]#       ./setup_dashboard_token.sh
serviceaccount/admin-user created
clusterrolebinding.rbac.authorization.k8s.io/admin-user created
secret/admin-user-token created
serviceaccount/admin-user patched
Token: ZXlKaGJHY2lPaUpTVXpJMU5pSXNJbXRwWkNJNklsTnZWVmhoVFd4ZmNGWXdXSGRCYTBsM056TlRX
VGRYYTA1dGJUTjZiSE5RUVROakxVc3hValozVmtFaWZRLmV5SmhkV1FpT2xzaWFIUjBjSE02THk5
cmRXSmxjbTVsZEdWekxtUmxabUYxYkhRdWMzWmpMbU5zZFhOMFpYSXViRzlqWVd3aVhTd2laWGh3
SWpveE56TTJOREUyTlRFeExDSnBZWFFpT2pFM016WTBNVEk1TVRFc0ltbHpjeUk2SW1oMGRIQnpP
aTh2YTNWaVpYSnVaWFJsY3k1a1pXWmhkV3gwTG5OMll5NWpiSFZ6ZEdWeUxteHZZMkZzSWl3aWFu
UnBJam9pTkRabVlqTTFNVEl0WTJSak5DMDBOR0k0TFdFNFpESXRZVGt6WVdOa01XSXlZemMzSWl3
aWEzVmlaWEp1WlhSbGN5NXBieUk2ZXlKdVlXMWxjM0JoWTJVaU9pSnJkV0psY201bGRHVnpMV1Jo
YzJoaWIyRnlaQ0lzSW5ObGNuWnBZMlZoWTJOdmRXNTBJanA3SW01aGJXVWlPaUpoWkcxcGJpMTFj
MlZ5SWl3aWRXbGtJam9pWmpjNU1HSXhaamt0WkRKalpDMDBOR1l5TFdFNFlqUXRaVGRtWldFd1pE
QTFZMlZqSW4xOUxDSnVZbVlpT2pFM016WTBNVEk1TVRFc0luTjFZaUk2SW5ONWMzUmxiVHB6WlhK
MmFXTmxZV05qYjNWdWREcHJkV0psY201bGRHVnpMV1JoYzJoaWIyRnlaRHBoWkcxcGJpMTFjMlZ5
SW4wLmRjWlQzNFJBZ0F2emJnajBMLTQzSHkwTkpIZVZSSXBiWEJjLS1vNDc1VUs3bU1xV0Y3Z1lI
U0g0Y1hiaWZweXRFNF9vd2xaYUxCb1FjOGQ1THktYVB3b0pDZzVKYnhmcGJDVHcwVFRJTl9DcUNG
ei1VeS1XV2FhUFV0N0lBQUZkb3IwX1I4cl9WZGhUeVd3LXNUSmhMWC1xX18zemxCeFYxNU40UzhK
Q0RhcWxwTFJkY29pUkRCQ2NwNkVnclo0NWIzemZiZXRoU2pyOFBvTkVjZ1RxQUlvemN5cW5iTG1F
QjJtZ3kyXzk2VlpBX2h3UVhLc29rU0lwZGNrNC1nNk1KVklGLUdYbG1qTF9CNGF0RTcwUjFNTzJE
TlBaNktlNms3eUxrRlVIQkQ5VWJsdDdpR21RTHNxLXI4dGxNeGFWOF81TnUxekNNNVlxN2lEeGc0
cjF5QQ==
kubectl create token admin-user -n kubernetes-dashboard

https://kubernetes.io/zh-cn/docs/concepts/configuration/secret/
https://kubernetes.io/zh-cn/docs/concepts/configuration/secret/
在这里插入图片描述
在这里插入图片描述

指定 NodePort Service 在每个节点上使用的端口号 (30000-32767 )

bash
vim recommended.yaml

kind: Service
apiVersion: v1
metadata:
labels:
k8s-app: dashboard-metrics-scraper
name: dashboard-metrics-scraper
namespace: kubernetes-dashboard
spec:
type: NodePort #添加
ports:
- port: 8000
targetPort: 8000
nodePort: 32111 #添加
selector:
k8s-app: dashboard-metrics-scraper

4、应用部署
bash
kubectl apply -f recommended.yaml

5、查看 kubernetes-dashboard 命名空间下资源状态
bash
kubectl get pods,svc -n kubernetes-dashboard

6、创建访问账户
1.24 版本前的操作

bash
kubectl create serviceaccount dashboard-admin -n kubernetes-dashboard

7、授权
bash
kubectl create clusterrolebinding dashboard-admin-rb --clusterrole=cluster-admin --serviceaccount=kubernetes-dashboard:dashboard-admin
8、获取账号token
获取 token 登录Dashboard

bash
kubectl get secrets -n kubernetes-dashboard | grep dashboard-admin

kubectl describe secrets dashboard-admin-token-qfz2z -n kubernetes-dashboard

9、1.24 版本以后的需要创建一个Pod
yaml
cat << EOF > pod1.yaml
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: pod1
name: pod1
namespace: kubernetes-dashboard
spec:
terminationGracePeriodSeconds: 0
serviceAccount: dashboard-admin
containers:

  • image: nginx
    imagePullPolicy: IfNotPresent
    name: pod1
    resources: {}
    dnsPolicy: ClusterFirst
    restartPolicy: Always
    status: {}
    EOF
    bash
    kubectl apply -f pod1.yaml

kubectl exec -it pod1 -n kubernetes-dashboard – cat /run/secrets/kubernetes.io/serviceaccount/token

四、浏览器访问Dashboard
遇到显示 Your connection is not private 在页面空白处英文输入法输入

thisisunsafe

1、输入 token 登录

2、页面

一、Dashboard 概述
二、GitHub 地址
三、Dashboard 部署安装
1、选择兼容版本
2、下载配置文件
3、添加 Dashboard 的Service类型
4、应用部署
5、查看 kubernetes-dashboard 命名空间下资源状态
6、创建访问账户
7、授权
8、获取账号token
9、1.24 版本以后的需要创建一个Pod
四、浏览器访问Dashboard
1、输入 token 登录
2、页面

EOF

https://devpress.csdn.net/k8s/66c982b68f4f502e1cfd4093.html
https://kubernetes.io/zh-cn/docs/setup/production-environment/container-runtimes/#containerd


http://www.ppmy.cn/ops/151116.html

相关文章

【数据结构】人生如栈

我在思考一个很有意思的事情就是假如我们的人生可以修改的话他应该是一个“栈” 的数据结构&#xff0c;而不是链表或者其他&#xff0c;因为我们的人生如果改了一个地方&#xff0c;肯定不能从中间的某一个时间开始改&#xff0c;那后面的结果都会变&#xff0c;所以它应该是类…

PyTorch框架——基于深度学习YOLOv11神经网络路面坑洞检测系统

基于深度学习YOLOv11神经网络路面坑洞检测系统&#xff0c;其能识别路面坑洞&#xff0c;见如下 第一步&#xff1a;YOLOv11介绍 YOLOv11是由Ultralytics公司开发的新一代目标检测算法&#xff0c;它在之前YOLO版本的基础上进行了显著的架构和训练方法改进。以下是YOLOv11的一…

Ability Kit-程序框架服务(类似Android Activity)

文章目录 Ability Kit&#xff08;程序框架服务&#xff09;简介Stage模型开发概述Stage模型应用组件应用/组件级配置UIAbility组件概述概述声明配置 生命周期概述生命周期状态说明Create状态WindowStageCreate**和**WindowStageDestroy状态WindowStageWillDestroy状态Foregrou…

.Net MVC中视图的View()的具体用法

在控制器中我们执行完逻辑之后&#xff0c;然后就是要准备开始跳转到视图中&#xff0c;那么该如何指定跳转的视图呢&#xff1f; public IActionResult Index() {return View(); } 如果View中参数&#xff0c;他默认寻找的视图路径是/Views/控制器名/方法名 如果找不到&#x…

有效提取激光雷达点云平面点

有效地面点云的提取和平面点的识别是通过一系列步骤实现的。以下是主要步骤&#xff1a; 高度过滤&#xff1a; 首先&#xff0c;根据激光雷达传感器的安装高度&#xff0c;对当前帧扫描得到的点云进行高度过滤&#xff0c;以初步分割出地面点云。假设第 k k k 帧的点云为 { …

三格电子CAN 转以太网

一、功能描述 SG-CANET-210 是一款用来把 CAN 总线数据转为网口数据的设备。网口支 持 TCP Sever 、TCP Client 、UDP Sever 、UDP Client 、UDP Broadcast 模式&#xff0c;可以 通过软件配置和网页配置。设备提供两路 CAN 接口&#xff0c;两路 CAN 可分别配置为 不同的工作…

网安-HTML

HTML 一、HTML概述及发展史 HTML全称&#xff08;hypertext markup language&#xff09;译为超文本标记语言&#xff0c;其译文代表了HTML的含义&#xff0c;它和其他编程语言不同的是&#xff0c;HTML不是一门真正意义上编程语言&#xff0c;而是一种标记语言&#xff0c;通…

Visual Studio Community 2022(VS2022)安装方法

废话不多说直接上图&#xff1a; 直接上步骤&#xff1a; 1&#xff0c;首先可以下载安装一个Visual Studio安装器&#xff0c;叫做Visual Studio installer。这个安装文件很小&#xff0c;很快就安装完成了。 2&#xff0c;打开Visual Studio installer 小软件 3&#xff0c…